分析 IAM 政策

本页面介绍了如何使用政策分析器来找出哪些主账号 (用户、服务账号、群组和网域)对哪些角色 Google Cloud 资源。

本页面上的示例展示了如何运行 Policy Analysis 查询,以及 就可以立即查看结果。如果您想将结果导出以进一步 您可以使用 AnalyzeIamPolicyLongrunning即可写入 导出到 BigQueryCloud Storage

准备工作

所需的角色和权限

您需要拥有以下角色和权限才能分析允许政策。

所需 IAM 角色

为了获得分析允许政策所需的权限, 请让管理员授予您 您将限定的项目、文件夹或组织上的以下 IAM 角色 将您的查询更改为:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

这些预定义角色包含 分析允许政策所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

分析允许政策需要以下权限:

  • cloudasset.assets.analyzeIamPolicy
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.searchAllIamPolicies
  • 如需分析使用自定义 IAM 角色的政策,请执行以下操作: iam.roles.get
  • 如需使用 Google Cloud CLI 分析政策,请执行以下操作: serviceusage.services.use

您也可以使用自定义角色或其他预定义角色来获取这些权限。

所需的 Google Workspace 权限

如果您想展开查询结果中的群组,以查看某个主体是否因其属于 Google Workspace 群组而拥有某些角色或权限,则需要 groups.read Google Workspace 权限。Groups Reader Admin 角色以及其他角色拥有此权限 权限角色,例如群组管理员或超级用户角色。要了解如何 授予这些角色,请参阅分配特定管理员角色

确定哪些主账号可以访问资源

您可以使用政策分析器检查哪些主账号对项目、文件夹或组织中的特定资源拥有特定角色或权限。要获取此信息,请创建查询,其中包含要分析其访问权限的资源以及要检查的一个或多个角色或权限。

控制台

  1. 在 Google Cloud 控制台中,前往 Policy Analyzer 页面。

    转到“政策分析器”页面

  2. 分析政策部分,找到标有自定义查询的窗格 然后点击该窗格中的创建自定义查询

  3. 选择查询范围字段中,选择要将查询范围限定到的项目、文件夹或组织。政策分析器将分析该项目、文件夹或组织的访问权限,以及该项目、文件夹或组织中的任何资源。

  4. 选择要检查的资源以及要检查的角色或权限:

    1. 参数 1 字段中,从下拉菜单中选择资源
    2. 资源字段中,输入要分析其访问权限的资源的完整资源名称。如果您不知道完整资源名称,请输入资源的显示名,然后从提供的资源列表中选择该资源。
    3. 点击 添加选择器
    4. 参数 2 字段中,选择角色权限
    5. 选择角色选择权限字段中,选择要检查的角色或权限。
    6. 可选:如需检查其他角色和权限,请继续添加角色权限选择器,直到您列出要检查的所有角色和权限。
  5. 可选:点击继续,然后选择要为此查询启用的所有高级选项

  6. 在“自定义查询”窗格中,依次点击分析 > 运行查询。 报告页面显示了您输入的查询参数,以及一个结果表 拥有指定角色或权限的所有主账号的 资源。

    Google Cloud 控制台中的政策分析查询最长运行一分钟。一分钟后,Google Cloud 控制台会停止查询并显示所有可用结果。如果查询未在该时间内完成,Google Cloud 控制台会显示一条横幅,指明结果不完整。要获得这些查询的更多结果, 导出 导出到 BigQuery

gcloud

在使用下面的命令数据之前,请先进行以下替换:

  • RESOURCE_TYPE:类型 将搜索范围限定到的资源的名称。仅 IAM 允许政策 会进行分析。使用值 projectfolderorganization
  • RESOURCE_ID: 您要将搜索范围限定到的 Google Cloud 项目、文件夹或组织。仅限 系统会分析附加到此资源及其后代的 IAM 允许政策。 项目 ID 是字母数字字符串,例如 my-project。文件夹和组织 ID 是数字,例如 123456789012
  • FULL_RESOURCE_NAME: 您要分析其访问权限的资源的完整资源名称。如需查看完整列表 资源名称格式,请参阅资源名称 格式
  • PERMISSIONS:A 您想检查的权限的逗号分隔列表。例如, compute.instances.get,compute.instances.start。如果您列出多个 权限,政策分析器会检查列出的所有权限。

执行 gcloud asset analyze-iam-policy 命令:

Linux、macOS 或 Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --full-resource-name=FULL_RESOURCE_NAME \
    --permissions='PERMISSIONS'

Windows (PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --full-resource-name=FULL_RESOURCE_NAME `
    --permissions='PERMISSIONS'

Windows (cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --full-resource-name=FULL_RESOURCE_NAME ^
    --permissions='PERMISSIONS'

您会收到包含分析结果的 YAML 响应。每个分析结果都会列出与您的查询相关的一组访问权限、身份和资源,后跟相关的 IAM 角色绑定。如果角色绑定是条件绑定,则分析结果 还包括条件评估的结果。如果无法评估条件,则结果为 CONDITIONAL

以下页面中列出了对指定资源具有任何指定权限的主账号 响应中的 identities 字段。以下示例显示了单个分析结果,其中突出显示了 identities 字段。

...
---
ACLs:
- accesses:
  - permission: compute.instances.get
  - permission: compute.instances.start
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
policy:
  attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
  binding:
    members:
    - user: my-user@example.com
    role: roles/compute.admin
---
...

如果请求在查询完成之前超时,您会收到 DEADLINE_EXCEEDED 错误。要获得这些查询的更多结果,请将 将结果导出到 BigQuery 或 Cloud Storage(使用长时间运行的版本) 共 analyze-iam-policy 页。如需了解相关说明,请参阅将政策分析写入 BigQuery将政策分析写入 Cloud Storage

REST

要确定哪些主账号对 请使用 Cloud Asset Inventory API 的 analyzeIamPolicy 方法。

在使用任何请求数据之前,请先进行以下替换:

  • RESOURCE_TYPE:您要将搜索范围限定为的资源类型。系统只会分析附加在此资源及其后代资源的 IAM 允许政策。使用值 projectsfoldersorganizations
  • RESOURCE_ID:要将搜索范围限定为的 Google Cloud 项目、文件夹或组织的 ID。仅限 系统会分析附加到此资源及其后代的 IAM 允许政策。 项目 ID 是字母数字字符串,例如 my-project。文件夹和组织 ID 是数字, 例如 123456789012
  • FULL_RESOURCE_NAME: 您要分析其访问权限的资源的完整资源名称。如需查看完整列表 资源名称格式,请参阅资源名称 格式
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: (例如 compute.instances.get)。如果您列出多个 权限,政策分析器会检查列出的所有权限。

HTTP 方法和网址:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

请求 JSON 正文:

{
  "analysisQuery": {
    "resourceSelector": {
      "fullResourceName": "FULL_RESOURCE_NAME"
    },
    "accessSelector": {
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    }
  }
}

如需发送您的请求,请展开以下选项之一:

您会收到包含分析结果的 JSON 响应。每个分析结果都会描述一个相关的 IAM 角色绑定,然后列出该绑定中的资源、访问权限和主账号。如果角色绑定是基于条件的,则分析结果还会包含条件评估结果。如果无法评估条件,结果会列为 CONDITIONAL

对指定资源拥有任何指定权限的主账号会列在响应的 identities 字段中。以下示例显示了单个分析结果,其中突出显示了 identities 字段。

...
{
  "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project",
  "iamBinding": {
    "role": "roles/compute.admin",
    "members": [
      "user:my-user@example.com"
    ]
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
        }
      ],
      "accesses": [
        {
          "permission": "compute.instances.get"
        },
        {
          "permission": "compute.instances.start"
        }
      ]
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

如果请求在查询完成之前超时,您会收到 DEADLINE_EXCEEDED 错误。如需针对这些查询获取更多结果,请使用长时间运行的 analyzeIamPolicy 版本将结果写入 BigQuery 或 Cloud Storage。有关说明,请参阅 将政策分析写入 BigQuery将政策分析写入到 Cloud Storage

确定哪些主账号具有特定角色或权限

您可以使用政策分析器检查哪些主账号具有组织中任意 Google Cloud 资源的特定角色或权限。要获取此信息,请创建包含一个或多个要检查的角色或权限的查询,但不指定资源。

控制台

  1. 在 Google Cloud 控制台中,前往 Policy Analyzer 页面。

    转到“政策分析器”页面

  2. 分析合作规范部分,找到标记为自定义查询的窗格,然后点击该窗格中的创建自定义查询

  3. 选择查询范围字段中,选择要将查询范围限定到的项目、文件夹或组织。政策分析器将分析该项目、文件夹或组织的访问权限,以及该项目、文件夹或组织中的任何资源。

  4. 参数 1 字段中,选择角色权限

  5. 选择角色选择权限字段中,选择要检查的角色或权限。

  6. 可选:要检查其他角色和权限,请执行以下操作:

    1. 点击 添加选择器
    2. 参数 2 字段中,选择角色权限
    3. 选择角色选择权限字段中,选择要检查的角色或权限。
    4. 继续添加角色权限选择器,直到列出要检查的所有角色和权限。
  7. 可选:点击继续,然后选择任意高级选项 您要为此查询启用哪些指标

  8. 自定义查询窗格中,依次点击分析 > 运行查询。 报告页面显示了您输入的查询参数,以及一个结果表 对范围内的任何主账号具有指定角色或权限的所有主账号 资源。

    Google Cloud 控制台中的政策分析查询的运行时间最多为 1 分钟。更新后 Google Cloud 控制台会停止查询并显示所有可用的结果。如果 则 Google Cloud 控制台会显示一个横幅,指示 结果不完整。要获得这些查询的更多结果, 导出 导出到 BigQuery

gcloud

在使用下面的命令数据之前,请先进行以下替换:

  • RESOURCE_TYPE:类型 将搜索范围限定到的资源的名称。仅 IAM 允许政策 会进行分析。使用值 projectfolderorganization
  • RESOURCE_ID: 您要将搜索范围限定到的 Google Cloud 项目、文件夹或组织。仅限 系统会分析附加到此资源及其后代的 IAM 允许政策。 项目 ID 是字母数字字符串,例如 my-project。文件夹和组织 ID 是数字, 例如 123456789012
  • ROLES:您要检查的角色的英文逗号分隔列表,例如 roles/compute.admin,roles/compute.imageUser。如果您列出了多个角色,政策分析器会检查列出的任何角色。
  • PERMISSIONS:A 您想检查的权限的逗号分隔列表。例如, compute.instances.get,compute.instances.start。如果您列出了多项权限,政策分析器会检查所列的任何权限。

执行 gcloud asset analyze-iam-policy 命令:

Linux、macOS 或 Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --roles='ROLES' \
    --permissions='PERMISSIONS'

Windows (PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --roles='ROLES' `
    --permissions='PERMISSIONS'

Windows (cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --roles='ROLES' ^
    --permissions='PERMISSIONS'

您会收到包含分析结果的 JSON 响应。每个分析结果都描述了 IAM 角色绑定,然后列出 该绑定。如果角色绑定是条件式绑定,则分析结果也会包含结果 条件评估的一个部分。如果无法评估条件,结果会列为 CONDITIONAL

拥有任何指定角色或权限的主账号列在 identities 字段。以下示例显示了单个分析结果,其中突出显示了 identities 字段。

...
---
ACLs:
- accesses:
  - permission: compute.instances.get
  - permission: compute.instances.start
  - role: roles/compute.admin
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
policy:
  attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
  binding:
    members:
    - user: my-user@example.com
    role: roles/compute.admin
---
...

如果请求在查询完成之前超时,您会收到 DEADLINE_EXCEEDED 个错误。要获得这些查询的更多结果,请将 将结果导出到 BigQuery 或 Cloud Storage(使用长时间运行的版本) 共 analyze-iam-policy 页。有关说明,请参阅 将政策分析写入 BigQuery将政策分析写入到 Cloud Storage

REST

如需确定哪些主账号具有特定角色或权限,请使用 Cloud Asset Inventory API 的 analyzeIamPolicy 方法。

在使用任何请求数据之前,请先进行以下替换:

  • RESOURCE_TYPE:您要将搜索范围限定为的资源类型。系统只会分析附加在此资源及其后代资源的 IAM 允许政策。使用值 projectsfoldersorganizations
  • RESOURCE_ID: 您要将搜索范围限定到的 Google Cloud 项目、文件夹或组织。系统只会分析附加在此资源及其后代资源的 IAM 允许政策。项目 ID 是字母数字字符串,例如 my-project。文件夹和组织 ID 是数字,例如 123456789012
  • ROLE_1, ROLE_2... ROLE_N: (例如 roles/compute.admin)。如果您列出多个 政策分析器会检查列出的所有角色。
  • PERMISSION_1, PERMISSION_2... PERMISSION_N: (例如 compute.instances.get)。如果您列出了多项权限,政策分析器会检查所列的任何权限。

HTTP 方法和网址:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

请求 JSON 正文:

{
  "analysisQuery": {
    "accessSelector": {
      "roles": [
        "ROLE_1",
        "ROLE_2",
        "ROLE_N"
      ],
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    }
  }
}

如需发送您的请求,请展开以下选项之一:

您会收到包含分析结果的 JSON 响应。每个分析结果都描述了 IAM 角色绑定,然后列出 该绑定。如果角色绑定是基于条件的,则分析结果还会包含条件评估结果。如果无法评估条件,结果会列为 CONDITIONAL

拥有任何指定角色或权限的主账号列在 identities 字段。以下示例显示了单个分析结果,其中突出显示了 identities 字段。

...
{
  "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project",
  "iamBinding": {
    "role": "roles/compute.admin",
    "members": [
      "user:my-user@example.com"
    ]
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
        }
      ],
      "accesses": [
        {
          "permission": "compute.instances.get"
        },
        {
          "role": "roles/compute.admin"
        }
      ]
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

如果请求在查询完成之前超时,您会收到 DEADLINE_EXCEEDED 错误。要获得这些查询的更多结果,请将 将结果导出到 BigQuery 或 Cloud Storage(使用长时间运行的版本) 共 analyzeIamPolicy 页。如需了解相关说明,请参阅将政策分析写入 BigQuery将政策分析写入 Cloud Storage

确定主账号对某个资源拥有什么访问权限

您可以使用政策分析器检查主账号对组织中某个资源拥有什么角色或权限。要获取此信息,请创建查询,其中包含要分析其访问权限的主账号以及要分析其访问权限的资源。

控制台

  1. 在 Google Cloud 控制台中,前往政策分析器页面。

    转到“政策分析器”页面

  2. 分析政策部分,找到标有自定义查询的窗格 然后点击该窗格中的创建自定义查询

  3. 选择查询范围字段中,选择要将查询范围限定到的项目、文件夹或组织。政策分析器将分析该项目、文件夹或组织的访问权限,以及该项目、文件夹或组织中的任何资源。

  4. 选择要检查的资源和主账号:

    1. 参数 1 字段中,从下拉菜单中选择资源
    2. 资源字段中,输入要分析其访问权限的资源的完整资源名称。如果您不知道完整资源名称,请输入资源的显示名,然后从提供的资源列表中选择该资源。
    3. 点击 添加选择器
    4. 参数 2 字段中,从下拉菜单中选择主账号
    5. 主账号字段中,开始输入用户、服务账号或群组的名称。然后,从提供的主账号列表中选择要分析其访问权限的用户、服务账号或群组。
  5. 可选:点击继续,然后选择任意高级选项 您要为此查询启用哪些指标

  6. 在“自定义查询”窗格中,依次点击分析 > 运行查询。 报告页面显示了您输入的查询参数,以及一个结果表 指定主账号对指定资源拥有的所有角色的比例。

    Google Cloud 控制台中的政策分析查询的运行时间最多为 1 分钟。更新后 Google Cloud 控制台会停止查询并显示所有可用的结果。如果查询未在该时间内完成,Google Cloud 控制台会显示一条横幅,指明结果不完整。如需针对这些查询获取更多结果,请将结果导出到 BigQuery

gcloud

在使用下面的命令数据之前,请先进行以下替换:

  • RESOURCE_TYPE:类型 将搜索范围限定到的资源的名称。仅 IAM 允许政策 会进行分析。使用值 projectfolderorganization
  • RESOURCE_ID: 您要将搜索范围限定到的 Google Cloud 项目、文件夹或组织。仅限 系统会分析附加到此资源及其后代的 IAM 允许政策。 项目 ID 是字母数字字符串,例如 my-project。文件夹和组织 ID 是数字,例如 123456789012
  • FULL_RESOURCE_NAME:您要分析访问权限的资源的完整资源名称。如需完整的资源名称格式列表,请参阅资源名称格式
  • PRINCIPAL:您要分析其访问权限的主账号,格式为 PRINCIPAL_TYPE:ID,例如 user:my-user@example.com。如需查看主账号类型的完整列表,请参阅主账号标识符

执行 gcloud asset analyze-iam-policy 命令:

Linux、macOS 或 Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --full-resource-name=FULL_RESOURCE_NAME \
    --identity=PRINCIPAL

Windows (PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --full-resource-name=FULL_RESOURCE_NAME `
    --identity=PRINCIPAL

Windows (cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --full-resource-name=FULL_RESOURCE_NAME ^
    --identity=PRINCIPAL

您会收到包含分析结果的 YAML 响应。每个分析结果都会列出与您的查询相关的一组访问权限、身份和资源,后跟相关的 IAM 角色绑定。如果角色绑定是基于条件的,则分析结果还会包含条件评估结果。如果无法评估条件, 结果为 CONDITIONAL

主账号对指定资源拥有的角色列在响应的 accesses 字段中。以下示例显示了 并突出显示了 accesses 字段。

...
---
ACLs:
- accesses:
  - roles/iam.serviceAccountUser
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
policy:
  attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
  binding:
    members:
    - user: my-user@example.com
    role: roles/iam.serviceAccountUser
---
...

如果请求在查询完成之前超时,您会收到 DEADLINE_EXCEEDED 个错误。如需针对这些查询获取更多结果,请使用长时间运行的 analyze-iam-policy 版本将结果写入 BigQuery 或 Cloud Storage。有关说明,请参阅 将政策分析写入 BigQuery将政策分析写入到 Cloud Storage

REST

如需确定主账号对某个资源拥有什么访问权限,请使用 Cloud Asset Inventory API 的 analyzeIamPolicy 方法。

在使用任何请求数据之前,请先进行以下替换:

  • RESOURCE_TYPE:您要将搜索范围限定为的资源类型。系统只会分析附加在此资源及其后代资源的 IAM 允许政策。使用值 projectsfoldersorganizations
  • RESOURCE_ID:要将搜索范围限定为的 Google Cloud 项目、文件夹或组织的 ID。仅限 系统会分析附加到此资源及其后代的 IAM 允许政策。 项目 ID 是字母数字字符串,例如 my-project。文件夹和组织 ID 是数字, 例如 123456789012
  • FULL_RESOURCE_NAME:您要分析访问权限的资源的完整资源名称。如需完整的资源名称格式列表,请参阅资源名称格式
  • PRINCIPAL:其主账号 要分析的访问权限,形式为 PRINCIPAL_TYPE:ID - 例如, user:my-user@example.com。如需查看主账号类型的完整列表,请参阅 主账号标识符

HTTP 方法和网址:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

请求 JSON 正文:

{
  "analysisQuery": {
    "resourceSelector": {
      "fullResourceName": "FULL_RESOURCE_NAME"
    },
    "identitySelector": {
      "identity": "PRINCIPAL"
    }
  }
}

如需发送您的请求,请展开以下选项之一:

您会收到包含分析结果的 JSON 响应。每个分析结果都会描述一个相关的 IAM 角色绑定,然后列出该绑定中的资源、访问权限和主账号。如果角色绑定是基于条件的,则分析结果还会包含条件评估结果。如果无法评估条件,结果会列为 CONDITIONAL

accesses 中会列出主账号对指定资源拥有的角色 字段。以下示例显示了单个分析结果,其中突出显示了 accesses 字段。

...
{
  "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project",
  "iamBinding": {
    "role": "roles/iam.serviceAccountUser",
    "members": [
      "user:my-user@example.com"
    ]
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
        }
      ],
      "accesses": [
        {
          "roles": "iam.serviceAccountUser"
        }
      ]
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

如果请求在查询完成之前超时,您会收到 DEADLINE_EXCEEDED 错误。要获得这些查询的更多结果,请将 将结果导出到 BigQuery 或 Cloud Storage(使用长时间运行的版本) 共 analyzeIamPolicy 页。如需了解相关说明,请参阅将政策分析写入 BigQuery将政策分析写入 Cloud Storage

确定主账号可以访问哪些资源

您可以使用政策分析器检查主账号对组织中的哪些资源具有特定角色或权限。要获取此信息,请创建查询,其中包含要分析其权限的主账号以及要检查的一个或多个权限或角色。

控制台

  1. 在 Google Cloud 控制台中,前往政策分析器页面。

    转到“政策分析器”页面

  2. 分析政策部分,找到标有自定义查询的窗格 然后点击该窗格中的创建自定义查询

  3. 选择查询范围字段中,选择要将查询范围限定到的项目、文件夹或组织。政策分析器将分析该项目、文件夹或组织的访问权限,以及该项目、文件夹或组织中的任何资源。

  4. 选择要检查的主账号以及要检查的角色或权限:

    1. 参数 1 字段中,从下拉菜单中选择主账号
    2. 主账号字段中,开始输入用户、服务账号或群组的名称。然后,从提供的主账号列表中选择要分析其访问权限的用户、服务账号或群组。
    3. 点击 添加选择器
    4. 参数 2 字段中,选择角色权限
    5. 选择角色选择权限字段中,选择要检查的角色或权限。
    6. 可选:如需检查其他角色和权限,请继续添加角色权限选择器,直到您列出要检查的所有角色和权限。
  5. 可选:点击继续,然后选择要为此查询启用的所有高级选项

  6. 自定义查询窗格中,依次点击分析 > 运行查询。 报告页面会显示您输入的查询参数,以及指定主账号对其拥有指定角色或权限的所有资源的结果表。

    Google Cloud 控制台中的政策分析查询的运行时间最多为 1 分钟。一分钟后,Google Cloud 控制台会停止查询并显示所有可用结果。如果查询未在该时间内完成,Google Cloud 控制台会显示一条横幅,指明结果不完整。如需针对这些查询获取更多结果,请将结果导出到 BigQuery

gcloud

在使用下面的命令数据之前,请先进行以下替换:

  • RESOURCE_TYPE:类型 将搜索范围限定到的资源的名称。仅 IAM 允许政策 会进行分析。使用值 projectfolderorganization
  • RESOURCE_ID: 您要将搜索范围限定到的 Google Cloud 项目、文件夹或组织。仅限 系统会分析附加到此资源及其后代的 IAM 允许政策。 项目 ID 是字母数字字符串,例如 my-project。文件夹和组织 ID 是数字,例如 123456789012
  • PRINCIPAL:其主账号 要分析的访问权限,形式为 PRINCIPAL_TYPE:ID - 例如, user:my-user@example.com。如需查看主账号类型的完整列表,请参阅主账号标识符
  • PERMISSIONS:您要检查的权限的逗号分隔列表,例如 compute.instances.get,compute.instances.start。如果您列出多个 权限,政策分析器会检查列出的所有权限。

执行 gcloud asset analyze-iam-policy 命令:

Linux、macOS 或 Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --identity=PRINCIPAL \
    --permissions='PERMISSIONS'

Windows (PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --identity=PRINCIPAL `
    --permissions='PERMISSIONS'

Windows (cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --identity=PRINCIPAL ^
    --permissions='PERMISSIONS'

您会收到包含分析结果的 YAML 响应。每个分析结果都会列出与您的查询相关的一组访问权限、身份和资源,后跟相关的 IAM 角色绑定。如果角色绑定是条件绑定,则分析结果 还包括条件评估的结果。如果无法评估条件,则结果为 CONDITIONAL

指定主体拥有任何指定权限的资源列在响应的 resources 字段中。以下示例显示了单个分析结果,其中突出显示了 resources 字段。

...
---
ACLs:
- accesses:
  - permission: compute.instances.get
  - permission: compute.instances.start
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //compute.googleapis.com/projects/my-project/global/images/my-image
policy:
  attachedResource: //compute.googleapis.com/projects/my-project/global/images/my-image
  binding:
    members:
    - user: my-user@example.com
    role: roles/compute.admin
---
...

如果请求在查询完成之前超时,您会收到 DEADLINE_EXCEEDED 个错误。如需针对这些查询获取更多结果,请使用长时间运行的 analyze-iam-policy 版本将结果写入 BigQuery 或 Cloud Storage。如需了解相关说明,请参阅将政策分析写入 BigQuery将政策分析写入 Cloud Storage

REST

如需确定主账号可以访问哪些资源,请使用 Cloud Asset Inventory API 的 analyzeIamPolicy 方法。

在使用任何请求数据之前,请先进行以下替换:

  • RESOURCE_TYPE:您要将搜索范围限定为的资源类型。系统只会分析附加在此资源及其后代资源的 IAM 允许政策。使用值 projectsfoldersorganizations
  • RESOURCE_ID: 您要将搜索范围限定到的 Google Cloud 项目、文件夹或组织。系统只会分析附加在此资源及其后代资源的 IAM 允许政策。项目 ID 是字母数字字符串,例如 my-project。文件夹和组织 ID 是数字, 例如 123456789012
  • PRINCIPAL:您要分析其访问权限的主账号,格式为 PRINCIPAL_TYPE:ID,例如 user:my-user@example.com。如需查看主账号类型的完整列表,请参阅 主账号标识符
  • PERMISSION_1PERMISSION_2... PERMISSION_N:您要检查的权限,例如 compute.instances.get。如果您列出了多项权限,政策分析器会检查所列的任何权限。

HTTP 方法和网址:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

请求 JSON 正文:

{
  "analysisQuery": {
    "identitySelector": {
      "identity": "PRINCIPAL"
    },
    "accessSelector": {
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    }
  }
}

如需发送您的请求,请展开以下选项之一:

您会收到包含分析结果的 JSON 响应。每个分析结果都会描述一个相关的 IAM 角色绑定,然后列出该绑定中的资源、访问权限和主账号。如果角色绑定是条件式绑定,则分析结果也会包含结果 条件评估的一个部分。如果无法评估条件,结果会列为 CONDITIONAL

其中列出了指定主账号具有任何指定权限的资源 响应中的 resources 字段。以下示例显示了 并突出显示了 resources 字段。

...
{
  "attachedResourceFullName": "//compute.googleapis.com/projects/my-project/global/images/my-image",
  "iamBinding": {
    "role": "roles/compute.admin",
    "members": [
      "user:my-user@example.com"
    ]
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//compute.googleapis.com/projects/my-project/global/images/my-image"
        }
      ],
      "accesses": [
        {
          "permission": "compute.instances.get"
        },
        {
          "permission": "compute.instances.start"
        }
      ]
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

如果请求在查询完成之前超时,您会收到 DEADLINE_EXCEEDED 个错误。如需针对这些查询获取更多结果,请使用长时间运行的 analyzeIamPolicy 版本将结果写入 BigQuery 或 Cloud Storage。有关说明,请参阅 将政策分析写入 BigQuery将政策分析写入到 Cloud Storage

确定特定时间的访问权限

如果获得足够的上下文,政策分析器可以分析 IAM 条件角色绑定,这些绑定仅授予对 次。这些条件称为日期/时间条件。让 Policy Analyzer 准确分析角色绑定(含日期/时间) 则需要在请求中定义访问时间。

政策分析器还可以分析资源 条件,而无需用户进行额外输入。对于 请参阅 条件访问

gcloud

在使用下面的命令数据之前,请先进行以下替换:

  • RESOURCE_TYPE:类型 将搜索范围限定到的资源的名称。仅 IAM 允许政策 会进行分析。使用值 projectfolderorganization
  • RESOURCE_ID:要将搜索范围限定为的 Google Cloud 项目、文件夹或组织的 ID。仅限 系统会分析附加到此资源及其后代的 IAM 允许政策。 项目 ID 是字母数字字符串,例如 my-project。文件夹和组织 ID 是数字, 例如 123456789012
  • PERMISSIONS:可选。您要检查的权限的逗号分隔列表,例如 compute.instances.get,compute.instances.start。如果您列出了多项权限,政策分析器会检查所列的任何权限。
  • FULL_RESOURCE_NAME:可选。输入的资源的完整资源名称 来分析其访问权限如需查看完整资源名称格式的列表,请参阅 资源名称格式
  • PERMISSIONS:可选。您要检查的权限的逗号分隔列表,例如 compute.instances.get,compute.instances.start。如果您列出多个 权限,政策分析器会检查列出的所有权限。
  • ACCESS_TIME:您想要的时间 检查。此时间必须是将来的时间。使用 RFC 3339 格式的时间戳,例如 2099-02-01T00:00:00Z

执行 gcloud asset analyze-iam-policy 命令:

Linux、macOS 或 Cloud Shell

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \
    --identity=PRINCIPAL \
    --full-resource-name=FULL_RESOURCE_NAME \
    --permissions='PERMISSIONS' \
    --access-time=ACCESS_TIME

Windows (PowerShell)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID `
    --identity=PRINCIPAL `
    --full-resource-name=FULL_RESOURCE_NAME `
    --permissions='PERMISSIONS' `
    --access-time=ACCESS_TIME

Windows (cmd.exe)

gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^
    --identity=PRINCIPAL ^
    --full-resource-name=FULL_RESOURCE_NAME ^
    --permissions='PERMISSIONS' ^
    --access-time=ACCESS_TIME

您会收到包含分析结果的 YAML 响应。每个分析结果都会列出与您的查询相关的一组访问权限、身份和资源,后跟相关的 IAM 角色绑定。如果角色绑定是基于条件的,则分析结果还会包含条件评估结果。如果无法评估条件,则结果为 CONDITIONAL

当您在请求中添加访问时间时,Policy Analyzer 可以评估日期/时间条件。如果条件的计算结果为 false,则相应角色不会包含在响应中。如果 条件评估结果为 true,条件评估结果会列为 TRUE

...
---
ACLs:
- accesses:
  - permission: compute.instances.get
  - permission: compute.instances.start
  conditionEvaluationValue: 'TRUE'
  identities:
  - name: user:my-user@example.com
  resources:
  - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
policy:
  attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
  binding:
    condition:
      expression: request.time.getHours("America/Los_Angeles") >= 5
      title: No access before 5am PST
    members:
    - user: my-user@example.com
    role: roles/compute.admin
---
...

如果请求在查询完成之前超时,您会收到 DEADLINE_EXCEEDED 错误。如需针对这些查询获取更多结果,请使用长时间运行的 analyze-iam-policy 版本将结果写入 BigQuery 或 Cloud Storage。如需了解相关说明,请参阅将政策分析写入 BigQuery将政策分析写入 Cloud Storage

REST

如需确定哪些主账号在特定时间对资源具有特定权限,请使用 Cloud Asset Inventory API 的 analyzeIamPolicy 方法。

在使用任何请求数据之前,请先进行以下替换:

  • RESOURCE_TYPE:您要将搜索范围限定为的资源类型。系统只会分析附加在此资源及其后代资源的 IAM 允许政策。使用值 projectsfoldersorganizations
  • RESOURCE_ID: 您要将搜索范围限定到的 Google Cloud 项目、文件夹或组织。仅限 系统会分析附加到此资源及其后代的 IAM 允许政策。 项目 ID 是字母数字字符串,例如 my-project。文件夹和组织 ID 是数字,例如 123456789012
  • PERMISSION_1PERMISSION_2... PERMISSION_N:可选。您要检查的权限,例如 compute.instances.get。如果您列出了多个权限,政策分析器会检查列出的任何权限。
  • FULL_RESOURCE_NAME:可选。要分析其访问权限的资源的完整资源名称。如需查看完整资源名称格式的列表,请参阅 资源名称格式
  • PERMISSION_1, PERMISSION_2... PERMISSION_N:可选。通过 例如 compute.instances.get。如果您列出了多个权限,政策分析器会检查列出的任何权限。
  • ACCESS_TIME:您要检查的时间。此时间必须是将来的时间。时间戳使用日期 RFC 3339 格式适用于 示例 2099-02-01T00:00:00Z

HTTP 方法和网址:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy

请求 JSON 正文:

{
  "analysisQuery": {
    "identitySelector": {
      "identity": "PRINCIPAL"
    },
    "resourceSelector": {
      "fullResourceName": "FULL_RESOURCE_NAME"
    },
    "accessSelector": {
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    },
    "conditionContext": {
      "accessTime": "ACCESS_TIME"
    }
  }
}

如需发送您的请求,请展开以下选项之一:

您会收到包含分析结果的 JSON 响应。每个分析结果都会描述一个相关的 IAM 角色绑定,然后列出该绑定中的资源、访问权限和主账号。如果角色绑定是条件式绑定,则分析结果也会包含结果 条件评估的一个部分。如果无法评估条件,结果会列为 CONDITIONAL

当您在请求中添加访问时间时,Policy Analyzer 可以评估日期/时间条件。如果条件的计算结果为 false,则相应角色不会包含在响应中。如果 条件的评估结果为 true,分析响应中的条件评估值为 TRUE

...
{
  "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project",
  "iamBinding": {
    "role": "roles/compute.admin",
    "members": [
      "user:my-user@example.com"
    ],
    "condition": {
      "expression": "request.time.getHours(\"America/Los_Angeles\") \u003e= 5",
      "title": "No access before 5am PST"
    }
  },
  "accessControlLists": [
    {
      "resources": [
        {
          "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
        }
      ],
      "accesses": [
        {
          "permission": "compute.instances.get"
        },
        {
          "permission": "compute.instances.start"
        }
      ],
      "conditionEvaluation": {
        "evaluationValue": "TRUE"
      }
    }
  ],
  "identityList": {
    "identities": [
      {
        "name": "user:my-user@example.com"
      }
    ]
  },
  "fullyExplored": true
},
...

如果请求在查询完成之前超时,您会收到 DEADLINE_EXCEEDED 错误。要获得这些查询的更多结果,请将 将结果导出到 BigQuery 或 Cloud Storage(使用长时间运行的版本) 共 analyzeIamPolicy 页。有关说明,请参阅 将政策分析写入 BigQuery将政策分析写入到 Cloud Storage

启用选项

您可以启用以下选项,以接收更详细的查询结果。

控制台

选项 说明
列出与查询匹配的资源内的资源 如果您启用此选项,则查询结果会为查询结果中的任何父级资源(项目、文件夹和组织)列出最多 1,000 个相关的子孙资源
列出群组内的单个用户

如果启用此选项,查询结果中的所有组都会扩展为 个别成员。如果您有足够的群组权限,则嵌套群组会 也应展开此扩展功能的每组成员数量上限为 1,000 人。

只有当您未在查询中指定主账号时,此选项才可用。

列出角色内的权限

如果启用此选项,查询结果会列出每个 以及角色本身的权限

此选项仅在您未指定任何权限或 查询所需的角色

gcloud

本部分介绍了在使用 gcloud CLI 分析许可政策时可以添加的几个常见标志。如需查看完整的选项列表,请参阅可选标志

标志 说明
--analyze-service-account-impersonation

如果启用此选项,政策分析器会运行其他分析 来决定谁可以模拟 对指定资源拥有指定访问权限。政策分析器会针对查询结果中的每个服务账号运行一个查询。这些查询会分析哪些人对服务账号拥有以下任一权限:

  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.getAccessToken
  • iam.serviceAccounts.getOpenIdToken
  • iam.serviceAccounts.implicitDelegation
  • iam.serviceAccounts.signBlob
  • iam.serviceAccounts.signJwt

这项操作的开销非常大,因为它会自动执行许多查询。我们强烈建议您 导出 BigQuery导出 Cloud Storage analyze-iam-policy-longrunning,而不是使用 analyze-iam-policy

--expand-groups

如果您启用此选项,查询结果中的所有群组都会展开为各个成员。如果您有足够的群组权限,则嵌套群组会 也应展开此扩展功能的每组成员数量上限为 1,000 人。

只有当您未在查询中指定主体时,此选项才有效。

--expand-resources 启用此选项后,查询结果列表最多显示 1,000 个相关后代 resources(针对任何父级资源(项目、文件夹和 组织)。
--expand-roles

如果您启用此选项,查询结果中除了角色本身之外,还会列出每个角色内的所有权限。

此选项仅在您未指定任何权限或 查询所需的角色

--output-group-edges 如果启用此选项,查询结果会输出相关成员资格 群体之间的关系。
--output-resource-edges 如果您启用此选项,查询结果会输出相关父级/子级 资源之间的关系。

REST

如需启用任何选项,请先向分析查询添加 options 字段。例如:

{
  "analysisQuery": {
    "resourceSelector": {
      "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project"
    },
    "accessSelector": {
      "permissions": [
        "iam.roles.get",
        "iam.roles.list"
      ]
   },
   "options": {
     OPTIONS
   }
  }
}

OPTIONS 替换为您要 采用 "OPTION": true 格式。下表 介绍可用的选项:

选项 说明
analyzeServiceAccountImpersonation

如果启用此选项,政策分析器会运行其他分析 来决定谁可以模拟 对指定资源拥有指定访问权限。政策分析器会针对查询结果中的每个服务账号运行一个查询。这些查询会分析哪些人对服务账号拥有以下任一权限:

  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.getAccessToken
  • iam.serviceAccounts.getOpenIdToken
  • iam.serviceAccounts.implicitDelegation
  • iam.serviceAccounts.signBlob
  • iam.serviceAccounts.signJwt

这项操作的开销非常大,因为它会自动执行许多查询。我们强烈建议您 导出 BigQuery导出 Cloud Storage AnalyzeIamPolicyLongrunning,而不是使用 AnalyzeIamPolicy

expandGroups

如果启用此选项,查询结果中的所有组都会扩展为 个别成员。如果您有足够的群组权限,则嵌套群组会 也应展开此扩展功能的每组成员数量上限为 1,000 人。

只有当您未在查询中指定主体时,此选项才有效。

expandResources 如果您启用此选项,则查询结果会为查询结果中的任何父级资源(项目、文件夹和组织)列出最多 1,000 个相关的子孙资源
expandRoles

如果启用此选项,查询结果会列出每个 以及角色本身的权限

此选项仅在您未指定任何权限或 查询所需的角色

outputGroupEdges 如果启用此选项,查询结果会输出相关成员资格 群体之间的关系。
outputResourceEdges 如果您启用此选项,查询结果会输出资源之间的相关父/子关系。

后续步骤