在试运行模式下创建组织政策

本页面介绍了如何在试运行模式下使用组织政策来监控 政策变更在实施之前对您的工作流程有何影响。

试运行模式下的组织政策的创建和实施方式类似于 系统会对其他组织政策和政策违规行为进行审核,但 而不会拒绝违规操作

准备工作

如需在试运行模式下使用组织政策,您必须为 Google Cloud 项目。有关检查是否已启用结算功能的信息 请参阅验证项目的结算状态

如需详细了解什么是组织政策和限制条件 请参阅组织政策服务简介

所需的角色

如需获取管理组织政策所需的权限, 请让管理员向您授予 Organization Policy Administrator (roles/orgpolicy.policyAdmin) IAM 角色。 如需详细了解如何授予角色,请参阅管理访问权限

此预定义角色包含 管理组织政策所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需管理组织政策,您必须拥有以下权限:

  • orgpolicy.constraints.list
  • orgpolicy.policies.create
  • orgpolicy.policies.delete
  • orgpolicy.policies.list
  • orgpolicy.policies.update
  • orgpolicy.policy.get
  • orgpolicy.policy.set

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

限制

唯一可在试运行中使用的组织政策限制条件 组织政策是:

尝试使用任何其他命令在试运行模式下创建组织政策 都会导致错误。

在试运行模式下创建组织政策

列表限制条件

您可以在试运行模式下为列表限制条件创建组织政策 使用 Google Cloud 控制台或 Google Cloud CLI以下示例 演示了如何在试运行模式下创建组织政策,以审核 gcp.restrictServiceUsage 列表限制条件的影响。

控制台

  1. 在 Google Cloud 控制台中,转到组织政策页面。

    转到“组织政策”

  2. 从项目选择器中,选择您要设置的资源 组织政策

  3. 从列表中选择 Restrict Resource Service Usage 限制条件 (在组织政策页面上)。

  4. 选择试运行标签页。

  5. 点击管理试运行政策

  6. 修改试运行政策页面上,选择覆盖父资源的政策

  7. 强制执行政策下,点击替换

  8. 点击添加规则

  9. 政策值中,选择自定义

  10. 政策类型中,选择拒绝

  11. 自定义值框中,输入 compute.googleapis.com,然后 点击完成

  12. 如果这是自定义限制条件,您可以点击测试更改 模拟此组织政策的影响。如需更多信息 请参阅使用 Policy Simulator 测试组织政策更改

  13. 如需在试运行模式下强制执行组织政策,请点击 设置试运行政策。您还可以通过点击 设置政策

如需在试运行模式下验证组织政策的状态,请执行以下操作: 转到组织政策限制条件的试运行标签页。

对于将试运行模式下的组织政策应用于的项目 您可以点击查看拒绝日志来查看审核日志。对于 那么审核日志会显示违规问题,如同 强制执行限制资源服务使用量限制条件,以拒绝 compute.googleapis.com.

gcloud

如需在试运行模式下创建组织政策,请创建一个 使用 dryRunSpec 定义限制条件。例如:

  name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.restrictServiceUsage
  dryRunSpec:
    rules:
      values:
        denied_values:
        - compute.googleapis.com

替换以下内容:

  • RESOURCE_TYPEorganizationsfolders、 或 projects

  • RESOURCE_ID 替换为您的组织 ID,文件夹 ID、项目 ID 或项目编号,具体取决于资源类型 在 RESOURCE_TYPE 中指定。

此组织政策不会强制执行gcp.restrictServiceUsage 限制条件,但审核日志会显示违规行为,就像显示违规一样。

您可以设置实时组织政策和试运行组织政策 。specdryRunSpec例如:

name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.restrictServiceUsage
spec:
  rules:
  - values:
    allowedValues:
    - container.googleapis.com

dryRunSpec:
  rules:
    values:
      allowedValues:
      - compute.googleapis.com
      - appengine.googleapis.com

如需在试运行模式下强制执行组织政策,请使用 org-policies set policy 命令。更新现有组织政策 在具有新约束条件的试运行模式下,请使用 --update-mask 标志。例如:

gcloud org-policies set-policy POLICY_PATH \
  --update-mask=UPDATE_MASK

替换以下内容:

  • POLICY_PATH 替换为您的 组织政策 YAML 文件

  • UPDATE_MASKspec 搭配使用,以便仅更新 当前政策,或 dryRunSpec 以仅在 测试模式。您还可以使用 * 更新 specdryRunSpec 字段。如果在更新现有数据时未设置此字段, 组织政策,则此命令会导致错误,并且 组织政策将不会更新。

您可以使用以下命令验证是否设置了试运行模式下的组织政策 org-policies describe 命令。只有在以下情况下,系统才会显示 dryRunSpec 字段: 它存在于组织政策中

上述组织政策将强制执行gcp.restrictServiceUsage 约束条件,仅允许 container.googleapis.com。不过, 审核日志会显示 compute.googleapis.comappengine.googleapis.com

布尔值限制条件

您可以在试运行模式下为布尔值限制条件创建组织政策 使用 Google Cloud 控制台或 Google Cloud CLI以下示例 演示了如何在试运行模式下创建组织政策,以审核 布尔值自定义组织政策的效果。

控制台

  1. 在 Google Cloud 控制台中,转到组织政策页面。

    转到“组织政策”

  2. 从项目选择器中,选择您要设置的资源 组织政策

  3. 从列表中选择要强制执行的自定义组织政策 (在组织政策页面上)。

  4. 选择试运行标签页。

  5. 点击管理试运行政策

  6. 修改试运行政策页面上,选择覆盖父资源的政策

  7. 点击添加规则

  8. 强制执行下,选择开启,然后点击完成

  9. 如需在试运行模式下强制执行组织政策,请点击 设置试运行政策。验证该项目中的组织政策 试运行模式会按预期运行,您可以点击 设置政策

如需在试运行模式下验证组织政策的状态,请执行以下操作: 转到组织政策限制条件的试运行标签页。

对于将试运行模式下的组织政策应用于的项目 您可以点击查看拒绝日志来查看审核日志。对于 那么审核日志会显示违规问题,如同 会强制执行自定义组织政策。

gcloud

如需在试运行模式下创建组织政策,请创建一个 使用 dryRunSpec 定义限制条件。例如:

  name: RESOURCE_TYPE/RESOURCE_ID/policies/CONSTRAINT_NAME
  dryRunSpec:
    rules:
    - enforce: true

替换以下内容:

  • RESOURCE_TYPEorganizationsfolders、 或 projects

  • RESOURCE_ID 替换为您的组织 ID,文件夹 ID、项目 ID 或项目编号,具体取决于资源类型 在 RESOURCE_TYPE 中指定。

  • CONSTRAINT_NAME 替换为您的自定义名称 限制条件。例如 custom.disableGkeAutoUpgrade

此组织政策不会强制执行自定义限制条件,但 审核日志会像显示一样显示违规问题。

您可以在 同一 YAML 文件中的试运行模式(如果您同时定义了 specdryRunSpec.例如:

name: RESOURCE_TYPE/RESOURCE_ID/policies/CONSTRAINT_NAME
spec:
  rules:
  - enforce: false

dryRunSpec:
  rules:
  - enforce: true

如需在试运行模式下强制执行组织政策,请使用 org-policies set policy 命令。更新现有组织政策 在具有新约束条件的试运行模式下,请使用 --update-mask 标志。例如:

gcloud org-policies set-policy POLICY_PATH \
  --update-mask=UPDATE_MASK

替换以下内容:

  • POLICY_PATH 替换为您的 组织政策 YAML 文件

  • UPDATE_MASKspec 搭配使用,以便仅更新 当前政策,或 dryRunSpec 以仅在 测试模式。您还可以使用 * 更新 specdryRunSpec 字段。如果在更新现有数据时未设置此字段, 组织政策,则此命令会导致错误,并且 组织政策将不会更新。

您可以使用以下命令验证是否设置了试运行模式下的组织政策 org-policies describe 命令。只有在以下情况下,系统才会显示 dryRunSpec 字段: 它存在于组织政策中

此组织政策不强制执行自定义限制条件。 不过,审核日志会显示自定义限制条件的违规行为。

根据现行政策在试运行模式下创建组织政策

您可以基于现有组织政策创建 处于试运行模式下的组织政策。你可能需要执行此操作 更改现有政策会对环境产生怎样的影响。

您可以基于现有的政策在试运行模式下创建组织政策, 使用 Google Cloud 控制台或 Google Cloud CLI 管理政策。

控制台

  1. 在 Google Cloud 控制台中,转到组织政策页面。

    转到“组织政策”

  2. 从项目选择器中,选择已具有 针对该服务配置的限制资源服务使用情况限制条件。

  3. 从列表中选择 Restrict Resource Service Usage 限制条件 (在组织政策页面上)。

  4. 选择直播标签页。

  5. 点击管理政策

  6. 点击添加规则

  7. 政策值中,选择自定义

  8. 政策类型中,选择拒绝

  9. 自定义值框中,输入 appengine.googleapis.com

  10. 点击完成,然后点击设置试运行政策

gcloud

根据现有实时更新在试运行模式下创建组织政策 组织政策的命令,请使用 org-policies describe 命令。例如:

gcloud org-policies describe gcp.restrictServiceUsage \
  --project=PROJECT_ID

PROJECT_ID 替换为项目 ID 或项目 配置了此组织政策的项目的编号。

输出应类似如下所示:

  name: projects/123456789012/policies/gcp.restrictServiceUsage
  spec:
    etag: CJy93KEGEKCJw/QB
    rules:
    - values:
        allowedValues:
        - compute.googleapis.com
  updateTime: '2023-04-12T21:11:56.512804Z'

将此命令的输出复制到临时文件中。将此文件修改为 移除 etagupdateTime 字段,并将 spec 字段更改为 dryRunSpec。对您要创建的限制条件配置进行 您希望在试运行模式下在组织政策中进行测试。

完成后的 YAML 文件应如下所示:

  name: projects/123456789012/policies/gcp.restrictServiceUsage
  dryRunSpec:
    rules:
      values:
        allowedValues:
        - compute.googleapis.com
        - appengine.googleapis.com

如需在试运行模式下强制执行组织政策,请使用 带有 --update-mask 标志的 org-policies set policy。例如:

gcloud org-policies set-policy POLICY_PATH \
  --update-mask=dryRunSpec

POLICY_PATH 替换为您的 临时组织政策 YAML 文件

在试运行模式下删除组织政策

您可以使用 Google Cloud 控制台或 Google Cloud CLI。

控制台

  1. 在 Google Cloud 控制台中,转到组织政策页面。

    转到“组织政策”

  2. 从项目选择器中,选择您要设置的资源 组织政策

  3. 从列表中选择 Restrict Resource Service Usage 限制条件 (在组织政策页面上)。

  4. 选择试运行标签页。

  5. 点击删除试运行政策

gcloud

如需在试运行模式下删除组织政策,请创建一个 定义了没有试运行规范的组织政策。例如:

  name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.restrictServiceUsage
  spec:
    rules:
    - values:
      allowedValues:
      - container.googleapis.com

替换以下内容:

  • RESOURCE_TYPEorganizationsfoldersprojects

  • RESOURCE_ID 替换为您的组织 ID,文件夹 ID、项目 ID 或项目编号,具体取决于资源类型 在 RESOURCE_TYPE 中指定。

然后,使用带有 --update-maskorg-policies set policy 命令 标志设置为 dryRunSpec。例如:

gcloud org-policies set-policy POLICY_PATH \
  --update-mask=dryRunSpec

这将更新现有组织政策,以移除试运行 并忽略规范的有效部分。

要在以下位置同时删除实时组织政策和组织政策 请使用 org-policies delete 命令。例如:

gcloud org-policies delete CONSTRAINT_NAME \
  --RESOURCE_TYPE=RESOURCE_ID

替换以下内容:

  • CONSTRAINT_NAME 替换为限制条件的名称 来删除数据例如 gcp.restrictServiceUsage

  • RESOURCE_TYPEorganizationsfoldersprojects

  • RESOURCE_ID 替换为您的组织 ID,文件夹 ID、项目 ID 或项目编号,具体取决于资源类型 在 RESOURCE_TYPE 中指定。

在试运行模式下有效评估组织政策

试运行模式下组织政策的继承方式与其他 组织政策如果在某个集群上设置了试运行模式下的组织政策, 组织资源,则所有后代资源都会继承该资源,除非它是 会在层次结构的较低级别进行覆盖

有效的政策评估会显示组织政策的结果 新资源。因此,对 有效组织政策会反映在 试运行模式(如果试运行模式政策是继承的,而不是在本地设置的)。

修改项目的有效组织政策也会在试运行模式下修改其有效组织政策。

例如,假设一个组织资源 Organization A 具有实时 组织政策设置为“enforced: false”,将组织政策设置为 试运行模式设置为 enforced: true。子资源 Folder B 也会设置 将生效的组织政策设置为 enforced: false,并继承 处于试运行模式下的组织政策。在 Folder B 上,所设置的生效政策表示: 试运行模式下组织政策的有效政策评估为 以及 enforce: false,从而替换在 父级组织的权限。

Folder B 的子资源 Project X 将当前政策设置为 enforced: true.与 Folder B 上的行为类似, Project X 的试运行模式下组织政策的评估结果为 enforced: true,因为已设置实时政策。

Folder B 的另一个子资源 Project Y 设置了组织政策 更改为 enforced: true。它会从以下来源继承组织政策: 其父资源,因此针对以下实例的有效评估为 enforced: false: 当前政策,enforced: true 用于试运行中的组织政策 模式。

资源 设置有效的组织政策 有效的实时组织政策 在试运行模式下设置组织政策 试运行模式下的有效组织政策
组织 A enforced: false enforced: false enforced: true enforced: true
文件夹 B enforced: false enforced: false enforced: false
文件夹 C enforced: false enforced: true
项目 X enforced: true enforced: true enforced: true
项目 Y enforced: false enforced: true enforced: true

在试运行模式下分析组织政策的影响

在以下情况下,处于试运行模式的组织政策不会阻止任何操作 强制执行。如需了解您的组织政策会产生的影响,您可以查看 组织政策审核日志

实时组织政策和组织的组织政策审核日志 系统会根据是否允许相应操作生成试运行模式下的政策 或被针对给定资源强制执行的政策所拒绝。下表 描述了生成组织政策审核日志的情况:

已发布的组织政策 试运行模式下的组织政策 审核日志已生成
允许 允许
允许 拒绝 仅在试运行模式下的审核日志
拒绝 允许 实时和试运行模式下的审核日志
拒绝 拒绝 实时和试运行模式下的审核日志

处于试运行模式的组织政策违规问题与 实时模式监控例如:

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "status": {
      "code": 7,
      "message": "PERMISSION_DENIED"
    },
    "authenticationInfo": {},
    "requestMetadata": {
      "callerIp": "1.2.3.4",
      "requestAttributes": {},
      "destinationAttributes": {}
    },
    "serviceName": "appengine.googleapis.com",
    "methodName": "google.api.appengine.v1.appengine.apps.services.get",
    "resourceName": "projects/sur-project-test-3",
    "metadata": {
      "constraint": "constraints/gcp.restrictServiceUsage",
      "checkedValue": "appengine.googleapis.com",
      "liveResult": "ALLOWED",
      "@type": "type.googleapis.com/google.cloud.audit.OrgPolicyDryRunAuditMetadata",
      "dryRunResult": "DENIED"
    }
  },
  "insertId": "1f2bvoxcmg1",
  "resource": {
    "type": "audited_resource",
    "labels": {
      "project_id": "sur-project-test-3",
      "service": "appengine.googleapis.com",
      "method": "google.api.appengine.v1.appengine.apps.services.get"
    }
  },
  "timestamp": "2022-06-16T19:42:58.244990928Z",
  "severity": "WARNING",
  "logName": "projects/sur-project-test-3/logs/cloudaudit.googleapis.com%2Fpolicy",
  "receiveTimestamp": "2022-06-16T19:42:59.572025716Z"
}

您可以使用日志浏览器在试运行期间仅查询组织政策 模式违规。

控制台

在 Google Cloud 控制台中,您可以使用 Logs Explorer 来检索 Google Cloud 项目、文件夹或组织的审核日志条目:

  1. 在 Google Cloud 控制台中,转到 Logging > 日志浏览器页面。

    转到日志浏览器

  2. 选择现有的 Google Cloud 项目、文件夹或组织。

  3. 查询构建器窗格中,执行以下操作:

    • 资源类型中,选择要查看其审核日志的 Google Cloud 资源。

    • 日志名称中,选择政策审核日志类型。

    • Query 窗格中,输入以下内容: protoPayload.metadata.dryRunResult = "DENIED" AND \ protoPayload.metadata.liveResult = "ALLOWED"

    如果您在 Logs Explorer,请参阅问题排查信息。

    如需详细了解如何使用日志浏览器进行查询,请参阅在日志浏览器中构建查询

gcloud

Google Cloud CLI 为 Logging API 提供了命令行界面。在每个日志名称中提供有效的资源标识符。例如,如果您的查询包含项目 ID,则 您提供的项目标识符必须引用当前所选的 项目名称。

在试运行模式下读取组织政策的审核日志条目 请运行以下命令:

gcloud logging read protoPayload.metadata.dryRunResult = "DENIED" AND \
      protoPayload.metadata.liveResult = "ALLOWED" \
    --RESOURCE_TYPE=RESOURCE_ID \

替换以下内容:

  • RESOURCE_TYPEorganizationfolderproject

  • RESOURCE_ID 替换为您的组织 ID,文件夹 ID、项目 ID 或项目编号,具体取决于资源类型 在 RESOURCE_TYPE 中指定。

在命令中添加 --freshness 标志,以读取更多日志 超过 1 天。

如需详细了解如何使用 gcloud CLI,请参阅 gcloud logging read

如果您的组织下有多个项目,则可以使用汇总接收器 来汇总和路由您的 组织到 BigQuery 表。如需详细了解如何创建 汇总接收器,请参见 整理组织级日志并将其路由到支持的目标位置

后续步骤

如需详细了解如何创建和管理组织政策限制条件,请参阅使用限制条件