阻止创建使用容器元数据的虚拟机

为确保组织中的资源不使用已弃用的容器启动代理和相关的 gce-container-declaration 元数据,Google 建议您强制执行组织政策。 强制执行受管限制条件 compute.managed.disableVmsWithContainerStartupAgent后,系统会禁止创建使用已弃用元数据的资源。

本文档介绍了如何执行以下操作:

  • 强制执行组织政策,以禁止创建使用容器启动代理的 Compute Engine 实例。
  • 通过在试运行模式下强制执行政策来监控组织政策的影响。
  • 使用 Logs Explorer 识别尝试使用已弃用代理的项目。

强制执行组织政策,以禁止创建使用容器元数据的虚拟机

为防止创建使用已弃用容器启动代理的资源, Google 建议您强制执行 组织政策constraints/compute.managed.disableVmsWithContainerStartupAgent 限制条件可防止使用 gce-container-declaration 元数据键创建新资源。此限制条件不会影响现有实例或实例模板。

您可以使用 Cloud de Confiance 控制台、 Google Cloud CLI 或 Compute Engine API 来强制执行此限制条件。

控制台

如需使用控制台设置组织政策,请完成以下步骤:

  1. 在 Cloud de Confiance 控制台中,前往 组织政策 页面。

    转到组织政策

  2. 从项目选择器中,选择要为其修改组织政策的项目、文件夹或组织。

    组织政策 页面会显示可用的组织政策限制列表。

  3. 从限制条件列表中选择禁止创建使用已弃用容器启动代理 (konlet) 的 Compute Engine 实例 限制条件。随即显示的政策详情 页面会介绍该限制条件,并提供有关如何应用该限制条件的信息。

  4. 如需为该资源更新组织政策,请点击管理政策

  5. 修改政策 页面上,点击替换父级的政策

  6. 选择添加规则

  7. 实施下,选择开启

  8. (可选)如需在强制执行组织政策更改之前预览其影响,请点击测试更改 。如需详细了解如何测试 组织政策更改,请参阅 使用 Policy Simulator 测试组织政策更改

  9. 如需在试运行模式下强制执行组织政策,请点击设置试运行政策 。如需了解详情,请参阅 从正式政策在试运行模式下创建组织政策

  10. 验证试运行模式下的组织政策按预期运行后,点击设置政策 来设置正式政策。

gcloud

  1. 创建 YAML 文件以定义组织政策。

    name: RESOURCE_TYPE/RESOURCE_ID/policies/compute.managed.disableVmsWithContainerStartupAgent
    spec:
      rules:
      - enforce: true
    dryRunSpec:
      rules:
      - enforce: true
    

    替换以下内容:

    • RESOURCE_TYPE 替换为 organizationsfoldersprojects

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

    以下示例展示了一个 YAML 文件,该文件对 ID 为 123456 的项目强制执行组织政策:

    name: projects/123456/policies/compute.managed.disableVmsWithContainerStartupAgent
    spec:
      rules:
      - enforce: true
    dryRunSpec:
      rules:
      - enforce: true
    

    (可选)如需使组织政策成为基于某个标记的条件性政策,请向 rules 添加 condition 块。如果您向组织政策添加条件规则,则必须至少添加一个无条件规则,否则无法保存政策。如需了解详情,请参阅 使用标记设置组织政策

  2. 运行带有 dryRunSpec 标志的 org-policies set-policy 命令,以在 试运行模式下设置组织政策:

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

    POLICY_PATH 替换为组织政策 YAML 文件的完整路径。

    如需详细了解试运行组织政策,请参阅 在试运行模式下创建组织政策

  3. 使用 policy-intelligence simulate orgpolicy 命令在强制执行组织政策更改之前预览其影响:

    gcloud policy-intelligence simulate orgpolicy \
      --organization=ORGANIZATION_ID \
      --policies=POLICY_PATH
    

    替换以下内容:

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

    • POLICY_PATH 替换为组织政策 YAML 文件的完整路径。

    如需详细了解如何测试组织政策更改,请参阅 使用 Policy Simulator 测试组织政策更改

  4. 验证试运行模式下的组织政策按预期运行后,使用 org-policies set-policy 命令和 spec 标志设置正式政策:

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

    POLICY_PATH 替换为组织政策 YAML 文件的完整路径。

REST

如需设置组织政策,请使用 organizations.policies.create 方法。

POST https://orgpolicy.googleapis.com/v2/{parent=organizations/ORGANIZATION_ID}/policies

请求 JSON 正文包含组织政策的定义。 如果此限制条件不支持参数,请省略 rules 下的 parameters 块。

{
  "name": "RESOURCE_TYPE/RESOURCE_ID/policies/compute.managed.disableVmsWithContainerStartupAgent",
  "spec": {
    "rules": [
      {
        "enforce": true,
      }
    ]
  },
  "dryRunSpec": {
    "rules": [
      {
        "enforce": true,
      }
    ]
  }
}

替换以下内容:

  • RESOURCE_TYPE 替换为 organizationsfoldersprojects

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

以下示例展示了一个请求正文,该正文对 ID 为 123456 的项目强制执行组织政策:

  {
    "name": "projects/123456/policies/compute.managed.disableVmsWithContainerStartupAgent",
    "spec": {
      "rules": [
        {
          "enforce": true,
        }
      ]
    },
    "dryRunSpec": {
      "rules": [
        {
          "enforce": true,
        }
      ]
    }
  }
  ```

Optionally, to make the organization policy conditional on a tag, add a
`condition` block to the `rules`. If you add a conditional rule to an
organization policy, you must add at least one unconditional rule or the
policy cannot be saved. For more details, see
[Setting an organization policy with tags](/resource-manager/docs/organization-policy/tags-organization-policy).

For more information about dry-run organization policies, see
[Create an organization policy in dry-run mode](/resource-manager/docs/organization-policy/dry-run-policy).

在试运行模式下强制执行政策,以监控已弃用元数据的使用情况

您可以采用试运行模式应用政策,而不是直接强制执行政策(这会阻止创建使用容器声明元数据的实例)。借助此设置,您可以监控和记录政策可以阻止的任何操作,而不会实际干扰操作。如需了解详情,请参阅 在试运行 模式下创建组织政策

当操作触发试运行政策时(例如,如果您尝试使用 gce-container-declaration 元数据键创建实例),系统会在 Cloud Audit Logs 中生成日志条目。

如需识别尝试使用已弃用代理的项目,请完成以下步骤:

  1. 在 Cloud de Confiance 控制台中,前往 Logs Explorer 页面。

    转到日志浏览器

  2. 查询 窗格中,输入以下查询:

    protoPayload.metadata.dryRun="true"
    protoPayload.methodName="CheckOrgPolicy"
    protoPayload.resourceName =~ "/compute.managed.disableVmsWithContainerStartupAgent"
    
  3. 点击运行查询

  4. 通过查看日志条目,识别尝试使用已弃用代理的项目。 试运行违规的日志具有以下特征:

    • 它们与 orgpolicy.googleapis.com 相关。
    • protoPayload.metadata.dryRun 字段设置为 true
    • 违规详情中包含 constraints/compute.managed.disableVmsWithContainerStartupAgent 限制条件。
  5. 查看审核日志中的信息,了解仍在何处以及为何使用已弃用的代理。此信息可指导您将这些工作负载迁移到受支持的替代方案。

  6. 验证试运行模式下的组织政策按预期运行后,将实施状态从试运行模式更改为正式模式,以强制执行政策

如需详细了解如何使用 Logs Explorer,请参阅使用 Logs Explorer 查看日志

后续步骤