本页面介绍了如何使用安全强化型 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。
准备工作
在开始之前,请确保您已执行以下任务:
- 启用 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
控制台
转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。
点击 add_box 创建。
在导航窗格的集群下,点击安全。
选中启用安全强化型 GKE 节点复选框。
根据需要配置集群。
点击创建。
如需详细了解如何创建集群,请参阅创建集群。
在现有集群中启用安全强化型 GKE 节点
您可以使用 Google Cloud CLI 或 Google Cloud 控制台在现有集群中启用安全强化型 GKE 节点。
启用安全强化型 GKE 节点后,系统会将控制层面和节点重新创建为安全强化型虚拟机。控制平面在重新创建期间不可用。系统会以滚动方式重新创建集群节点,以最大程度减少停机时间。
gcloud
更新集群时,请指定 --enable-shielded-nodes
选项:
gcloud container clusters update CLUSTER_NAME \
--enable-shielded-nodes
控制台
转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。
点击要修改的集群的名称。
在安全下的安全强化型 GKE 节点字段中,点击 edit 修改安全强化型 GKE 节点。
选中启用安全强化型 GKE 节点复选框。
点击保存更改。
验证是否已启用安全强化型 GKE 节点
您可以通过 Google Cloud CLI 或 Google Cloud 控制台来验证集群是否使用的是安全强化型 GKE 节点。
gcloud
描述集群:
gcloud container clusters describe CLUSTER_NAME
如果启用了安全强化型 GKE 节点,则该命令的输出将包括以下行:
shieldedNodes:
enabled: true
控制台
如需验证集群是否使用了安全强化型 GKE 节点,请执行以下操作:
转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。
点击您要检查的集群的名称。
在安全下的安全强化型 GKE 节点字段中,验证安全强化型 GKE 节点是否已启用。
您还可以监控节点的底层安全强化型虚拟机的完整性。请参阅监控安全强化型虚拟机实例的完整性,了解具体操作。
停用安全强化型 GKE 节点
您可以通过 Google Cloud CLI 或 Google Cloud 控制台停用安全强化型 GKE 节点。
gcloud
更新集群时,请指定 --no-enable-shielded-nodes
选项:
gcloud container clusters update CLUSTER_NAME \
--no-enable-shielded-nodes
控制台
转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。
点击要修改的集群的名称。
在安全下的安全强化型 GKE 节点字段中,点击 edit 修改安全强化型 GKE 节点。
取消选中启用安全强化型 GKE 节点复选框。
点击保存更改。
停用安全强化型 GKE 节点后,系统会将控制平面和节点重新创建为普通的非安全强化型虚拟机。控制平面在重新创建期间不可用。系统会以滚动方式重新创建集群节点,以最大程度减少停机时间。
节点完整性
安全启动和完整性监控是可与安全强化型 GKE 节点结合使用的节点池设置。安全强化型 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
选项明确停用该功能。
控制台
如需在创建节点池时启用安全启动,请运行以下命令:
转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。
点击要修改的集群的名称。
点击 add_box 添加节点池。
在导航菜单中,点击安全。
在安全强化选项下,选中启用安全启动复选框。
点击创建。
完整性监控
完整性监控是在 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
选项明确启用该功能。
控制台
要在创建节点池时停用完整性监控功能,请执行以下操作:
转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。
点击要修改的集群的名称。
点击 add_box 添加节点池。
在导航窗格中,点击安全。
在安全强化选项下,取消选中启用完整性监控复选框。