Azure Automation Runbook认证:MFA用户替代ClientID/Secret的连接方案咨询
解决方案
一、通过托管标识连接PnP Online(SharePoint)
无需ClientID/Secret,直接利用Azure自动化账户的托管标识完成无交互认证:
- 给目标Azure自动化账户启用系统分配或用户分配的托管标识:
- 系统分配标识为自动化账户专属,无需额外管理;用户分配标识可复用在多个资源上。
- 为托管标识授予SharePoint站点的权限:
- 站点级权限:直接在SharePoint站点的权限设置中添加托管标识为管理员/编辑等角色。
- 租户级权限:在Entra ID中为托管标识添加
Sites.FullControl.All等应用权限,由全局管理员同意授权。
- Runbook中执行连接的PowerShell代码:
# 系统分配托管标识连接 Connect-PnPOnline -Url "https://yourtenant.sharepoint.com/sites/yoursite" -ManagedIdentity # 用户分配托管标识连接(指定标识的ClientID) Connect-PnPOnline -Url "https://yourtenant.sharepoint.com/sites/yoursite" -ManagedIdentity -ClientId "your-managed-identity-client-id"
二、通过托管标识连接Exchange Online
Exchange Online Management模块已支持托管标识认证,步骤如下:
- 给自动化账户启用托管标识(系统/用户分配均可)。
- 为托管标识分配Exchange Online管理角色:
- 用Exchange管理员权限执行以下PowerShell(需先连接Exchange Online):
# 分配收件人管理角色,可根据需求替换为其他角色(如Organization Management) New-ManagementRoleAssignment -Role "Mail Recipients" -SecurityGroup "your-managed-identity-display-name" -RecipientWriteScope "Organization"
- Runbook中的连接代码:
# 导入Exchange Online模块 Import-Module ExchangeOnlineManagement -UseWindowsPowerShell # 系统分配托管标识连接 Connect-ExchangeOnline -ManagedIdentity # 用户分配托管标识连接(指定标识的ClientID对应的UPN格式) Connect-ExchangeOnline -ManagedIdentity -UserPrincipalName "your-managed-identity-client-id@yourtenant.onmicrosoft.com"
三、Key Vault的辅助应用(可选)
如果需要存储敏感配置项(如SharePoint站点URL、Exchange操作的目标邮箱前缀等),可将这些值存入Key Vault,让托管标识拥有Key Vault的Secret Reader权限,在Runbook中读取使用:
# 通过托管标识读取Key Vault中的密钥 $siteUrl = Get-AzKeyVaultSecret -VaultName "your-keyvault-name" -Name "SPOSiteURL" -AsPlainText # 使用读取到的URL连接PnP Online Connect-PnPOnline -Url $siteUrl -ManagedIdentity
关键注意事项
- 确保自动化账户已安装所需模块:
PnP.PowerShell和ExchangeOnlineManagement,可在自动化账户的「模块」库中添加。 - 托管标识的权限需匹配操作需求,权限不足会导致认证或操作失败。
- 托管标识属于服务身份,不受用户MFA配置影响,完全无交互完成认证。
内容的提问来源于stack exchange,提问作者dashed
相关产品推荐
相关产品推荐

