如何通过PowerShell使用MFA自动化登录Azure?
启用MFA后Azure PowerShell自动化登录方案
当Azure账号启用MFA后,原有的用户名+密码直接登录方式会被限制,以下是无需手动操作验证器的自动化登录方案:
方案一:使用服务主体(Service Principal)登录
这是自动化场景下最常用的方式,服务主体是Azure AD中的专用身份,用于非交互式操作。
1. 创建服务主体
执行以下命令创建服务主体并分配权限(需拥有Azure AD管理员权限):
az ad sp create-for-rbac --name "MyAutomationSP" --role "Contributor" --scopes "/subscriptions/<你的订阅ID>"
执行后会返回包含appId、password、tenantId的JSON结果,请妥善保存这些信息。
2. 使用服务主体登录
方式A:直接传入凭据
az login --service-principal -u "<appId>" -p "<password>" --tenant "<tenantId>" az account set --subscription "<你的订阅ID>"
方式B:通过环境变量传递(更安全,避免明文暴露)
先设置环境变量:
$env:AZURE_CLIENT_ID = "<appId>" $env:AZURE_CLIENT_SECRET = "<password>" $env:AZURE_TENANT_ID = "<tenantId>"
再执行登录:
az login --service-principal az account set --subscription "<你的订阅ID>"
方案二:使用托管身份(Managed Identity)
如果脚本在Azure内部资源(如Azure虚拟机、Azure Functions、逻辑应用等)中运行,可使用托管身份实现无凭据登录:
1. 启用托管身份
在目标Azure资源的「身份」设置中,启用系统分配托管身份或用户分配托管身份,并给该身份分配对应订阅的权限(如Contributor)。
2. 登录Azure
直接执行以下命令即可自动完成身份验证:
az login --identity az account set --subscription "<你的订阅ID>"
注意事项
- 服务主体的凭据需定期轮换,降低泄露风险;
- 遵循最小权限原则,给服务主体/托管身份分配完成任务所需的最低权限;
- 企业环境中创建服务主体可能需要管理员审批,请提前确认权限。
内容的提问来源于stack exchange,提问作者Melissa
相关产品推荐
相关产品推荐

