政策模拟器

通过政策模拟器,您可以先了解 IAM 政策变更对成员的访问权限可能有何影响,然后再决定是否进行更改。您可以使用政策模拟器来确保所做的更改不会导致成员失去所需的访问权限。

政策模拟器的工作原理

政策模拟器可帮助您确定政策更改可能会对用户产生的影响。为此,我们不仅会比较当前政策和建议政策的权限。相反,它会根据访问日志来关注权限变更会对用户产生实际影响。

如需了解 IAM 政策更改可能如何影响成员的访问权限,政策模拟器会确定过去 90 天内哪些访问尝试与建议的政策和当前政策具有不同的结果。然后,它会将这些结果作为访问权限更改列表进行报告。

模拟 IAM 政策更改时,您可以为自己建议提供要测试的政策。此提议政策适用于任何接受 IAM 政策的资源

运行模拟时,政策模拟器会执行以下操作:

  1. 检索过去 90 天内受支持的资源类型的访问日志。这些日志的收集来源取决于您要模拟其 IAM 政策的资源:

    • 如果要模拟项目或组织的政策,政策模拟器会检索该项目或组织的访问日志。
    • 如果要模拟其他类型的资源政策,政策模拟器将检索该资源的父级项目或组织的访问日志。
    • 如果您同时模拟多个资源的政策,政策模拟器将检索资源最近的最常见项目或组织的访问日志。

    如果父资源不存在 90 天,则政策模拟器检索自资源创建以来的所有访问尝试。

  2. 使用当前的 IAM 政策重新评估或重播访问尝试,并考虑到所有继承政策和任何政策对子级资源进行设置。

    使用当前政策进行重放访问可确保政策模拟器仅报告由建议政策引发的更改,且不报告您已对其他政策修改的结果进行的更改在过去 90 天内做出的贡献。

  3. 使用建议的 IAM 政策再次重放访问尝试,在考虑继承政策及为子级资源设置的所有政策后,再执行一次重试操作。

  4. 比较两个重放的结果并报告差异,后者将显示建议的更改如何影响成员访问权限。

示例:测试政策变更

假设您想要移除用户的 Organization Viewer 角色 (roles/resourcemanager.organizationViewer)。您想使用政策模拟器来确认此更改不会影响用户的访问权限。

您可以使用 Cloud Console、REST API 或 gcloud 命令行工具模拟政策更改

开始模拟时,政策模拟器会执行以下操作:

  • 检索过去 90 天内的组织访问日志。
  • 使用组织当前的政策(在其中具有 Editor 角色)重放访问尝试。
  • 使用建议的政策(其中用户具有 App Engine Admin 角色)重放访问尝试。
  • 比较两个重放的结果,并报告它们之间的差异。

然后,您可以查看结果以了解建议的更改如何影响用户的访问权限。

示例:政策沿用

假设您要模拟具有以下结构的文件夹中的文件夹 Engineering 的 IAM 政策更改:

组织结构示例

请注意,Engineering 有一个父级资源(即 example.com,父级资源)继承了 IAM 政策。它还有三个子项目,这些项目具有自己的 IAM 政策:example-prodexample-devexample-test

您可以提供一个提议的政策,然后运行模拟。当您开始模拟时,政策模拟器会执行以下操作:

  • 检索过去 90 天内的所有相关日志。由于 Engineering 是一个文件夹,因此政策模拟器会从其父级组织 example.com 检索日志。
  • 使用文件夹的当前政策、从 example.com 继承的政策以及子项目的政策重放访问尝试。
  • 使用建议的政策、从 example.com 继承的政策以及子项目的政策再次重试访问尝试。
  • 比较各重放的结果并报告它们之间的差异。

然后,您可以查看结果以了解建议的更改如何影响用户的访问权限。

查看政策模拟器结果

政策模拟器将建议的更改变更列表作为访问权限更改列表报告。访问权限更改表示过去 90 天内的访问尝试次数,该结果会导致更改政策低于当前政策。

政策模拟器还列出了模拟期间发生的所有错误,从而帮助您识别模拟中的潜在差距。

访问权限有以下几种类型:

访问权限变更 详细信息
访问权限已被撤消 该成员根据当前政策拥有访问权限,但在建议更改之后,您将无法再进行访问。
访问权限可能已被撤消

出现此结果的原因如下:

  • 该成员当前政策拥有访问权限,但其在建议政策下的访问权限为未知
  • 当前政策中成员的访问权限为未知,但在建议更改后,他们无权访问。
已获得访问权限 该成员无权使用当前政策,但在建议进行更改后可进行访问。
可能已获得访问权限

出现此结果的原因如下:

  • 该成员没有在当前政策下进行访问,但在其建议的更改之后的访问是未知
  • 当前政策中成员的访问权限为未知,但在建议进行更改后,这些成员将具有访问权限。
访问权限未知 当前政策和建议的政策下的成员访问权限是未知的,并且建议的更改可能会影响成员的访问权限。
错误 模拟过程中发生错误。

未知结果

如果访问结果为未知,则表示政策模拟器没有足够的信息来全面评估访问尝试。

导致结果未知的原因有多种:

  • 角色信息遭拒:运行模拟的成员无权查看正在模拟的一个或多个角色的角色详细信息。
  • 无法访问政策:运行模拟的成员无权获取模拟中涉及的一个或多个资源的 IAM 政策。
  • 成员资格信息遭拒:运行模拟的成员无权查看模拟政策中包含的一个或多个组的成员。
  • 不支持的条件:正在测试的政策中有一个条件角色绑定。政策模拟器不支持条件,因此无法评估绑定。

如果访问结果未知,政策模拟器结果会报告未知原因,以及无法访问或评估的特定角色、政策、成员信息和条件。

错误

政策模拟器还会报告模拟期间发生的任何错误。请务必查看这些错误,了解模拟中的潜在差距。

政策模拟器可能会报告多种类型的错误:

  • 操作错误:无法运行模拟。

    如果错误消息指出项目或组织中包含过多日志,导致无法运行模拟,则无法对资源运行模拟。

    如果您出于其他原因遇到此错误,请尝试重新运行模拟。如果仍无法运行模拟,请发送电子邮件至 policy-simulator-feedback@google.com。

  • 重放错误:单次访问尝试重放失败,因此政策模拟器无法确定访问尝试的结果是否会在建议政策下发生变化。

  • 不受支持的资源类型错误:提议的政策会影响与不受支持的资源类型相关联的权限,政策模拟器无法模拟这种权限。政策模拟器会在模拟结果中列出这些权限,以便您了解它无法模拟的权限。

日志重放大小上限

模拟可重放的最大访问日志数量为 1000。如果您的项目或组织在过去 90 天内的访问权限超过 1000,则模拟将失败。

要了解政策模拟器如何确定要检索的访问日志,请参阅本页中的政策模拟器的工作原理

资源类型的支持级别

政策模拟器不支持模拟中的所有资源类型。这会影响能够模拟的权限更改。

支持的资源类型

政策模拟器支持以下资源类型:

服务 支持的资源类型
Cloud Storage
  • buckets
Pub/Sub
  • snapshots
  • subscriptions
  • topics
Cloud SQL
  • backupRuns
  • databases
  • instances
  • sslCerts
  • users
Cloud Spanner
  • backups
  • backupOperations
  • databases
  • databaseOperations
  • instanceConfigs
  • instanceOperations
  • instances
  • sessions
Resource Manager
  • folders
  • organizations
  • projects
Compute Engine
  • instances

不支持的资源类型

不受支持的资源类型是政策模拟器无法检索访问日志的资源类型。如果政策模拟器无法检索资源的访问日志,则无法评估建议的政策如何影响这些访问尝试。

如果一项提议的政策更改涉及不受支持的资源类型的权限,则政策模拟器会在模拟结果中列出这些权限,以便您了解它无法模拟的权限。例如,政策模拟器不支持 AI Platform 模型。因此,如果一项政策移除的具有 aiplatform.models.list 权限的角色,则该模拟状态的结果是无法模拟 aiplatform.models.list 权限的结果。

后续步骤