如何使用 powershell 列出服务主体权限

How to list Service principal permissions using powershell

我必须使用 powershell 列出授予服务主体的权限。 Get-AzAdDServicePrincipal cmdlet 未提供完整详细信息。谁能帮忙? 我需要具有声明值和类型的权限列表,如下图所示

我正在使用 AzureAD 模块来完成类似这样的任务 (https://docs.microsoft.com/en-us/powershell/module/azuread/?view=azureadps-2.0)。

应用程序权限

使用 cmdlet Get-AzureADServiceAppRoleAssignedTo,您可以列出授予服务主体的应用程序权限:

$rolesAssigned = Get-AzureADServiceAppRoleAssignedTo -ObjectId 'OBJECTIDOFYOURSERVICEPRINCIPAL'
$rolesAssigned | Select-Object -Property *

此命令returns仅ResourceDisplayName(在您的Microsoft Graph 屏幕截图中)、ResourceId(Microsoft Graph 应用程序的ObjectId)和权限的Id。

如果您想获取权限名称和描述,可以使用 cmdlet Get-AzureADServicePrincipal:

foreach ($role in $rolesAssigned) {
   $servicePrincipal = Get-AzureADServicePrincipal -ObjectId $role.ResourceId

   $servicePrincipal.AppRoles | Where-Object { $_.Id -like $role.Id }
}

这将遍历每个权限并打印出名称、描述和其他属性。

委派权限

要获取服务主体的委派权限,您可以使用 Get-AzureADOAuth2PermissionGrant cmdlet:

$spDelegatedPermissions = Get-AzureADOAuth2PermissionGrant | Where-Object { $_.ClientId -eq 'OBJECTIDOFYOURSERVICEPRINCIPAL' }
$spDelegatedPermissions | Select-Object -Property *