
安全先行office-docs-powershell管理员必须知道的8个PowerShell认证与权限最佳实践清单【免费下载链接】office-docs-powershellPowerShell Reference for Office Products - Short URL: aka.ms/office-powershell项目地址: https://gitcode.com/gh_mirrors/of/office-docs-powershelloffice-docs-powershell是微软官方维护的Office 产品 PowerShell 参考文档仓库涵盖 Exchange Online、Security Compliance、Teams、Skype 等模块的 Cmdlet 参考与概念文档。对于使用 Exchange Online PowerShell 管理邮箱、安全与合规功能的 IT 管理员来说PowerShell 认证方式与权限管理RBAC是安全防线的核心。 本文精选8 个 PowerShell 认证与权限最佳实践帮助你从“能连上”升级到“连得安全、权限最小化”新手也能快速上手。#最佳实践解决的安全问题1使用现代认证MFA连接杜绝 Basic 认证泄露凭据2无值守脚本改用证书式应用认证避免明文存储用户名密码3自动化场景使用 Azure 托管标识代码中零凭据4正确授予 Exchange.ManageAsApp 权限权限过宽与授权失败5最小权限原则分配角色高权限账号被滥用风险6证书定期轮换与安全存储凭据长期暴露7定期审计 Cmdlet 所需角色权限漂移与冗余授权8关闭非必要用户的 PowerShell 访问缩小攻击面实践 1用现代认证MFA连接告别 Basic 认证传统远程 PowerShell 依赖 Basic 认证用户名密码在网络中传输早已是安全隐患。Exchange Online PowerShell V3 模块的Connect-ExchangeOnline命令强制使用现代认证原生支持多因素认证MFA并且远程 PowerShell 连接方式已被官方弃用。 管理员日常连接只需一条命令身份验证流程由浏览器安全地完成密码永远不会留在本地脚本里。完整连接方式含 GCC High、DoD、德国云等环境见文档connect-to-exchange-online-powershell.md实践 2无值守脚本改用“仅应用认证”拒绝明文密码审计与报表类脚本经常需要自动登录。过去的做法是把账号密码存到本地文件或密钥库里——这是典型的安全反模式。证书式应用认证App-only / CBA用 Microsoft Entra 应用 自签名证书代替用户凭据是官方推荐的自动化认证方式。配置流程分五步注册应用 → 分配 API 权限 → 生成自签名证书 → 绑定证书 → 分配角色。在 Entra 管理中心注册应用时建议勾选“仅限此组织目录的帐户”先收窄信任范围生成证书后在应用的“证书与机密”页点击Upload certificate完成绑定⚠️ 注意官方不支持 CNG 密钥类型的证书必须使用 CSP 密钥提供商生成的证书也不要为了省事把证书密码存在本地那会彻底破坏安全意义。详细步骤含多租户委托场景见app-only-auth-powershell-v2.md实践 3自动化终极方案——Azure 托管标识连接如果脚本跑在 Azure Automation 或 Azure 虚拟机上最干净的方案是Azure 托管标识Managed Identity系统为云资源自动提供身份代码中不需要存任何凭据也没有证书要维护。连接时只需一条命令Connect-ExchangeOnline -ManagedIdentity -Organization contoso.onmicrosoft.com在自动化账户的 Identity 页面可以查看托管标识的 Object ID并为其按需授权 RBAC 角色系统分配与用户分配两种标识的完整配置步骤见connect-exo-powershell-managed-identity.md实践 4正确授予 Exchange.ManageAsApp并撤销默认权限应用要访问 Exchange 资源必须添加Application 类型的Exchange.ManageAsAppAPI 权限并由管理员点击“授予管理员同意”。同时建议把默认的 Microsoft GraphUser.Read授权撤销只保留真正需要的权限授权完成后状态应显示为 “Granted for Organization”。对于 GCC High 和 DoD 环境官方建议通过修改应用清单Manifest的方式分配权限。实践 5最小权限原则——别把应用都设成 Global Admin微软官方反复强调使用权限最少的角色Global Administrator 属于高权限角色应只保留给紧急场景。Exchange Online PowerShell 支持的常见角色包括Exchange Administrator/Exchange Recipient Administrator管理收件人、安全与防垃圾邮件功能Compliance AdministratorSecurity Compliance PowerShell 的合规管理Global Reader/Security Reader只读审计与报告场景首选 ✔在角色的 Assignments 页面把应用添加为成员后会话的 RBAC 权限即按该角色生效此外还可以用New-ServicePrincipal把应用注册为 Exchange 服务主体再加入自定义角色组实现更精细的自定义权限需 REST API 模式。实践 6证书即凭据——定期轮换并妥善保管持有证书私钥.pfx的一方就能以应用身份执行操作因此证书安全等于账号安全。推荐做法用New-SelfSignedCertificate生成一年有效期的自签名证书到期前主动轮换 .pfx 存入密钥库如 Azure Key Vault运行时以证书对象方式传入Connect-ExchangeOnline轮换完成后在“证书与机密”页删除旧证书确认新证书正常显示实践 7权限审计——任何 Cmdlet 先查“需要什么角色”很多管理员不知道自己或某角色到底缺什么权限。官方文档提供了通用方法用Get-ManagementRole -Cmdlet 命令查出该命令所需的管理角色再结合Get-ManagementRoleAssignment看角色分配给了谁。整个过程不到 5 分钟非常适合做权限漂移审计$Perms Get-ManagementRole -Cmdlet Set-Mailbox结果中“Role”为以 My 开头的角色表示普通用户对自己对象的操作权限。完整解读方法见find-exchange-cmdlet-permissions.md实践 8收口访问——关闭非必要用户的 PowerShell 权限默认情况下组织内所有账户都能连接 Exchange Online PowerShell虽受 RBAC 限制。建议定期为普通用户批量关闭该能力只保留管理员的访问权Set-User -Identity davidcontoso.onmicrosoft.com -EXOModuleEnabled $false 官方特别提醒批量关闭时务必排除管理员账号用Where-Object过滤 UPN否则会把自己锁在门外。真被锁了可在 M365 管理中心新建管理员账号再找回访问权。批量按属性/名单关闭的方法见disable-access-to-exchange-online-powershell.md另外用完即断交互式会话结束后运行Disconnect-ExchangeOnline避免残留会话被他人利用。总结8 条实践速查清单 ️✅ 用现代认证 MFA 连接弃用 Basic 认证✅ 无值守脚本用证书式仅应用认证不存明文密码✅ Azure 上跑脚本优先用托管标识实现零凭据✅ 只授予 Exchange.ManageAsApp 并撤销多余默认授权✅ 按最小权限分配角色慎用 Global Admin✅ 证书一年一换私钥入密钥库✅ 定期用Get-ManagementRole审计 Cmdlet 权限✅ 关闭普通用户的 PowerShell 访问用完即断开配合本仓库的 Exchange 概念文档exchange/docs-conceptual/与 Cmdlet 参考exchange/exchange-ps/你可以把这套“认证 权限”体系落到每一个自动化脚本里让 Office 产品的 PowerShell 管理既高效又安全。【免费下载链接】office-docs-powershellPowerShell Reference for Office Products - Short URL: aka.ms/office-powershell项目地址: https://gitcode.com/gh_mirrors/of/office-docs-powershell创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考