在组织中的每个 GKE 节点上运行虚拟机代理


本页介绍了如何使用组织政策服务,确保在所有 Compute Engine 实例(包括组织、文件夹或项目中的 Google Kubernetes Engine 虚拟机)上启用虚拟机管理器。

本指南适用于希望确保所有必需程序(例如安全和监控代理)在组织、文件夹或项目中的所有实例中运行的安全团队。如需仅使用组织政策强制执行配置,请参阅本指南。对于“配置即代码”方法,请使用 Config Sync。借助 Config Sync,您可以配置和控制集群的许多方面,并获得超越组织政策的价值。

在阅读本页面之前,请确保您已熟悉 VM ManagerResource 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.

    Enable the 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

  1. 确认尚未应用 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.
    

    如果政策确实存在,该命令会返回当前政策。应用新政策会覆盖现有政策(如果有)。

  2. 创建临时文件 /tmp/policy.yaml 以存储政策:

    name: organizations/ORGANIZATION_ID/policies/constraints/compute.requireOsConfig
    spec:
      rules:
      - enforce: true
    
  3. 运行 set-policy 命令:

    gcloud org-policies set-policy /tmp/policy.yaml
    
  4. 确认新政策是否已应用:

    gcloud org-policies describe \
        constraints/compute.requireOsConfig --effective \
        --organization=ORGANIZATION_ID
    

    此命令的输出类似如下所示:

    name: organizations/ORGANIZATION_ID/policies/constraints/compute.requireOsConfig
    spec:
      rules:
      - enforce: true
    

控制台

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

    转到组织政策

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

  3. 组织政策页面上,使用过滤条件搜索 compute.requireOsConfig

  4. 点击相应政策的名称以打开政策详情页面。

  5. 点击管理政策以更新此资源的组织政策。

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

  7. 选择添加规则

  8. 强制执行下,将此组织政策的强制执行设置更改为开启

  9. 如需强制执行政策,请点击设置政策

Resource Manager v1 API

  1. 确认尚未应用 compute.requireOsConfig 约束条件:

    gcloud resource-manager org-policies describe constraints/compute.requireOsConfig \
        --organization ORGANIZATION_ID
    

    ORGANIZATION_ID 替换为您的组织 ID

    如果未设置政策,此命令会返回不完整的政策,如以下示例所示:

    constraint: "constraints/compute.requireOsConfig"
    etag: BwVJi0OOESU=
    

    如果政策确实存在,该命令会返回当前政策。应用新政策会覆盖现有政策(如果有)。

  2. 设置要对组织强制执行的政策:

    gcloud resource-manager org-policies enable-enforce constraints/compute.requireOsConfig \
        --organization ORGANIZATION_ID
    

    此命令的输出类似如下所示:

    booleanPolicy:
      enforced: true
    constraint: constraints/compute.requireOsConfig
    etag: BwVJitxdiwY=
    
  3. 确认新政策是否已应用:

    gcloud resource-manager org-policies describe constraints/compute.requireOsConfig \
        --effective \
        --organization ORGANIZATION_ID
    

    此命令的输出类似如下所示:

    booleanPolicy:
      enforced: true
    constraint: constraints/compute.requireOsConfig
    

对组织政策的更改最长可能需要 15 分钟才能完全实施。

如需详细了解您可以应用的其他政策,或如何修改或删除政策,请参阅 Resource Manager 文档

后续步骤

详细了解 GKE 审核日志记录