使用安全强化型 GKE 节点

本页面介绍了如何使用安全强化型 GKE 节点功能。安全强化型 GKE 节点可提供强大、可验证的节点身份和完整性,能够提高 Google Kubernetes Engine (GKE) 节点的安全性。

关于安全强化型 GKE 节点

安全强化型 GKE 节点是在 Compute Engine 安全强化型虚拟机的基础上构建的。在没有安全强化型 GKE 节点的情况下,攻击者可能会利用 Pod 中的漏洞来泄露引导凭据,并模拟集群中的节点,向攻击者授予对集群密钥的访问权限。启用安全强化型 GKE 节点后,GKE 控制层面会以加密方式验证以下各项:

  • 集群中的每个节点都是在 Google 数据中心中运行的虚拟机。
  • 每个节点都是针对集群预配的代管实例组 (MIG)的一部分。
  • 系统正在针对运行 kubelet 的节点,为 kubelet 预配证书。

这限制了攻击者模拟集群中节点的能力,即使攻击者可以泄露节点的引导凭据。

您可以选择对节点池配置节点完整性检查,从而为您的节点提供增强型 rootkit 和 bootkit 保护。这些节点池设置与安全强化型 GKE 节点无关,即使在集群上停用了安全强化型 GKE 节点,这些设置仍会有效。

如需了解详情,请参阅安全强化型虚拟机文档

运行安全强化型 GKE 节点无需额外费用。但安全强化型 GKE 节点在启动时生成的日志比标准节点多 0.5 KB。如需了解详情,请参阅 Cloud Logging 价格页面

可用性

  • 安全强化型 GKE 节点适用于 GKE 1.13.6-gke.0 版及更高版本。
  • 安全强化型 GKE 节点适用于所有地区和区域。
  • 安全强化型 GKE 节点可用于所有节点映像
  • 安全强化型 GKE 节点可用于 GPU

准备工作

在开始之前,请确保您已执行以下任务:

使用以下任一方法设定默认的 gcloud 设置:

  • 使用 gcloud init(如果您想要在系统引导下完成默认设置)。
  • 使用 gcloud config(如果您想单独设置项目 ID、区域和地区)。

使用 gcloud init

如果您收到 One of [--zone, --region] must be supplied: Please specify location 错误,请完成本部分。

  1. 运行 gcloud init 并按照说明操作:

    gcloud init

    如果您要在远程服务器上使用 SSH,请使用 --console-only 标志来防止命令启动浏览器:

    gcloud init --console-only
  2. 按照说明授权 gcloud 使用您的 Google Cloud 帐号。
  3. 创建新配置或选择现有配置。
  4. 选择 Google Cloud 项目。
  5. 为可用区级集群选择默认 Compute Engine 可用区,或为区域级集群或 Autopilot 集群选择区域。

使用 gcloud config

  • 设置默认项目 ID
    gcloud config set project PROJECT_ID
  • 如果您使用的是可用区级集群,请设置默认计算可用区
    gcloud config set compute/zone COMPUTE_ZONE
  • 如果您使用的是 Autopilot 集群或区域级集群,请设置默认计算区域
    gcloud config set compute/region COMPUTE_REGION
  • gcloud 更新到最新版本:
    gcloud components update

在新集群中启用安全强化型 GKE 节点

您可以使用 gcloud 工具或 Google Cloud Console 创建一个启用了安全强化型 GKE 节点的新集群。

gcloud

创建新集群时,请指定 --enable-shielded-nodes 选项:

gcloud container clusters create CLUSTER_NAME \
    --enable-shielded-nodes

控制台

  1. 转到 Cloud Console 中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  2. 点击 创建

  3. 在导航窗格的集群下,点击安全

  4. 选中启用安全强化型 GKE 节点复选框。

  5. 根据需要配置集群。

  6. 点击创建

如需详细了解如何创建集群,请参阅创建集群

在现有集群中启用安全强化型 GKE 节点

您可以使用 gcloud 命令行工具或 Google Cloud Console 在现有集群中启用安全强化型 GKE 节点。

启用安全强化型 GKE 节点后,系统会将控制平面和节点重新创建为安全强化型虚拟机。控制平面在重新创建期间不可用。系统会以滚动方式重新创建集群节点,以最大程度减少停机时间。

gcloud

更新集群时,请指定 --enable-shielded-nodes 选项:

gcloud container clusters update CLUSTER_NAME \
    --enable-shielded-nodes

控制台

  1. 转到 Cloud Console 中的 Google Kubernetes Engine 页面:

    转到 Google Kubernetes Engine

  2. 点击要修改的集群的名称。

  3. 安全下的安全强化型 GKE 节点字段中,点击 修改安全强化型 GKE 节点

  4. 选中启用安全强化型 GKE 节点复选框。

  5. 点击保存更改

验证是否已启用安全强化型 GKE 节点

您可以使用 gcloud 命令行工具或 Google Cloud Console 来验证您的集群是否使用了安全强化型 GKE 节点。

gcloud

描述集群:

gcloud container clusters describe CLUSTER_NAME

如果启用了安全强化型 GKE 节点,则该命令的输出将包括以下行:

shieldedNodes:
  enabled: true

控制台

如需验证集群是否使用了安全强化型 GKE 节点,请执行以下操作:

  1. 转到 Cloud Console 中的 Google Kubernetes Engine 页面:

    转到 Google Kubernetes Engine

  2. 点击您要检查的集群的名称。

  3. 安全下的安全强化型 GKE 节点字段中,验证安全强化型 GKE 节点是否已启用

您还可以监控节点的底层安全强化型虚拟机的完整性。请参阅监控安全强化型虚拟机实例的完整性,了解具体操作。

停用安全强化型 GKE 节点

您可以使用 gcloud 命令行工具或 Google Cloud Console 停用安全强化型 GKE 节点。

gcloud

更新集群时,请指定 --no-enable-shielded-nodes 选项:

gcloud container clusters update CLUSTER_NAME \
    --no-enable-shielded-nodes

控制台

  1. 转到 Cloud Console 中的 Google Kubernetes Engine 页面:

    转到 Google Kubernetes Engine

  2. 点击要修改的集群的名称。

  3. 安全下的安全强化型 GKE 节点字段中,点击 修改安全强化型 GKE 节点

  4. 取消选中启用安全强化型 GKE 节点复选框。

  5. 点击保存更改

停用安全强化型 GKE 节点后,系统会将控制平面和节点重新创建为普通的非安全强化型虚拟机。控制平面在重新创建期间不可用。系统会以滚动方式重新创建集群节点,以最大程度减少停机时间。

节点完整性

安全启动和完整性监控是可与安全强化型 GKE 节点结合使用的节点池设置。安全强化型 GKE 节点、安全启动和完整性监控是独立功能,可单独启用或停用。

安全启动

安全启动是在 GKE 上默认处于停用状态的节点池设置,因为启用安全启动后无法加载第三方未签名的内核模块。

如果您不使用第三方未签名的内核模块,则可以使用 gcloud 命令行工具或 Google Cloud Console 启用安全启动。

gcloud

如需在创建集群时启用安全启动,请运行以下命令:

gcloud container clusters create CLUSTER_NAME \
    --shielded-secure-boot

如需在创建节点池时启用安全启动,请运行以下命令:

gcloud container node-pools create POOL_NAME \
    --shielded-secure-boot

“安全启动”默认处于停用状态。您可以在创建集群或节点池时使用 --no-shielded-secure-boot 选项明确停用该功能。

控制台

如需在创建节点池时启用安全启动,请运行以下命令:

  1. 转到 Cloud Console 中的 Google Kubernetes Engine 页面:

    转到 Google Kubernetes Engine

  2. 点击要修改的集群的名称。

  3. 点击 添加节点池

  4. 在导航菜单中,点击安全

  5. 安全强化选项下,选中启用安全启动复选框。

  6. 点击创建

完整性监控

完整性监控是在 GKE 上默认处于启用状态的节点池设置。您可以使用 gcloud 命令行工具或 Google Cloud Console 停用完整性监控。

gcloud

要在创建集群时停用对系统组件的完整性监控,请运行以下命令:

gcloud container clusters create CLUSTER_NAME \
    --no-shielded-integrity-monitoring

要在创建节点池时停用对系统组件的完整性监控,请运行以下命令:

gcloud container node-pools create POOL_NAME \
    --no-shielded-integrity-monitoring

完整性监控默认处于启用状态。您可以在创建集群或节点池时使用 --shielded-integrity-monitoring 选项明确启用该功能。

控制台

要在创建节点池时停用完整性监控功能,请执行以下操作:

  1. 转到 Cloud Console 中的 Google Kubernetes Engine 页面:

    转到 Google Kubernetes Engine

  2. 点击要修改的集群的名称。

  3. 点击 添加节点池

  4. 在导航窗格中,点击安全

  5. 安全强化选项下,取消选中启用完整性监控复选框。

后续步骤