使用 Policy Simulator 测试组织政策更改

借助适用于组织政策的 Policy Simulator,您可以在生产环境中强制执行新的自定义限制条件或强制执行自定义限制条件的组织政策之前,预览其影响。Policy Simulator 提供违反建议策略的资源列表, 从而让您能够重新配置这些资源、请求例外 更改组织政策的适用范围 开发或破坏您的环境

本页介绍了如何使用 Policy Simulator 测试对组织政策的更改。还说明了如何解读 以及选择如何应用被测试的组织政策。

准备工作

  • 如果您使用的是 Google Cloud CLI,请设置要用于 进行 API 调用:

    gcloud config set project PROJECT_ID

    PROJECT_ID 替换为项目的名称或 ID。

  • Enable the Policy Simulator and Resource Manager APIs.

    Enable the APIs

  • 可选:参阅组织政策服务简介

所需的角色

为了获得运行和访问模拟所需的权限, 请让管理员授予您 组织的 OrgPolicy Simulator Admin (roles/policysimulator.orgPolicyAdmin) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含 运行和访问模拟所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需运行和访问模拟,您需要具备以下权限:

  • orgpolicy.constraints.list
  • orgpolicy.customConstraints.get
  • orgpolicy.policies.list
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.listResource
  • cloudasset.assets.listOrgPolicy
  • policysimulator.orgPolicyViolationsPreviews.list
  • policysimulator.orgPolicyViolationsPreviews.get
  • policysimulator.orgPolicyViolationsPreviews.create
  • policysimulator.orgPolicyViolations.list

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

测试政策更改

您可以同时测试对自定义限制条件或强制执行自定义限制条件的组织政策所做的更改。

控制台

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

    转到“组织政策”

  2. 选择页面顶部的项目选择器。

  3. 在项目选择器中,选择要测试组织政策更改的资源。测试对自定义 则必须选择组织资源。

  4. 如果您要测试新的自定义限制条件,请点击 自定义限制条件。如果您想 要对现有的自定义限制条件进行更改,请从列表中选择该限制条件 在组织政策页面上,然后点击 修改限制条件

  5. 创建或更新要测试的自定义限制条件。

    例如,若要定义一个自定义限制条件,以限制在未启用 Binary Authorization 的情况下创建 Google Kubernetes Engine 集群资源,请执行以下操作:

    1. Resource type 框中,选择 container.googleapis.com/Cluster

    2. 强制执行方法下,选择在创建时强制执行

    3. 点击 修改条件

    4. 添加条件面板中,输入 resource.binaryAuthorization.enabled == true

    5. 点击保存

    6. 操作下,选择允许

    如需了解详情,请参阅 创建和管理自定义限制条件

  6. 点击测试限制条件

  7. 这是新限制条件或组织未强制执行的限制条件 则必须定义组织政策。

    1. Select scope 框中,选择您要测试的资源 此自定义限制条件

    2. 点击自定义

    3. 点击添加规则

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

    5. 点击继续

系统随即会显示模拟记录页面,其中列出了您在过去 14 天内执行的模拟。请参阅 此页面上的 Policy Simulator 结果 - 。

gcloud

  1. 如需测试自定义限制条件,请创建一个 JSON 或 YAML 文件,用于定义要测试的自定义限制条件。

    例如,用于限制创建未启用二进制授权的 Google Kubernetes Engine 集群资源的自定义限制条件类似于以下内容:

    name: "organizations/ORGANIZATION_ID/customConstraints/custom.EnforceGKEBinaryAuthz"
    resource_types: "container.googleapis.com/Cluster"
    method_types: CREATE
    condition: "resource.binaryAuthorization.enabled == true"
    action_type: ALLOW
    

    ORGANIZATION_ID 替换为您的组织 ID。 例如 1234567890123

    如需详细了解如何创建自定义限制条件,请参阅创建和管理自定义限制条件

  2. 如需测试根据特定标记的存在情况有条件地强制执行自定义限制条件的组织政策,请创建一个 JSON 或 YAML 文件来定义要测试的组织政策。

    例如,以下组织政策限制 未启用 Binary Authorization 的 Google Kubernetes Engine 集群资源,但不包括 附加了 env=dev 标记的资源。

    name: organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz
    spec:
      rules:
      - condition:
          expression: "resource.matchTag('env', 'dev')"
        enforce: false
      - enforce: true
    

    ORGANIZATION_ID 替换为您的组织 ID,例如 1234567890123

    如需详细了解条件组织政策,请参阅 使用标记设置组织政策

  3. 如需测试强制执行自定义限制条件的组织政策,请创建一个 JSON 或 YAML 文件,用于定义要测试的组织政策。

    例如,限制创建未启用 Binary Authorization 的 Google Kubernetes Engine 集群资源的组织政策类似于以下内容:

    name: organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz
    spec:
      rules:
      - enforce: true
    

    ORGANIZATION_ID 替换为您的组织 ID,例如 1234567890123

  4. 如需测试是否删除会强制执行自定义 限制条件,请创建一个定义组织政策的 JSON 或 YAML 文件 但不设置任何规则,并沿用其父级资源的政策。

    例如,以下组织政策会模拟删除现有的 custom.EnforceGKEBinaryAuthz 自定义限制条件。

    name: organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz
    spec:
      inheritFromParent: true
    
  5. 运行以下命令以模拟对自定义限制条件的更改, 组织政策或两者:

    gcloud beta policy-intelligence simulate orgpolicy \
       --organization=ORGANIZATION_ID \
       --custom-constraints=CONSTRAINT_PATH \
       --policies=POLICY_PATH
    

替换以下内容:

  • ORGANIZATION_ID:您的组织 ID,例如 1234567890123。不支持对多个组织进行更改模拟。

  • CONSTRAINT_PATH:自定义组件的完整路径 创建或更新的约束条件。例如,tmp/constraint.yaml如果您设置了 --policies 标志,则无需设置 --custom-constraints 标志。

  • POLICY_PATH:您创建或更新的组织政策的完整路径。例如,tmp/policy.yaml如果您设置了 --custom-constraints 标志,则无需设置 --policies 标志。

几分钟后,该命令将输出 对自定义限制条件、组织政策或 两者都有。

您还可以在 Google Cloud 控制台中查看结果。请参阅本页面上的政策模拟器结果,了解如何读取结果。

以下是组织政策模拟的示例响应。 此模拟涉及一个自定义约束条件,该约束条件会限制在未启用 Binary Authorization 的情况下创建 Google Kubernetes Engine 集群资源。在这种情况下,如果应用了建议的更改,两个集群资源将违反该政策:项目 simulator-test-project 下的 orgpolicy-test-cluster,以及项目 orgpolicy-test-0 下的 autopilot-cluster-1

Waiting for operation [organizations/012345678901/locations/global/orgPolic
yViolationsPreviews/85be9a2d-8c49-470d-a65a-d0cb9ffa8f83/operations/1883a83
c-c448-42e5-a7c5-10a850928f06] to complete...done.
---
customConstraint:
  actionType: ALLOW
  condition: resource.binaryAuthorization.enabled == true
  methodTypes:
  - CREATE
  name: organizations/012345678901/customConstraints/custom.EnforceGKEBinaryAuthz
  resourceTypes:
  - container.googleapis.com/Cluster
name: organizations/012345678901/locations/global/orgPolicyViolationsPreviews/3dd47fd3-6df1-4156-8f10-413a3fc0ed83/orgPolicyViolations/b9fd23a5-7163-46de-9fec-7b9aa6af1113
resource:
  ancestors:
  - organizations/012345678901
  - projects/456789012345
  assetType: container.googleapis.com/Cluster
  resource: //container.googleapis.com/projects/simulator-test-project/locations/us-central1/clusters/orgpolicy-test-cluster
---
customConstraint:
  actionType: ALLOW
  condition: resource.binaryAuthorization.enabled == true
  methodTypes:
  - CREATE
  name: organizations/012345678901/customConstraints/custom.EnforceGKEBinaryAuthz
  resourceTypes:
  - container.googleapis.com/Cluster
name: organizations/012345678901/locations/global/orgPolicyViolationsPreviews/3dd47fd3-6df1-4156-8f10-413a3fc0ed83/orgPolicyViolations/e73896e6-7613-4a8d-8436-5df7a6455121
resource:
  ancestors:
  - organizations/012345678901
  - folders/789012345678
  - projects/456789012345
  assetType: container.googleapis.com/Cluster
  resource: //container.googleapis.com/projects/orgpolicy-test-0/locations/us-central1/clusters/autopilot-cluster-1

Policy Simulator 结果

Policy Simulator 会将自定义约束条件或组织政策更改的结果报告为违反模拟政策的列表。Google Cloud 控制台中会存储您在过去 14 天内生成的模拟结果。

如需查看模拟结果,请前往模拟历史记录页面。

前往模拟历史记录

选择一项模拟即可查看详细信息。在模拟报告页面上,您可以执行以下操作: 查看违规行为预览,其中列出了导致的违规行为总数 受新自定义限制条件或组织政策影响,资源的数量 在模拟范围内检查的数据,以及 模拟已完成。

如果您模拟了自定义限制条件,可以点击限制条件详细信息 查看所模拟的特定配置。如果您模拟了组织政策,政策详细信息标签页会显示模拟的配置。

所有违规行为都列在资源表中。系统会列出违反新自定义限制条件或组织政策的每个资源,并附上指向 Cloud Asset Inventory 中相应资源条目的链接。系统会显示项目、文件夹和组织资源,以及位于其下方且违反新自定义约束条件或组织政策的资源总数。

应用经过测试的政策更改

测试完自定义限制条件和/或组织政策后, 可以设置自定义限制条件并强制执行组织政策。您可以 在 Google Cloud 控制台中查看所有 Policy Simulator 结果,无论 它们是如何生成的。如果模拟报告包含对“否”的更改 多个组织政策后,您就可以执行组织政策 模拟结果。如需在多个组织政策中强制执行测试更改,请使用 Google Cloud CLI。

控制台

  1. 如需强制执行 Policy Simulator 结果的自定义限制条件,请转到 模拟历史记录页面。

    前往“模拟历史记录”页面

  2. 选择要应用的自定义限制条件或组织政策的模拟报告。

  3. 如果此模拟报告包含自定义限制条件,请点击 保存限制条件

  4. 如果此模拟报告包含的更改不超过一个组织 你可以将该组织政策作为 试运行政策 通过选择 设置试运行政策。新的政策详情页面 组织政策页面。

    您可以立即强制执行组织政策,只需点击 ,然后选择设置政策

gcloud

  1. 要强制执行自定义限制条件,您必须对其进行设置以使其可供 组织政策。要设置自定义限制条件 使用 gcloud org-policies set-custom-constraint 命令:

    gcloud org-policies set-custom-constraint CONSTRAINT_PATH
    

    CONSTRAINT_PATH 替换为自定义限制条件文件的完整路径。例如 /home/user/customconstraint.yaml

    完成后,您的自定义限制条件就会显示在列表中 Google Cloud 组织政策的组成部分

  2. 如需强制执行包含自定义限制条件的组织政策,请使用 gcloud org-policies set-policy 命令:

    gcloud org-policies set-policy POLICY_PATH
    

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

    此政策最多需要 15 分钟才能生效。

保存模拟结果

控制台

如果您使用的是 Google Cloud 控制台,则可以将政策模拟器结果另存为 CSV 文件。

  1. 如需保存政策模拟器结果,请前往模拟历史记录页面。

    前往“模拟历史记录”页面

  2. 选择要保存的模拟报告。

  3. 点击 Export full results(导出完整结果)。

gcloud

如果您使用的是 gcloud CLI 将 Policy Simulator 结果显示为 JSON 或 YAML 文件。

默认情况下,Google Cloud CLI 中的测试结果以 YAML 格式输出。接收者 将测试结果保存为 YAML 文件, simulate orgpolicy 命令:

> FILENAME

FILENAME 替换为输出文件的名称。

如需将测试结果保存为 JSON 文件,请添加以下标志 添加到 simulate orgpolicy 命令中:

--format=json > FILENAME

FILENAME 替换为输出文件的名称。

后续步骤