如何从Azure Graph获取roleDefinitionId与roleDefinitionName详情?
通过Azure Graph(Microsoft Graph)获取服务主体的角色分配信息
要获取指定应用ID对应服务主体的角色分配(包含roleDefinitionId和roleDefinitionName),可以通过以下方式操作:
1. 先获取服务主体的对象ID(principalId)
应用ID(appId)和服务主体的对象ID(principalId)是不同标识,需先通过应用ID查询对应的principalId:
使用Microsoft Graph API
GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=appId eq 'AAAAAAAAAAAAAAAAAAA'&$select=id
使用Azure CLI
az ad sp show --id AAAAAAAAAAAAAAAAAAA --query id -o tsv
2. 查询包含角色定义信息的角色分配
拿到principalId后,通过Microsoft Graph的Azure RBAC角色分配端点查询,同时展开角色定义信息:
使用Microsoft Graph API
GET https://graph.microsoft.com/v1.0/roleManagement/azure/roleAssignments?$filter=principalId eq '{替换为步骤1得到的principalId}'&$expand=roleDefinition($select=id,displayName)
返回结果对应关系:
roleDefinition.id即你需要的roleDefinitionIdroleDefinition.displayName即你需要的roleDefinitionName
若需精简返回字段,可添加$select指定内容:
GET https://graph.microsoft.com/v1.0/roleManagement/azure/roleAssignments?$filter=principalId eq '{替换为步骤1得到的principalId}'&$select=id,principalId,scope&$expand=roleDefinition($select=id,displayName)
使用Azure CLI调用Graph API
PRINCIPAL_ID=$(az ad sp show --id AAAAAAAAAAAAAAAAAAA --query id -o tsv) az rest --method get --uri "https://graph.microsoft.com/v1.0/roleManagement/azure/roleAssignments?\$filter=principalId eq '$PRINCIPAL_ID'&\$expand=roleDefinition(\$select=id,displayName)"
权限说明
执行以上查询需具备RoleManagement.Read.All或Directory.Read.All类权限,确保操作账号/应用拥有对应权限。
内容的提问来源于stack exchange,提问作者Amit Arora
相关产品推荐
相关产品推荐

