如何找到有权访问给定 SPN 的单个资源的列表?

How to find the list of individual resources that have access to a given SPN?

当我使用服务主体使用 az login 时

例如az login --service-principal -u “12121” -p “1212” --tenant “12121”

它将显示它有权访问的所有订阅列表,如

[
  {
    "cloudName": "AzureCloud",
    "homeTenantId": "123",
    "id": "215645",
    "isDefault": true,
    "managedByTenants": [],
    "name": "Sub1",
    "state": "Enabled",
    "tenantId": "123",
    "user": {
      "name": "123456",
      "type": "servicePrincipal"
    }
  },
  {
    "cloudName": "AzureCloud",
    "homeTenantId": "123",
    "id": "rr",
    "isDefault": false,
    "managedByTenants": [
      {
        "tenantId": "123"
      }
    ],
    "name": "Sub2",
    "state": "Enabled",
    "tenantId": "123",
    "user": {
      "name": "123456",
      "type": "servicePrincipal"
    }
  },
...
...
]

在某些子列表中,SPN 具有对订阅的直接 reader 访问权限 (RBAC)。但是对于另一个子(可以说 sub2),访问权限没有直接授予订阅级别,而是授予了资源级别。

问题:如何获取 sub2 中已向服务主体提供访问权限的所有资源列表?换句话说,我必须找到(列表) 服务主体分配给 any/all sub2.

内的资源的访问类型

我知道 azure cli 在后台做这个来检索这个 information.That 为什么它可以在成功登录后显示所有订阅列表。但是我不知道那是什么

是否有任何 cli 命令或图表 API 可以检索该信息?

P.S:我也不知道分配SPN的范围或资源

如果要列出特定用户的角色分配,可以使用 az role assignment list 命令。

az role assignment list --assignee {assignee}

注意:要查看当前订阅及以下订阅的角色分配,请添加 --all 参数:

az role assignment list --assignee {assignee} --all

如果您已经使用服务主体登录,则可以省略--assignee参数