Azure 自动化:Runbook、RunAs 帐户:如何允许访问 AAD(例如,对于 Get-AzADUser)?

Azure Automation: Runbook, RunAs Account: How to allow access to AAD (e.g. for Get-AzADUser)?

下午好

我选择了Whosebug来回答这个问题,因为可能主要是程序员面临这个问题:

问题所在:

如果我们调用 Get-AzADUser 来获取 Azure 自动化 运行 书中的所有 AAD 用户,那么我们会得到:Error 'Insufficient privileges'

我们这样做:

  1. 我们有一个 "Azure Run As Account"
  2. 的自动化帐户
  3. 在 PowerShell 运行书中我们调用:
    # Connect to AAD
    $Conn = Get-AutomationConnection -Name AzureRunAsConnection
    $account = Connect-AzAccount -ServicePrincipal `
               -TenantId $Conn.TenantID  `
               -ApplicationId $Conn.ApplicationID  `
               -CertificateThumbprint $Conn.CertificateThumbprint
    # Get All AAD Users
    $AllADUsers = Get-AzADUser
  1. 如果我们启动 运行本书,我们会得到错误:
> Get-AzADUser : Insufficient privileges to complete the operation.
> FullyQualifiedErrorId :
> Microsoft.Azure.Commands.ActiveDirectory.GetAzureADUserCommand

这是权限配置:

  1. Automation Account 已设置 Run as accounts » Azure Run As Account(而不是 Azure Classic 运行 作为帐户)
  2. 事实上,Azure Run As Account是一种误导,它是一个已注册的应用程序,可以在Azure中找到App registrations
  3. 已注册的应用程序具有以下设置:

» 具有 所有 权限的自定义角色。

» API 权限:

Microsoft Graph (6)
Delegated    Directory.AccessAsUser.All
Delegated    Directory.ReadWrite.All
Delegated    User.ReadWrite.All
Application  Directory.ReadWrite.All
Application  User.Export.All
Application  User.ReadWrite.All

» 已为我们的租户授予所有 API 权限

不幸的是,我们仍然得到错误 'Insufficient privileges'

非常感谢您的帮助!

亲切的问候, 托马斯

根据一些测试,您需要添加Azure AD的权限而不是Micorsoft Graph。 Get-AzADUser 命令似乎在后端使用 Azure AD 图形,而不是 Microsoft 图形。所以我们需要做如下操作:

之后我们就可以成功使用命令Get-AzADUser了(如果你在powershell中测试命令,当你添加Azure AD权限时,请关闭powershell并重新打开它并重新连接到避免缓存)

的影响

我在我这边测试,和你的一样报错,加了这个权限后可以让用户成功。希望对你有帮助~