分析 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 项目、文件夹或组织。仅限 系统会分析附加到此资源及其后代的 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 个错误。要获得这些查询的更多结果,请将 将结果导出到 BigQuery 或 Cloud Storage(使用长时间运行的版本) 共 analyzeIamPolicy 页。有关说明,请参阅 将政策分析写入 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 控制台中的政策分析查询最长运行一分钟。更新后 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 控制台中,前往 Policy Analyzer 页面。

    转到“政策分析器”页面

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

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

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

    1. 参数 1 字段中,从下拉菜单中选择资源
    2. 资源字段中,输入要分析其访问权限的资源的完整资源名称。如果您不知道完整资源名称,请输入资源的显示名,然后从提供的资源列表中选择该资源。
    3. 点击 添加选择器
    4. 参数 2 字段中,从下拉菜单中选择主账号
    5. 主账号字段中,开始输入用户、服务账号或群组的名称。然后,从提供的主账号列表中选择要分析其访问权限的用户、服务账号或群组。
  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: 您要分析其访问权限的资源的完整资源名称。如需查看完整列表 资源名称格式,请参阅资源名称 格式
  • 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 个错误。要获得这些查询的更多结果,请将 将结果导出到 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
  • 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 控制台中,前往 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
  • PRINCIPAL:其主账号 要分析的访问权限,形式为 PRINCIPAL_TYPE:ID - 例如, user:my-user@example.com.如需查看主账号类型的完整列表,请参阅 主账号标识符
  • 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 \
    --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 个错误。要获得这些查询的更多结果,请将 将结果导出到 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
  • PRINCIPAL:其主账号 要分析的访问权限,形式为 PRINCIPAL_TYPE:ID - 例如, user:my-user@example.com.如需查看主账号类型的完整列表,请参阅 主账号标识符
  • PERMISSION_1, PERMISSION_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 个错误。要获得这些查询的更多结果,请将 将结果导出到 BigQuery 或 Cloud Storage(使用长时间运行的版本) 共 analyzeIamPolicy 页。有关说明,请参阅 将政策分析写入 BigQuery将政策分析写入到 Cloud Storage

确定特定时间的访问权限

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

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

gcloud

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

  • RESOURCE_TYPE:类型 将搜索范围限定到的资源的名称。仅 IAM 允许政策 会分析附加到此资源及其后代的资源。使用值 projectfolderorganization
  • RESOURCE_ID: 您要将搜索范围限定到的 Google Cloud 项目、文件夹或组织。仅限 系统会分析附加到此资源及其后代的 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

如果您在请求中包含访问时间,政策分析器可以评估日期/时间 conditions.如果条件结果为 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 个错误。要获得这些查询的更多结果,请将 将结果导出到 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
  • PERMISSION_1, PERMISSION_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.

如果您在请求中包含访问时间,政策分析器可以评估日期/时间 conditions.如果条件结果为 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 个相关后代 resources(针对任何父级资源(项目、文件夹和 组织)。
列出群组内的单个用户

如果启用此选项,查询结果中的所有组都会扩展为 个别成员。如果您有足够的群组权限,则嵌套群组会 也应展开此扩展的上限为 每个群组 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 个相关后代 resources(针对任何父级资源(项目、文件夹和 组织)。
expandRoles

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

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

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

后续步骤