为确保组织中的资源不使用已弃用的容器启动代理和相关的 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 来强制执行此限制条件。
控制台
如需使用控制台设置组织政策,请完成以下步骤:
在 Cloud de Confiance 控制台中,前往 组织政策 页面。
从项目选择器中,选择要为其修改组织政策的项目、文件夹或组织。
组织政策 页面会显示可用的组织政策限制列表。
从限制条件列表中选择禁止创建使用已弃用容器启动代理 (konlet) 的 Compute Engine 实例 限制条件。随即显示的政策详情 页面会介绍该限制条件,并提供有关如何应用该限制条件的信息。
如需为该资源更新组织政策,请点击管理政策 。
在修改政策 页面上,点击替换父级的政策。
选择添加规则 。
在实施下,选择开启。
(可选)如需在强制执行组织政策更改之前预览其影响,请点击测试更改 。如需详细了解如何测试 组织政策更改,请参阅 使用 Policy Simulator 测试组织政策更改。
如需在试运行模式下强制执行组织政策,请点击设置试运行政策 。如需了解详情,请参阅 从正式政策在试运行模式下创建组织政策。
验证试运行模式下的组织政策按预期运行后,点击设置政策 来设置正式政策。
gcloud
创建 YAML 文件以定义组织政策。
name: RESOURCE_TYPE/RESOURCE_ID/policies/compute.managed.disableVmsWithContainerStartupAgent spec: rules: - enforce: true dryRunSpec: rules: - enforce: true替换以下内容:
将
RESOURCE_TYPE替换为organizations、folders或projects。将
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块。如果您向组织政策添加条件规则,则必须至少添加一个无条件规则,否则无法保存政策。如需了解详情,请参阅 使用标记设置组织政策。运行带有
dryRunSpec标志的org-policies set-policy命令,以在 试运行模式下设置组织政策:gcloud org-policies set-policy POLICY_PATH \ --update-mask=dryRunSpec将
POLICY_PATH替换为组织政策 YAML 文件的完整路径。如需详细了解试运行组织政策,请参阅 在试运行模式下创建组织政策。
使用
policy-intelligence simulate orgpolicy命令在强制执行组织政策更改之前预览其影响:gcloud policy-intelligence simulate orgpolicy \ --organization=ORGANIZATION_ID \ --policies=POLICY_PATH替换以下内容:
将
ORGANIZATION_ID替换为您的组织 ID,例如1234567890123。不支持模拟对多个组织进行的更改。将
POLICY_PATH替换为组织政策 YAML 文件的完整路径。
如需详细了解如何测试组织政策更改,请参阅 使用 Policy Simulator 测试组织政策更改。
验证试运行模式下的组织政策按预期运行后,使用
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替换为organizations、folders或projects。将
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 中生成日志条目。
如需识别尝试使用已弃用代理的项目,请完成以下步骤:
在 Cloud de Confiance 控制台中,前往 Logs Explorer 页面。
在查询 窗格中,输入以下查询:
protoPayload.metadata.dryRun="true" protoPayload.methodName="CheckOrgPolicy" protoPayload.resourceName =~ "/compute.managed.disableVmsWithContainerStartupAgent"点击运行查询 。
通过查看日志条目,识别尝试使用已弃用代理的项目。 试运行违规的日志具有以下特征:
- 它们与
orgpolicy.googleapis.com相关。 protoPayload.metadata.dryRun字段设置为true。- 违规详情中包含
constraints/compute.managed.disableVmsWithContainerStartupAgent限制条件。
- 它们与
查看审核日志中的信息,了解仍在何处以及为何使用已弃用的代理。此信息可指导您将这些工作负载迁移到受支持的替代方案。
验证试运行模式下的组织政策按预期运行后,将实施状态从试运行模式更改为正式模式,以强制执行政策。
如需详细了解如何使用 Logs Explorer,请参阅使用 Logs Explorer 查看日志。
后续步骤
- 了解如何迁移在创建虚拟机期间部署在虚拟机上的容器。