Azure Active Directory:使用PowerShell将服务主体添加到目录读取器角色

时间:2018-08-09 04:46:36

标签: azure powershell azure-devops azure-active-directory service-principal

  • 在VSTS中的自托管代理上运行时,Azure PowerShell任务中的命令(Get-AzureRmADUser -Mail $user).Id返回null
  • 问题是服务主体需要具有从Active Directory读取的权限

如何为服务主体赋予从Azure Active Directory读取的正确权限?

1 个答案:

答案 0 :(得分:0)

先决条件

  • 检查您是否具有从服务主体获取对象ID的适当权限
  • 检查您是否具有将服务主体添加到Azure Active Directory租户(->管理员)中的“目录读取器”角色的适当权限

步骤

  • 通过Install-Module AzureAD [1]

  • 安装Azure AD模块
  • 连接到Azure Active Directory

    • Connect-AzureAD
  • 获取“目录读者”角色的ID

    • $roleId = (Get-AzureADDirectoryRole | where-object {$_.DisplayName -eq "Directory Readers"}).Objectid
  • 获取服务主体对象ID

    • $spObjectId = (Get-AzureADServicePrincipal -SearchString "spName").ObjectId
      • 这当然仅在结果仅包含一个ObjectId时有效
      • 这不是在Azure Active Directory中注册的应用程序的ObjectId
  • 将服务主体添加到“目录读取器”角色

    • Add-AzureADDirectoryRoleMember -ObjectId $roleId -RefObjectId $spObjectId
  • 检查是否已将SP分配给目录读取者角色

    • Get-AzureADDirectoryRoleMember -ObjectId $roleId | Where-Object {$_.ObjectId -eq $spObjectId}
  • 如果您想在以后从角色中删除服务主体

    • Remove-AzureADDirectoryRoleMember -ObjectId $roleId -MemberId $spObjectId

另请参阅[2]

资源

[1] Install Azure AD Module

[2] Using a Service Principal to connect to a directory in PowerShell