获取有权访问 Azure 资源的用户和组

Get users and groups that have access to Azure resource

我有一个名为 devtest 的资源。我想使用 azure cliREST API:

IAM -> Role assignments blade 获取列表

如何以编程方式检索该信息(group-iddisplay name 等)?是否可以获取有权访问资源的用户和组的列表?

例如,使用 graph 允许获取签名用户所属的组:

POST https://graph.microsoft.com/v1.0/me/getMemberGroups
Request Body:
{
    "securityEnabledOnly": true
}

Response:
{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(Edm.String)",
    "value": [
        // group ids here
    ]
}

但是如何对资源做类似的事情并获取在该资源中具有角色的用户和组的列表?

编辑:

当我们转到 Role Assignments blade 时,Azure 调用端点:

POST https://graph.windows.net/{subscriptionId}/getObjectsByObjectIds

Request body:
{ "objectIds":[ "bunch unknown ids here" ],"includeDirectoryObjectReferences":true }

我收到的回复如下:

这与我在 Role assignments 选项卡中看到的内容有关,但并非所有位置都返回。在此回复中,我们没有关于 role 的信息,如何挖掘它们?

您可以使用以下 cmdlet,列出资源的所有角色分配及其各自的组(如果角色分配的对象类型不是 User,则不会给您任何输出)。

这是脚本:

 connect-azuread  # Manadatory to authenticate with azuread & to further run Get-azureadusermembership cmdlet
$rbac=Get-AzRoleAssignment -ResourceGroupName '<RgName>' -ResourceName '<ResourceName>' -ResourceType 'Microsoft.KeyVault/vaults' | Where-Object -Property ObjectType -EQ User| select -Property SignInName,ObjectId,RoleDefinitionName
Write-output $rbac
foreach($item in $rbac)
{
    Get-AzureADUserMembership -ObjectId $item.ObjectId | select -Property *
}

这里是示例输出以供参考: