本页面介绍了如何使用安全强化型 GKE 节点功能。安全强化型 GKE 节点提供强大、可验证的节点身份和完整性,能够提高 Google Kubernetes Engine (GKE) 节点的安全性。
关于安全强化型 GKE 节点
安全强化型 GKE 节点是在 Compute Engine 安全强化型虚拟机的基础上构建的。在没有安全强化型 GKE 节点的情况下,攻击者可能会利用 Pod 中的漏洞来泄露引导凭据,并模拟集群中的节点,向攻击者授予对集群密钥的访问权限。启用安全强化型 GKE 节点后,GKE 控制层面会以加密方式验证以下各项:
- 集群中的每个节点都是在 Google 数据中心中运行的虚拟机。
- 每个节点都是针对集群预配的代管实例组的一部分。
- 系统正在针对运行 kubelet 的节点,为 kubelet 预配证书。
这限制了攻击者模拟集群中节点的能力,即使攻击者可以泄露节点的引导凭据。
您可以选择对节点池配置节点完整性检查,从而为您的节点提供增强型 rootkit 和 bootkit 保护。这些节点池设置与安全强化型 GKE 节点无关,即使在集群上停用了安全强化型 GKE 节点,这些设置仍会有效。
如需了解详情,请参阅安全强化型虚拟机文档。
运行安全强化型 GKE 节点无需额外费用。但安全强化型 GKE 节点在启动时生成的日志比标准节点多 0.5 KB。如需了解详情,请参阅 Cloud Logging 价格页面。
可用性
- 安全强化型 GKE 节点适用于 GKE 1.13.6-gke.0 及更高版本。
- 安全强化型 GKE 节点适用于所有区域和地区。
- 安全强化型 GKE 节点可用于 Container-Optimized OS (COS)、带有 containerd 的 COS 和 Ubuntu 节点映像。
- 安全强化型 GKE 节点可用于 GPU。
准备工作
在开始之前,请确保您已执行以下任务:
- 确保您已启用 Google Kubernetes Engine API。 启用 Google Kubernetes Engine API
- 确保您已安装 Cloud SDK。
使用以下任一方法设定默认的 gcloud
设置:
- 使用
gcloud init
(如果您想要在系统引导下完成默认设置)。 - 使用
gcloud config
(如果您想单独设置项目 ID、区域和地区)。
使用 gcloud init
如果您收到 One of [--zone, --region] must be supplied: Please specify
location
错误,请完成本部分。
-
运行
gcloud init
并按照说明操作:gcloud init
如果您要在远程服务器上使用 SSH,请使用
--console-only
标志来防止命令启动浏览器:gcloud init --console-only
-
按照说明授权
gcloud
使用您的 Google Cloud 帐号。 - 创建新配置或选择现有配置。
- 选择 Google Cloud 项目。
- 选择默认的 Compute Engine 区域。
使用 gcloud config
在新集群中启用安全强化型 GKE 节点
您可以使用 gcloud
工具或 Google Cloud Console 创建启用了安全强化型 GKE 节点的新集群。
gcloud
创建新集群时,请指定 --enable-shielded-nodes
选项:
gcloud container clusters create cluster-name --enable-shielded-nodes
控制台
访问 Cloud Console 中的 Google Kubernetes Engine 菜单。
点击 add_box 创建。
在导航窗格的集群下,点击安全。
选中启用安全强化型 GKE 节点复选框。
根据需要配置集群。
点击创建。
如需详细了解如何创建集群,请参阅创建集群。
在现有集群中启用安全强化型 GKE 节点
您可以使用 gcloud
命令行工具或 Google Cloud Console 在现有集群中启用安全强化型 GKE 节点。
启用安全强化型 GKE 节点后,系统会将控制平面和节点重新创建为安全强化型虚拟机。控制平面在重新创建期间不可用。系统会以滚动方式重新创建集群节点,以最大程度减少停机时间。
gcloud
更新集群时,请指定 --enable-shielded-nodes
选项:
gcloud container clusters update cluster-name --enable-shielded-nodes
控制台
访问 Cloud Console 中的 GKE 菜单。
点击要修改的集群的名称。
在安全下的安全强化型 GKE 节点字段中,点击 edit 修改安全强化型 GKE 节点。
选中启用安全强化型 GKE 节点复选框。
点击保存更改。
验证是否已启用安全强化型 GKE 节点
您可以使用 gcloud
命令行工具或 Google Cloud Console 来验证您的集群是否使用了安全强化型 GKE 节点。
gcloud
描述集群:
gcloud container clusters describe cluster-name
如果启用了安全强化型 GKE 节点,则该命令的输出将包括以下行:
shieldedNodes:
enabled: true
控制台
如需验证集群是否使用了安全强化型 GKE 节点,请执行以下操作:
访问 Cloud Console 中的 GKE 菜单。
点击您要检查的集群的名称。
在安全下的安全强化型 GKE 节点字段中,验证安全强化型 GKE 节点是否已启用。
您还可以监控节点的底层安全强化型虚拟机的完整性。请参阅监控安全强化型虚拟机实例的完整性,了解具体操作。
停用安全强化型 GKE 节点
您可以使用 gcloud
命令行工具或 Google Cloud Console 停用安全强化型 GKE 节点。
gcloud
更新集群时,请指定 --no-enable-shielded-nodes
选项:
gcloud container clusters update cluster-name --no-enable-shielded-nodes
控制台
访问 Cloud Console 中的 GKE 菜单。
点击要修改的集群的名称。
在安全下的安全强化型 GKE 节点字段中,点击 edit 修改安全强化型 GKE 节点。
取消选中启用安全强化型 GKE 节点复选框。
点击保存更改。
停用安全强化型 GKE 节点后,系统会将控制平面和节点重新创建为普通的非安全强化型虚拟机。控制平面在重新创建期间不可用。系统会以滚动方式重新创建集群节点,以最大程度减少停机时间。
节点完整性
安全启动和完整性监控是可与安全强化型 GKE 节点结合使用的节点池设置。安全强化型 GKE 节点、安全启动和完整性监控是独立功能,可单独启用或停用。
安全启动
安全启动是在 GKE 上默认处于停用状态的节点池设置,因为启用安全启动后无法加载第三方未签名的内核模块。
如果您不使用第三方未签名的内核模块,则可以使用 gcloud
命令行工具或 Google Cloud Console 启用安全启动。
gcloud
如需在创建集群时启用安全启动,请运行以下命令:
gcloud container cluster create cluster-name --shielded-secure-boot
如需在创建节点池时启用安全启动,请运行以下命令:
gcloud container node-pool create pool-name --shielded-secure-boot
“安全启动”默认处于停用状态。您可以在创建集群或节点池时使用 --no-shielded-secure-boot
选项明确停用该功能。
控制台
如需在创建节点池时启用安全启动,请运行以下命令:
访问 Cloud Console 中的 GKE 菜单。
点击要修改的集群的名称。
点击 add_box 添加节点池。
在导航菜单中,点击安全。
在安全强化选项下,选中启用安全启动复选框。
点击创建。
完整性监控
完整性监控是在 GKE 上默认处于启用状态的节点池设置。您可以使用 gcloud
命令行工具或 Google Cloud Console 停用完整性监控。
gcloud
要在创建集群时停用对系统组件的完整性监控,请运行以下命令:
gcloud container cluster create cluster-name --no-shielded-integrity-monitoring
要在创建节点池时停用对系统组件的完整性监控,请运行以下命令:
gcloud container node-pool create pool-name --no-shielded-integrity-monitoring
完整性监控默认处于启用状态。您可以在创建集群或节点池时使用 --shielded-integrity-monitoring
选项明确启用该功能。
控制台
要在创建节点池时停用完整性监控功能,请执行以下操作:
访问 Cloud Console 中的 GKE 菜单。
点击要修改的集群的名称。
点击 add_box 添加节点池。
在导航窗格中,点击安全。
在安全强化选项下,取消选中启用完整性监控复选框。