IAM 政策的政策分析器

借助 Policy Analyzer,您可以根据IAM 允许政策,确定哪些主账号(例如用户、服务账号、群组和网域)对哪些 Google Cloud 资源拥有什么访问权限。

Policy Analyzer 可以帮助您回答如下问题:

  • 谁可以访问此 IAM 服务账号?
  • 谁可以读取此包含个人身份信息 (PII) 的 BigQuery 数据集中的数据?
  • dev-testers 群组对此项目中的任意资源拥有什么角色和权限?
  • Tal 可以在项目 A 中删除哪些 Compute Engine 虚拟机 (VM) 实例?
  • 哪些人可以访问晚上 7 点的此 Cloud Storage 存储桶?

Policy Analyzer 的工作原理

如需使用政策分析器,请创建分析查询,指定 然后运行查询。

分析查询

如需使用政策分析器,您需要创建一个分析查询,并指定一个或多个 以下字段之一:

  • 主账号:这些身份(例如用户、服务账号、群组、 和域)
  • 访问权限:要检查的权限和角色
  • 资源:要检查是否有权访问的资源
  • (仅限 API)条件情境:您希望在哪种情境(例如时间)下检查访问权限

通常,您会在分析查询中指定其中一个或两个字段,然后使用查询结果来获取有关您未指定的字段的更多信息。例如,如果您想知道谁对某个资源拥有某项权限,则需要在分析查询中指定访问权限和资源,但不需要指定主账号。

如需查看更多可创建的查询类型示例,请参阅常见的查询类型

分析范围

要运行分析查询,您需要指定范围, 分析。范围是您要将分析范围限定在其中的组织、文件夹或项目。系统只会分析附加到用作范围的资源及其后代资源的 IAM 允许政策。

在 REST API 和 gcloud CLI 中,您可以手动指定范围。在 Google Cloud 控制台中,系统会根据您当前管理的项目、文件夹或组织自动确定范围。

创建分析查询并指定范围后,您可以运行查询来分析该范围内的政策。

查询结果

运行分析查询时,政策分析器会报告所有角色 绑定,其中包含您的主账号、访问权限和资源, 。对于每个角色绑定,该报告会报告绑定中的主账号、绑定授予的访问权限(角色和权限),以及绑定授予访问权限的资源。

您可以查看这些结果,更好地了解在项目中的访问权限, 文件夹或组织例如,如果您运行查询以了解哪些主账号有权访问特定资源,则需要查看查询结果中的主账号。

您可以通过启用查询 选项

支持的政策类型

IAM 政策分析器仅支持 IAM 允许 政策

政策分析器不支持以下形式的访问权限控制:

政策分析器查询结果未考虑不受支持的政策类型。例如,假设某个用户因允许政策而拥有对项目的 iam.roles.get 权限,但因拒绝政策而无法使用该权限。尽管存在拒绝政策,Policy Analyzer 仍会报告它们具有 iam.roles.get 权限。

政策继承

为了考虑政策继承,政策分析器会自动分析指定范围内的所有相关允许政策,无论这些政策在资源层次结构中的什么位置。

例如,假设您正在尝试了解谁可以访问某个 IAM 服务账号:

  • 如果您将查询范围限定为项目,政策分析器会分析 服务账号的允许政策和项目的允许政策。
  • 如果您将查询范围限定为组织,政策分析器会分析 服务账号的政策,拥有该服务账号的项目的允许政策 服务账号、包含该项目的所有文件夹的允许政策,以及 组织的允许政策

条件访问

如果角色绑定具有条件,则只有在满足该条件时,才会向主账号授予访问权限。政策分析器始终会报告附加到相关角色绑定的条件。相关角色绑定是指包含您在分析查询中指定的主账号、访问权限和资源的角色绑定。

在某些情况下,政策分析器还可以分析条件,也就是说,它可以报告是否会满足相应条件。政策分析器可以分析 以下类型的条件:

如果相关角色绑定包含条件,政策分析器会执行以下其中一项操作: 以下:

  • 如果政策分析器可以分析条件,则会执行以下操作之一:

    • 如果条件的计算结果为 true,Policy Analyzer 会在查询结果中包含角色绑定,并将条件评估标记为 TRUE
    • 如果条件的评估结果为 false,政策分析器不会在查询结果中包含该角色。
  • 如果政策分析器无法分析相关角色绑定的条件, 它在查询结果中包含角色,并标记了条件评估 名称:CONDITIONAL

数据新鲜度

政策分析器使用 Cloud Asset API,该 API 会尽力确保数据的新鲜度。虽然几乎所有政策更新都会在几分钟内显示在 Policy Analyzer 中,但 Policy Analyzer 可能不会包含最新的政策更新。

常见查询类型

本部分介绍了如何使用分析查询来 与访问权限相关的问题。

哪些主账号可以访问此资源?

如需确定哪些主账号可以访问某个资源,请创建一个分析查询,其中指定要检查的资源以及(可选)要检查的角色和权限。

这些查询可帮助您回答如下问题:

  • 谁有权访问此 IAM 服务账号?
  • 谁有权模拟此 IAM 服务 ?
  • 谁是项目 A 的结算管理员?
  • (仅限 API 和 gcloud CLI):谁可以通过模拟服务账号来更新项目 A?

如需了解如何创建和发送这些查询,请参阅确定哪些主账号 可以访问资源

哪些主账号拥有这些角色和权限?

如需确定哪些主账号具有特定角色和权限,请创建 指定正文及一组角色和权限的分析查询 检查项目

这些查询可以帮助您回答诸如以下问题:

  • 谁有权模拟我组织中的服务账号?
  • 谁是我所在组织的结算管理员?
  • 谁可以读取此包含个人身份信息 (PII) 的 BigQuery 数据集中的数据?
  • (仅限 API 和 gcloud CLI):在我的组织中,谁可以通过模拟服务账号来读取 BigQuery 数据集?

如需了解如何创建和发送这些查询,请参阅确定哪些主账号具有特定角色或权限

此主账号对此资源拥有哪些角色和权限?

如需确定主账号对特定资源拥有哪些角色和权限,请创建分析查询,其中指定主账号以及您要检查其权限的资源。

这些查询可帮助您回答如下问题:

  • 用户 Sasha 在这方面拥有哪些角色和权限 BigQuery 数据集?
  • dev-testers 群组对此项目中的任意资源拥有什么角色和权限?
  • (仅限 API 和 gcloud CLI):如果用户 Dana 模拟服务账号,那么 Dana 对此 BigQuery 数据集拥有什么角色和权限?

如需了解如何创建和发送这些查询,请参阅确定主账号对资源的访问权限

此主账号可以访问哪些资源?

如需确定特定主账号可以访问的资源,请创建分析 指定主账号以及您希望授予的 检查。

这些查询可帮助您回答如下问题:

  • 用户 Mahan 有权读取哪些 BigQuery 数据集?
  • dev-testers 组是哪些 BigQuery 数据集的数据所有者?
  • Tal 可以删除项目 A 中的哪些虚拟机?
  • (仅限 API 和 gcloud CLI):用户 John 可以通过模拟服务账号删除哪些虚拟机?

如需了解如何创建和发送这些查询,请参阅确定主体可以访问哪些资源

已保存的分析查询

如果您使用的是 REST API,则可以保存分析查询以供重复使用或与他人共享。您可以像运行任何其他查询一样运行已保存的查询。

如需详细了解如何保存查询,请参阅管理已保存的查询

导出查询结果

您可以异步运行查询,并将查询结果导出到 BigQuery 或 Cloud Storage analyzeIamPolicyLongrunning

如需了解如何将查询结果导出到 BigQuery,请参阅写入 BigQuery 政策分析

如需了解如何将查询结果导出到 Cloud Storage,请参阅将政策分析写入 Cloud Storage

查询选项

政策分析器提供了多种选项,可为您的查询添加更多详细信息 结果。

如需了解如何启用这些选项,请参阅启用选项

群组展开

如果您启用群组展开功能,则查询结果中的所有群组都会展开为各个成员。此扩展功能的每组成员数量上限为 1,000 人。如果您有 足够的群组权限,嵌套群组也会展开。只有当您未在查询中指定主账号时,此选项才有效。

例如,假设您为查询“谁拥有 是否针对 project-1 授予了 storage.buckets.delete 权限?”如果政策分析器找到 任何具有 storage.buckets.delete 权限的群组,查询结果 将列出群组标识符,还会列出 。

通过此选项,您可以了解各个用户的即使该访问权限是 是由于他们在群组中的成员资格而产生的

角色展开

如果您启用角色展开,除了角色本身之外,查询结果还会列出每个角色中的所有权限。只有当您 在查询中指定任何权限或角色。

例如,假设您为查询“my-user@example.com 对存储桶 bucket-1 有何访问权限?”启用了角色扩展。如果政策分析器找到了任何可向 my-user@example.com 授予对 bucket-1 的访问权限的角色,查询结果不仅会列出角色名称,还会列出该角色包含的所有权限。

通过此选项,您可以确切了解您的主账号拥有哪些权限。

资源扩展

如果您为政策分析器查询启用资源展开,则查询结果会列出查询结果中任何父级资源(项目、文件夹和组织)的所有相关子资源。对于政策分析器查询,此扩展的父级资源上限为 1,000 个资源;对于长时间运行的政策分析器查询,此扩展的父级资源上限为 10 万个资源。

例如,请考虑资源扩展会对以下查询产生怎样的影响:

  • 谁对“project-1”拥有 storage.buckets.delete 权限?

    如果您为此查询启用资源扩展功能,则查询中的资源部分 查询结果不仅会列出项目,还会列出所有存储分区 内部 IP 地址

  • my-user@example.com有哪些资源 开启compute.instances.setIamPolicy权限?

    如果您为此查询启用资源展开,并且政策分析器发现 my-user@example.com 具有包含该权限的项目级角色,则查询结果的“资源”部分将不仅列出项目,还会列出项目中的所有 Compute Engine 实例。

通过此选项,您可以详细了解 所有主账号的访问权限

服务账号模拟

如果您使用的是 REST API 或 gcloud CLI,则可以启用分析功能 服务账号模拟

如果启用此选项,政策分析器会运行其他分析查询,以确定哪些用户可以冒充对指定资源具有指定访问权限的服务账号。政策分析器会针对查询结果中的每个服务账号运行一个查询。这些查询会分析 对服务账号的以下权限:

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

配额和限制

Cloud Asset Inventory 根据使用方项目对传入请求(包括政策分析请求)速率施加限制。Cloud Asset Inventory 还会限制组成员资格中的组扩展,以及资源层次结构中的资源扩展。

如需查看 Policy Analyzer 的默认配额和限制,请参阅配额和 限制

价格

每个组织每天最多可以免费执行 20 次分析查询。此限制同时适用于允许政策分析和组织政策分析。

如果您要执行 20 项以上的分析 查询数量,则必须在组织级别激活了付费服务 Security Command Center 层级。如需了解详情,请参阅结算问题

后续步骤