使用安全强化型 GKE 节点


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

对于 GKE AutoPlot 集群,安全强化型 GKE 节点功能默认启用,无法替换。对于 GKE Standard 集群,安全强化型 GKE 节点功能默认处于启用状态,但可以替换。

关于安全强化型 GKE 节点

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

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

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

GKE 集群控制平面节点始终使用安全强化型 GKE 节点,即使您在集群上停用此功能也是如此。启用或停用受保护的 GKE 节点仅会影响运行工作负载的工作节点是否使用该功能。

价格

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

准备工作

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

  • 启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 如果您要使用 Google Cloud CLI 执行此任务,请安装初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行 gcloud components update 以获取最新版本。

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

您可以使用 gcloud CLI 或 Google Cloud 控制台创建启用了安全强化型 GKE 节点的新集群。

gcloud

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

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

控制台

  1. 转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  2. 点击 创建

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

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

  5. 根据需要配置集群。

  6. 点击创建

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

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

您可以使用 Google Cloud CLI 或 Google Cloud 控制台在现有集群中启用安全强化型 GKE 节点。

启用安全强化型 GKE 节点后,系统会将工作节点重新创建为安全强化型虚拟机。系统会以滚动方式重新创建集群节点,以最大程度减少停机时间。

gcloud

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

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

控制台

  1. 转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

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

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

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

  5. 点击保存更改

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

您可以通过 Google Cloud CLI 或 Google Cloud 控制台来验证集群是否使用的是安全强化型 GKE 节点。

gcloud

描述集群:

gcloud container clusters describe CLUSTER_NAME

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

shieldedNodes:
  enabled: true

控制台

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

  1. 转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

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

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

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

停用安全强化型 GKE 节点

您可以通过 Google Cloud CLI 或 Google Cloud 控制台停用安全强化型 GKE 节点。

gcloud

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

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

控制台

  1. 转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

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

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

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

  5. 点击保存更改

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

节点完整性

您可以选择对节点池配置节点完整性检查,从而为您的节点提供增强型 rootkit 和 bootkit 保护。 安全强化型 GKE 节点、安全启动和完整性监控是独立功能,可单独启用或停用。

安全启动

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

如果您不使用第三方未签名的内核模块,则可以使用 Google Cloud CLI 或 Google Cloud 控制台来启用安全启动。

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. 转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

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

  3. 点击 添加节点池

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

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

  6. 点击创建

完整性监控

完整性监控是在 GKE 上默认处于启用状态的节点池设置。您可以通过 Google Cloud CLI 或 Google Cloud 控制台停用完整性监控。

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. 转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

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

  3. 点击 添加节点池

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

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

后续步骤