You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Automation中设置服务主体账户以替代凭据?

用服务主体替代凭据实现Azure Automation连接MSOnline和Exchange Online

完全理解你不想在Azure Automation中存储高权限账户凭据的顾虑,服务主体确实是更安全合规的方案。下面我给你一步步梳理清晰的配置流程,从服务主体创建到Runbook代码修改:

一、创建并配置Azure AD服务主体

首先得在Azure AD中注册服务主体,并分配必要权限:

    1. 登录Azure门户,进入Azure Active Directory > 应用注册,点击「新注册」:
    • 填写名称(比如Automation-Exchange-SP),账户类型选「仅此组织目录中的账户」,完成注册后记录下应用程序(客户端)ID和目录(租户)ID。
    1. 生成客户端密码:进入刚注册的应用,选择证书和密码 > 新客户端密码,设置过期时间后保存生成的密码值(这个值只显示一次,务必妥善记录)。
    1. 配置MSOnline/Graph权限:在应用的API权限中,点击「添加权限」,选择Microsoft Graph > 应用权限,根据你的Runbook操作需求添加对应权限(比如User.Read.All、Directory.Read.All),最后点击「授予管理员同意」。
    1. 分配Exchange Online权限:用全局管理员账户连接Exchange Online PowerShell,给服务主体分配所需的管理角色(遵循最小权限原则,比如只分配必要的邮件管理角色而非全Exchange管理员):
# 连接Exchange Online
Connect-ExchangeOnline -Organization <你的租户ID>

# 给服务主体分配指定角色,示例为邮箱管理员
New-ManagementRoleAssignment -Role "Mail Recipients" -Application <服务主体的客户端ID>

二、在Azure Automation中配置服务主体连接资产

把服务主体信息存入Automation的安全资产中,避免明文暴露:

    1. 进入你的Azure Automation账户,选择连接 > 添加连接,类型选「Azure服务主体」。
    1. 填写连接名称(比如SP-Exchange-Connection),输入之前记录的租户ID、客户端ID、客户端密码,保存即可。

三、修改PowerShell工作流Runbook代码

替换原来的凭据连接逻辑,改用服务主体认证:

workflow Your-Target-Runbook {
    # 获取Azure Automation中的服务主体连接
    $connectionName = "SP-Exchange-Connection"
    $spConnection = Get-AutomationConnection -Name $connectionName

    # 连接MSOnline(注意:MSOnline模块已弃用,建议后续迁移到Microsoft Graph)
    Connect-MsolService -TenantId $spConnection.TenantId `
                        -ApplicationClientId $spConnection.ApplicationId `
                        -ApplicationSecret $spConnection.ApplicationKey

    # 连接Exchange Online(服务主体方式)
    $secureSecret = ConvertTo-SecureString $spConnection.ApplicationKey -AsPlainText -Force
    $spCredential = New-Object System.Management.Automation.PSCredential($spConnection.ApplicationId, $secureSecret)
    
    $exchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange `
                                    -ConnectionUri "https://outlook.office365.com/powershell-liveid/" `
                                    -Authentication Basic `
                                    -AllowRedirection `
                                    -Name "Exchange-SP-Session" `
                                    -Credential $spCredential

    Import-Module (Import-PSSession -Session $exchangeSession -AllowClobber -DisableNameChecking) -Global
}

额外注意事项

  • MSOnline模块已被微软标记为弃用,长期来看建议迁移到Microsoft Graph PowerShell模块,用服务主体连接Graph的示例代码:
Connect-MgGraph -TenantId $spConnection.TenantId `
                -ClientId $spConnection.ApplicationId `
                -ClientSecret $secureSecret
  • 权限分配严格遵循最小权限原则,只给服务主体分配Runbook执行所需的权限,降低安全风险。
  • 确保Azure Automation的运行环境(沙箱或混合工作器)能正常访问Office 365的PowerShell端点,没有网络防火墙限制。

内容的提问来源于stack exchange,提问作者Andre Vollering

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:42:40