使用 Azure Resource Graph 获取其他用户的资源
Using Azure Resource Graph to get other user's Resources
我正在尝试使用应用 ID 查询用户拥有的所有资源。我目前的实现是获取我的应用程序有权访问的所有资源,然后查询每一个资源的 RBAC 以查看用户是否有权访问。对于我当前使用 Azure Resource Graph 的用户来说,似乎有太多的调用可以完成。有没有办法使用 Azure Resource Graph 但指定我想为哪个用户获取资源(假设我的应用程序可以 reader 访问租户中的所有资源)?
根据你的描述,你需要找到的是你订阅中的角色分配,它的资源类型是Microsoft.Authorization/roleAssignments
,它不包含在Azure Resource Graph中。
您的选择是使用 REST API - Role Assignments - List
, filter with the ObjectId
of the user in Azure AD. To get the access token to call the REST API with the AD App(the AppId you mentioned), you need to use the client credential flow, refer to this link.
示例:
检查响应中的scope
,它们是用户可以访问的资源。
GET https://management.azure.com/subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleAssignments?$filter=principalId eq '<object-id>'&api-version=2018-09-01-preview
我正在尝试使用应用 ID 查询用户拥有的所有资源。我目前的实现是获取我的应用程序有权访问的所有资源,然后查询每一个资源的 RBAC 以查看用户是否有权访问。对于我当前使用 Azure Resource Graph 的用户来说,似乎有太多的调用可以完成。有没有办法使用 Azure Resource Graph 但指定我想为哪个用户获取资源(假设我的应用程序可以 reader 访问租户中的所有资源)?
根据你的描述,你需要找到的是你订阅中的角色分配,它的资源类型是Microsoft.Authorization/roleAssignments
,它不包含在Azure Resource Graph中。
您的选择是使用 REST API - Role Assignments - List
, filter with the ObjectId
of the user in Azure AD. To get the access token to call the REST API with the AD App(the AppId you mentioned), you need to use the client credential flow, refer to this link.
示例:
检查响应中的scope
,它们是用户可以访问的资源。
GET https://management.azure.com/subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleAssignments?$filter=principalId eq '<object-id>'&api-version=2018-09-01-preview