thu*_*uld 1 powershell azure azure-active-directory
出于报告和监控目的,我是否喜欢检索 Azure 门户中显示的应用程序(应用程序注册)的“API 权限”信息。
我试过下面的代码
$app = Get-AzureADApplication -ObjectId 'aa7e174d-2639-4ac7-9b11-6799466c3c9b'
$app.Oauth2Permissions
Run Code Online (Sandbox Code Playgroud)
但这只会产生以下信息:
AdminConsentDescription : Allow the application to access foobar_HVV on behalf of the signed-in user.
AdminConsentDisplayName : Access foobar_HVV
Id : h1285f9d5-b00d-4bdb-979d-c4d6487fa000
IsEnabled : True
Type : User
UserConsentDescription : Allow the application to access foobar_HVV on your behalf.
UserConsentDisplayName : Access foobar_HVV
Value : user_impersonation
Run Code Online (Sandbox Code Playgroud)
但是应用程序“foobar_HVV”的“API 权限”显示了完全不同的权限。特别是我的报告需要“典型”(代表、应用程序)和每个权限的“状态”。
如果要获取API permissions,则需要使用以下命令。
$app = Get-AzureADApplication -ObjectId '<object-id of the App Registration>'
$app.requiredResourceAccess | ConvertTo-Json -Depth 3
Run Code Online (Sandbox Code Playgroud)
的ResourceAppId是Application ID该API例如服务主体的Microsoft Graph,在ResourceAccess包括已添加到应用程序的权限,该Scope装置Delegated permission,Role装置的Application permission。
我的 API 权限:
要检查 API 权限的详细信息,您需要使用以下命令。例如,我们想知道其权限的细节Id是5b567255-7703-4780-807c-7be8301ae99b在截图,它Type就是Role,所以我们需要使用$sp.AppRoles。
$sp = Get-AzureADServicePrincipal -All $true | Where-Object {$_.AppId -eq '00000003-0000-0000-c000-000000000000'}
$sp.AppRoles | Where-Object {$_.Id -eq '5b567255-7703-4780-807c-7be8301ae99b'}
Run Code Online (Sandbox Code Playgroud)
如果你想得到Delegated permission( Typeis Scope),我们需要使用:
$sp = Get-AzureADServicePrincipal -All $true | Where-Object {$_.AppId -eq '00000003-0000-0000-c000-000000000000'}
$sp.Oauth2Permissions | Where-Object {$_.Id -eq 'e1fe6dd8-ba31-4d61-89e7-88639da4683d'}
Run Code Online (Sandbox Code Playgroud)
要检查Status,没有直接的方法,您需要检查与您的AAD租户中的AD App对应的服务主体的管理员授予的权限。
首先,获取服务主体 $appsp:
$app = Get-AzureADApplication -ObjectId '<object-id of the App Registration>'
$appsp = Get-AzureADServicePrincipal -All $true | Where-Object {$_.AppId -eq $app.AppId}
Run Code Online (Sandbox Code Playgroud)
获取Delegated permissions已授予的(Status是Granted):
Get-AzureADServicePrincipalOAuth2PermissionGrant -ObjectId $appsp.ObjectId -All $true | ConvertTo-Json
Run Code Online (Sandbox Code Playgroud)
该ResourceId是Object IdAPI的服务主体的:
获取Application permissions已授予的(Status是Granted):
Get-AzureADServiceAppRoleAssignedTo -ObjectId $appsp.ObjectId | ConvertTo-Json
Run Code Online (Sandbox Code Playgroud)
该Id是Id在ResourceAccess第一截图。
如果未授予权限(Statusis Not Granted),则您将无法使用上述命令获得权限。
比如我Application permission在portal里添加了一个new ,然后再次运行命令,我们仍然可以获得已经授予的权限。
| 归档时间: |
|
| 查看次数: |
3584 次 |
| 最近记录: |