Azure AD启用MFA的权限要求及自动化账户PowerShell配置咨询
问题1:Azure AD中启用MFA所需的权限级别
- 用户自行启用MFA:无需额外管理员权限,仅需拥有自身Azure AD账户访问权限,可通过Azure门户“安全信息”页面自行设置。
- 管理员为其他用户启用MFA:需具备以下角色之一:
- 全局管理员:拥有最高权限,可管理所有用户的MFA设置。
- 身份验证管理员:可管理非管理员用户的MFA配置,无法修改管理员账户的MFA设置。
- 特权身份验证管理员:可管理包括管理员在内的所有用户的MFA配置。
- 用户管理员:可创建用户并配置其基本身份验证设置,包含MFA启用操作。
问题2:混合工作器上的自动化账户实现PowerShell创建用户并启用MFA方案
一、所需权限
自动化账户身份的Azure AD权限
需为自动化账户的托管身份或服务主体分配以下Azure AD角色:
- 用户管理员:用于创建Azure AD用户账户。
- 身份验证管理员或特权身份验证管理员:用于为用户启用MFA。
注:若使用系统托管身份,直接在Azure AD中为该身份分配对应角色即可;若使用服务主体,需先注册服务主体并分配角色。
二、所需PowerShell模块
推荐使用Microsoft Graph PowerShell模块(替代即将弃用的AzureAD模块),需在混合工作器上安装以下模块:
Microsoft.Graph.Users:用于创建用户账户。Microsoft.Graph.Identity.SignIns:用于配置用户的MFA设置。
安装命令(混合工作器上执行):
Install-Module -Name Microsoft.Graph.Users, Microsoft.Graph.Identity.SignIns -Force -AllowClobber
三、Azure AD连接方式
混合工作器上的自动化账户需通过托管身份或服务主体连接Microsoft Graph:
1. 使用系统托管身份(推荐)
自动化账户默认自带系统托管身份,脚本中直接使用身份验证:
Connect-MgGraph -Identity
2. 使用服务主体
提前获取客户端ID、租户ID和客户端密钥,脚本中使用以下命令连接:
$clientId = "你的服务主体客户端ID" $tenantId = "你的租户ID" $clientSecret = ConvertTo-SecureString "你的服务主体密钥" -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($clientId, $clientSecret) Connect-MgGraph -Credential $credential -TenantId $tenantId
四、示例脚本
# 连接Microsoft Graph(系统托管身份方式) Connect-MgGraph -Identity # 创建Azure AD用户 $userParams = @{ AccountEnabled = $true DisplayName = "Test User" MailNickname = "testuser" UserPrincipalName = "testuser@yourdomain.com" PasswordProfile = @{ ForceChangePasswordNextSignIn = $true Password = "P@ssw0rd123!" } } $newUser = New-MgUser @userParams # 延迟等待用户账户同步 Start-Sleep -Seconds 30 # 为用户添加Microsoft Authenticator作为MFA方法 $authMethodParams = @{ UserId = $newUser.Id BodyParameter = @{ "@odata.type" = "#microsoft.graph.microsoftAuthenticatorAuthenticationMethod" PhoneNumber = "+1234567890" # 可选:若需预配置手机号 } } New-MgUserAuthenticationMicrosoftAuthenticatorMethod @authMethodParams
注:
Start-Sleep的延迟时间可根据租户同步速度调整,一般10-60秒即可;若需强制用户登录时必须使用MFA,可配合条件访问策略实现。
内容的提问来源于stack exchange,提问作者User
相关产品推荐
相关产品推荐

