本页面介绍了如何使用组织政策服务确保在所有 Compute Engine 实例(包括组织、文件夹或项目中的 Google Kubernetes Engine 虚拟机)上启用虚拟机管理器。
本指南适用于希望确保所有必需程序(例如安全和监控代理)在组织、文件夹或项目中的所有实例间运行的安全团队。如需仅通过组织政策强制执行配置,请参阅本指南。如需使用“配置即代码”方法,请使用 Config Sync。借助 Config Sync,您可以配置和控制集群的多个方面,并获得超越组织政策的价值。
在阅读本页面之前,请确保您熟悉虚拟机管理器和 Resource Manager 限制条件。
本指南介绍了如何在组织或文件夹中的每个项目中强制使用虚拟机管理器。本指南未介绍如何使用操作系统政策设置和使用虚拟机管理器。如需了解相关说明,请参阅创建操作系统政策分配任务。
虚拟机管理器简介
虚拟机管理器是一套工具,可用于管理在 Compute Engine 上运行 Windows 和 Linux 的大型虚拟机 (VM) 舰队的操作系统。您可以使用虚拟机管理器来应用操作系统政策,以自定义在虚拟机上运行的程序。例如,您可以定义一项政策以在资源上安装代理,并在多个资源中重复使用该政策。默认情况下,虚拟机管理器在Google Cloud 项目中处于停用状态。
您可以使用 OSPolicyAssignments
来细化虚拟机管理器应用政策的位置,这可让您使用选择器将操作系统政策的范围限定为特定虚拟机。例如,所有 GKE 节点虚拟机都具有标签 goog-gke-node
,您可以通过操作系统政策分配任务来定位该标签。
组织政策和虚拟机管理器
如果您的 Google Cloud 组织具有多级层的层次结构(例如文件夹和子文件夹),那么手动在所有这些项目中启用虚拟机管理器可能会导致不必要的管理开销。您可以通过将组织政策服务与 constraints/compute.requireOsConfig
限制条件搭配使用,要求文件夹或组织中的所有项目在所有虚拟机上启用虚拟机管理器。使用组织政策强制启用虚拟机管理器可带来以下一些好处:
- 所有新项目都会向每个项目和虚拟机添加
enable-osconfig=TRUE
元数据标签。 - 如果有人尝试移除此标签或将其设置为除
true
以外的值,则系统会拒绝该更改。 - 如果有人尝试通过将
enable-osconfig
元数据键设置为true
以外的值来创建或更新虚拟机,则系统会拒绝该更改。
准备工作
在开始之前,请确保您已执行以下任务:
- 启用 Google Kubernetes Engine API。 启用 Google Kubernetes Engine API
- 如果您要使用 Google Cloud CLI 执行此任务,请安装并初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行
gcloud components update
以获取最新版本。
- 确保您已将虚拟机管理器与操作系统政策和操作系统政策分配任务搭配使用,以在虚拟机上运行代理。如需了解相关说明,请参阅创建操作系统政策分配任务。
-
Enable the Cloud Resource Manager API, OS Config API APIs.
限制
constraints/compute.requireOsConfig
组织政策具有以下限制:
- 新组织政策不会更改预先存在违规行为的资源。您可以手动为政策设置元数据,也可以通过对现有资源使用
gcloud
来设置。 - 任何有权对项目中的 Compute Engine 实例更改元数据的用户都可以通过设置
osconfig-disabled-features
元数据字段在虚拟机上停用osconfig-agent
。 - 如果
osconfig-agent
未运行,则虚拟机在虚拟机管理器信息中心内会显示为不合规。例如,如果用户手动停用代理,就可能会发生这种情况。
所需的角色
如需获得管理组织政策所需的权限,请让您的管理员为您授予组织的 Organization Policy Administrator (roles/orgpolicy.policyAdmin
) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
在整个组织中启用 compute.requireOsConfig
启用虚拟机管理器并将 OSPolicyAssignment
的范围限定为您的虚拟机后,您可以通过 constraints/compute.requireOsConfig
组织政策确保在任何新项目中默认启用虚拟机管理器。如何强制执行 constraints/compute.requireOsConfig
取决于您使用的 API 版本。
Organization Policy v2 API
您可以使用 gcloud CLI 或 Google Cloud 控制台,在Google Cloud 资源(例如文件夹或组织)中强制执行 constraints/compute.requireOsConfig
限制条件。
gcloud
确认尚未应用
compute.requireOsConfig
限制条件:gcloud org-policies describe \ constraints/compute.requireOsConfig \ --organization=ORGANIZATION_ID
将
ORGANIZATION_ID
替换为您的组织 ID。如果未设置任何政策,此命令会返回
NOT_FOUND
错误:ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
如果政策确实存在,此命令会返回当前政策。应用新政策会覆盖现有政策(如果存在)。
创建临时文件
/tmp/policy.yaml
以存储政策:name: organizations/ORGANIZATION_ID/policies/constraints/compute.requireOsConfig spec: rules: - enforce: true
运行
set-policy
命令:gcloud org-policies set-policy /tmp/policy.yaml
确认新政策已应用:
gcloud org-policies describe \ constraints/compute.requireOsConfig --effective \ --organization=ORGANIZATION_ID
此命令的输出类似如下所示:
name: organizations/ORGANIZATION_ID/policies/constraints/compute.requireOsConfig spec: rules: - enforce: true
控制台
在 Google Cloud 控制台中,转到组织政策页面。
从项目选择器中,选择要为其修改组织政策的项目、文件夹或组织。
在组织政策页面上,使用过滤条件搜索
compute.requireOsConfig
。点击相应政策的名称,打开政策详情页面。
点击管理政策,为此资源更新组织政策。
在修改政策页面,选择覆盖父资源的政策。
选择添加规则。
在强制执行下,将此组织政策的强制执行更改为开启。
如需强制执行政策,请点击设置政策。
Resource Manager v1 API
确认尚未应用
compute.requireOsConfig
限制条件:gcloud resource-manager org-policies describe constraints/compute.requireOsConfig \ --organization ORGANIZATION_ID
将
ORGANIZATION_ID
替换为您的组织 ID。如果未设置政策,此命令会返回不完整的政策,如以下示例所示:
constraint: "constraints/compute.requireOsConfig" etag: BwVJi0OOESU=
如果政策确实存在,此命令会返回当前政策。应用新政策会覆盖现有政策(如果存在)。
设置政策,以便对组织强制执行:
gcloud resource-manager org-policies enable-enforce constraints/compute.requireOsConfig \ --organization ORGANIZATION_ID
此命令的输出类似如下所示:
booleanPolicy: enforced: true constraint: constraints/compute.requireOsConfig etag: BwVJitxdiwY=
确认新政策已应用:
gcloud resource-manager org-policies describe constraints/compute.requireOsConfig \ --effective \ --organization ORGANIZATION_ID
此命令的输出类似如下所示:
booleanPolicy: enforced: true constraint: constraints/compute.requireOsConfig
对组织政策的更改最长可能需要 15 分钟才能完全实施。
如需详细了解您可以应用的其他政策,或如何修改或删除政策,请参阅 Resource Manager 文档。