借助 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 服务账号:
- 如果您将查询范围限定为项目,政策分析器会分析 服务账号的允许政策和项目的允许政策。
- 如果您将查询范围限定为组织,政策分析器会分析 服务账号的政策,拥有该服务账号的项目的允许政策 服务账号、包含该项目的所有文件夹的允许政策,以及 组织的允许政策
条件访问
如果角色绑定具有条件,则只有在满足该条件时,才会向主账号授予访问权限。政策分析器始终会报告附加到相关角色绑定的条件。相关角色绑定是指包含您在分析查询中指定的主账号、访问权限和资源的角色绑定。
在某些情况下,政策分析器还可以分析条件,也就是说,它可以报告是否会满足相应条件。政策分析器可以分析 以下类型的条件:
- 基于资源属性的条件,适用于提供资源名称的资源类型。
- 日期/时间条件(仅限 API 和 gcloud CLI)。为使政策分析器分析这些条件,您需要
分析查询中的访问时间 (
accessTime
)。要了解如何 请参阅确定 时间。
如果相关角色绑定包含条件,政策分析器会执行以下其中一项操作: 以下:
如果政策分析器可以分析条件,则会执行以下操作之一:
- 如果条件的计算结果为 true,Policy Analyzer 会在查询结果中包含角色绑定,并将条件评估标记为
TRUE
。 - 如果条件的评估结果为 false,政策分析器不会在查询结果中包含该角色。
- 如果条件的计算结果为 true,Policy Analyzer 会在查询结果中包含角色绑定,并将条件评估标记为
如果政策分析器无法分析相关角色绑定的条件, 它在查询结果中包含角色,并标记了条件评估 名称:
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 层级。如需了解详情,请参阅结算问题。
后续步骤
- 了解如何使用政策分析器分析允许 政策。
- 了解如何使用 REST API 保存 Policy Analysis 查询。