【问题标题】:Retrieve application permissions of a service principal using the AzureAD module使用 AzureAD 模块检索服务主体的应用程序权限
【发布时间】:2017-02-15 08:37:47
【问题描述】:
使用 AzureAD 模块,我可以使用Get-AzureADServicePrincipalOAuth2PermissionGrant cmdlet 检索服务主体的所有委派权限。但是,我找不到类似的 cmdlet 来检索此模块中服务主体的 应用程序权限。
AzureAD 模块是否提供了一种方法来检索服务主体的应用程序权限?
【问题讨论】:
标签:
powershell
azure
azure-active-directory
【解决方案1】:
应用程序权限分配在目录中表示为 appRoleAssignments。将角色分配给应用的服务主体。
使用 V2 模块:
有两种方法可以获取角色。
已为委托人 A 分配了哪些权限?
Get-AzureADServiceAppRoleAssignedTo -ObjectId eea0d6cd-20e2-4b81-97ca-5b0cbffac985 | fl
在这里我得到了分配给这个主体的应用权限。
谁拥有委托人 A 的权限?
Get-AzureADServiceAppRoleAssignment -ObjectId f004dde9-b40f-4259-91be-e257009a444a | fl
这里的对象 ID 用于 Microsoft Graph。它列出了所有被分配了任何应用程序权限的主体。
无论哪种方式,您仍然可以获得 AppRoleAssignments 列表。
- Id = 分配的 AppRole 的 ID
- PrincipalId = 权限分配给的服务主体的 ObjectId
- ResourceId = 提供权限的服务主体的 ObjectId
您需要自己以正确的角色加入任务。您可以打印出应用角色,例如MS Graph 很容易提供:
$msGraph = Get-AzureADServicePrincipal -ObjectId f004dde9-b40f-4259-91be-e257009a444a
$msGraph.AppRoles | fl
例子:
AllowedMemberTypes : {Application}
Description : (Preview) Allows the app to read all files in all site collections without a signed in user.
DisplayName : Read files in all site collections (preview)
Id : 01d4889c-1287-42c6-ac1f-5d1e02578ef6
IsEnabled : True
Value : Files.Read.All