Azure Active Directory:使用 PowerShell 将服务主体添加到目录读取者角色
Azure Active Directory: Add Service Principal to Directory Readers Role with PowerShell
- 当 运行 在 VSTS
中的自托管代理上时,Azure PowerShell 任务中的命令 (Get-AzureRmADUser -Mail $user).Id
返回空值
- 问题是服务主体需要具有从 Active Directory 读取的权限
如何为服务主体授予从 Azure Active Directory 读取的正确权限?
先决条件
- 检查您是否具有从服务主体获取对象 ID 的适当权限
- 检查您是否有适当的权限将服务主体添加到 Azure Active Directory 租户中的 "Directory Readers" 角色(-> 管理员)
步骤
通过 Install-Module AzureAD
[1]
安装 Azure AD 模块
连接到 Azure Active Directory
Connect-AzureAD
获取 "Directory Readers" 角色的 ID
$roleId = (Get-AzureADDirectoryRole | where-object {$_.DisplayName -eq "Directory Readers"}).Objectid
获取服务主体对象 ID
$spObjectId = (Get-AzureADServicePrincipal -SearchString "spName").ObjectId
- 这当然只有在结果只包含一个 ObjectId 时才有效
- 这不是在 Azure Active Directory 中注册的应用程序的 ObjectId
将服务主体添加到 "Directory Readers" 角色
Add-AzureADDirectoryRoleMember -ObjectId $roleId -RefObjectId $spObjectId
检查 SP 是否分配给目录读者角色
Get-AzureADDirectoryRoleMember -ObjectId $roleId | Where-Object {$_.ObjectId -eq $spObjectId}
如果您想在稍后阶段从角色中删除服务主体
Remove-AzureADDirectoryRoleMember -ObjectId $roleId -MemberId $spObjectId
另见 [2]
资源
[2] Using a Service Principal to connect to a directory in PowerShell
- 当 运行 在 VSTS 中的自托管代理上时,Azure PowerShell 任务中的命令
- 问题是服务主体需要具有从 Active Directory 读取的权限
(Get-AzureRmADUser -Mail $user).Id
返回空值
如何为服务主体授予从 Azure Active Directory 读取的正确权限?
先决条件
- 检查您是否具有从服务主体获取对象 ID 的适当权限
- 检查您是否有适当的权限将服务主体添加到 Azure Active Directory 租户中的 "Directory Readers" 角色(-> 管理员)
步骤
通过
Install-Module AzureAD
[1] 安装 Azure AD 模块
连接到 Azure Active Directory
Connect-AzureAD
获取 "Directory Readers" 角色的 ID
$roleId = (Get-AzureADDirectoryRole | where-object {$_.DisplayName -eq "Directory Readers"}).Objectid
获取服务主体对象 ID
$spObjectId = (Get-AzureADServicePrincipal -SearchString "spName").ObjectId
- 这当然只有在结果只包含一个 ObjectId 时才有效
- 这不是在 Azure Active Directory 中注册的应用程序的 ObjectId
将服务主体添加到 "Directory Readers" 角色
Add-AzureADDirectoryRoleMember -ObjectId $roleId -RefObjectId $spObjectId
检查 SP 是否分配给目录读者角色
Get-AzureADDirectoryRoleMember -ObjectId $roleId | Where-Object {$_.ObjectId -eq $spObjectId}
如果您想在稍后阶段从角色中删除服务主体
Remove-AzureADDirectoryRoleMember -ObjectId $roleId -MemberId $spObjectId
另见 [2]
资源
[2] Using a Service Principal to connect to a directory in PowerShell