本页介绍了 Google Kubernetes Engine (GKE) 提供的选项,可帮助您更好地了解托管式控制平面的安全状况并加以控制。这些选项统称为 GKE 控制平面授权。本页面适用于希望满足处理敏感数据的严格隐私和安全需求的信息安全领导、合规性管理员和分析师。
GKE 控制平面授权功能简介
在 GKE 中, Google Cloud 会全面管理控制平面的安全配置,包括对静态存储进行加密,以及配置用于在集群中对凭据进行签名和验证的密钥和证书颁发机构 (CA)。GKE 集群的控制平面节点位于 Google Cloud 管理的项目中。如需详细了解 Google Cloud 的运作方式,请参阅 GKE 共担责任。
GKE control plane authority 是一组可选的可见性和控制功能,可让您验证和管理这些完全托管的控制平面节点的特定方面。如果您有以下要求,这些功能非常适合:
- 您从事的是金融、医疗保健或政府等受到严格监管的行业,需要遵守特定的合规性要求
- 您处理的敏感数据具有严格的安全和加密要求
- 您希望增强对 GKE 的可见性,以便在运行关键工作负载时更加放心
- 您必须满足与数据加密、软件完整性或日志记录相关的特定合规性或审核要求
- 您有处理关键数据的高敏感工作负载,并且希望了解对这些数据的加密和访问情况
- 您希望强制执行符合特定组织或监管要求的自定义安全政策
- 您希望增强对 GKE 环境的透明度和可见性,尤其是与Google Cloud 在控制平面中执行的操作相关
GKE 控制平面授权的优势
GKE 控制平面授权功能非常适合具有严格安全政策或严格审核要求的高度受监管环境。使用这些功能可带来以下好处:
- 增强的可见性和控制功能:为 GKE 控制平面使用额外的可见性、控制和加密功能。
- 简化合规性流程:借助精细的审核日志和可自定义的安全政策,满足法规和行业要求。
- 增强信任度和透明度:深入了解Google Cloud 在控制平面中执行的操作,以便更妥善地解决客户支持请求。
- 风险缓解:借助全面的日志,主动检测并应对托管式控制平面可能受到的威胁。
- 标准化 CA 和密钥管理:使用 Certificate Authority Service 管理 GKE 集群 CA,让您可以将证书管理委托给特定团队,并全面强制执行 CA 政策。此外,您还可以使用 Cloud KMS 管理控制平面磁盘加密密钥,以实现类似的管理委托。
GKE 控制平面授权的运作方式
您可以与控制平面搭配使用的功能会根据您所需的控制类型进行分类,如下所示。您可以根据自己的具体需求使用其中一个或多个功能。
- 密钥和凭据管理:控制 GKE 用于在控制平面中加密静态数据以及在集群中签发和验证身份的密钥。
- 访问日志和身份颁发日志:使用来自网络、虚拟机和 Access Transparency 功能的日志,通过多个来源验证 GKE 控制平面访问权限。您可以使用 Cloud KMS 和 CA Service 中的身份颁发日志,查看何时使用您管理的密钥和 CA 创建了身份。使用详细的 Kubernetes API 使用情况日志跟踪这些身份在集群中的操作。
密钥和凭据管理
默认情况下, Google Cloud 会为您管理 GKE 集群中的密钥和 CA。您可以选择使用 Cloud KMS 和 CA Service 来设置自己的密钥和 CA,然后在创建新集群时使用这些密钥和 CA。
GKE 会使用这些密钥和 CA(而不是 Google Cloud默认密钥)来在集群中颁发和验证身份,以及加密控制平面虚拟机中的数据。保持对身份颁发和数据加密密钥的控制有助于您执行以下操作:
- 遵守要求对密钥拥有专有控制权的数据主权和隐私权法规
- 通过管理您自己的加密密钥,控制 Kubernetes 中关键敏感数据的加密
- 根据贵组织的政策和要求(例如使用硬件加密密钥的要求)自定义数据加密策略。
自行管理的 CA 和服务账号密钥
您可以将 GKE 控制平面配置为使用您管理的 Cloud KMS 密钥和 CA Service CA。GKE 使用这些资源在集群中签发和验证身份。例如,GKE 使用 CA 和密钥来颁发 Kubernetes 客户端证书和 Kubernetes 服务账号不记名令牌。
您需要创建以下资源,以便 GKE 在颁发身份时使用:
- 服务账号签名密钥:为集群中的服务账号签署 Kubernetes ServiceAccount 不记名令牌。这些不记名令牌是 JSON Web 令牌 (JWT),可帮助 Pod 与 Kubernetes API 服务器通信。
- 服务账号验证密钥:用于验证 Kubernetes 服务账号 JWT。此密钥通常与签名密钥相同,但单独进行配置,以便您更安全地轮替密钥。
- 集群 CA:用于出于证书签名请求 (CSR) 和 kubelet 通信等目的签发已签名证书。
- etcd 对等 CA:为集群中 etcd 实例之间的通信颁发签名证书。
- etcd API CA:颁发签名证书,以便与 etcd API 服务器通信。
- 汇总 CA:颁发签名证书,以便在 Kubernetes API 服务器和扩展程序服务器之间实现通信。
当 GKE 在集群中发放身份时,您会在 Cloud Logging 中看到相应的审核日志,您可以使用这些日志跟踪已发放身份在其生命周期内的使用情况。
如需了解详情,请参阅在 GKE 中运行您自己的证书颁发机构和签名密钥。
控制平面启动磁盘和 etcd 加密
默认情况下,GKE 会使用 Google Cloud管理的加密密钥,对控制平面虚拟机的启动磁盘、在 etcd 中存储数据的磁盘以及 Google Cloud 的 etcd 内部操作备份进行加密。如需详细了解此默认加密,请参阅默认静态加密。
您可以选择使用您使用 Cloud KMS 管理的加密密钥来加密以下资源:
- 控制平面启动磁盘:每个控制平面虚拟机用于启动的 Compute Engine 磁盘。
- etcd 磁盘:挂接到每个控制平面虚拟机并在集群中存储 etcd 实例数据的 Compute Engine 磁盘。
etcd 内部运维备份:etcd 的内部 Google Cloud 备份,用于灾难恢复等运维目的。
此备份是 Google Cloud内部的应急措施。如果您想备份和恢复集群,请改用 Backup for GKE。
如需了解相关说明,请参阅对 etcd 和控制平面启动磁盘进行加密。
如果您必须满足与控制集群控制平面中的加密方式相关的特定监管或合规性要求,则此额外的可选加密方式非常适合。您可以使用自己的密钥分别对集群中工作器节点的启动磁盘和存储磁盘进行加密。如需了解详情,请参阅使用客户管理的加密密钥 (CMEK)。
当您使用 GKE 控制平面授权对控制平面启动磁盘进行加密时,GKE 控制平面虚拟机会在启动磁盘中自动使用适用于 Hyperdisk Balanced 的机密模式。此配置不会更改工作器节点的默认启动磁盘。
访问日志和身份证件签发日志
您可以在 Logging 中查看与控制平面中的访问权限和身份相关的所有事件的日志,包括以下事件:
- 直接访问:通过与对 GKE 控制平面节点的直接访问尝试(例如 SSH)相关的日志,您可以验证虚拟机 SSH 日志和虚拟机网络连接是否与 Access Transparency 日志中的 SSH 记录相匹配。
- 身份颁发和验证:与使用您在 CA Service 和 Cloud KMS 中管理的 CA 和密钥颁发的身份相关的日志。
- Kubernetes 中的身份使用情况:与特定身份对 Kubernetes API 服务器执行的操作相关的日志。
- Access Transparency:与控制平面建立的连接以及 Google Cloud 人员对控制平面执行的操作相关的日志。
这些日志可帮助您执行以下操作:
- 为所有控制平面访问和身份事件保留全面的审核跟踪记录,以确保合规性和安全性。
- 除了 Google 内置的保护措施之外,您还可以构建自己的监控机制,以识别和调查控制平面中的任何可疑活动。
- 验证只有已获授权的实体才能访问和与您的 GKE 集群交互,从而改善您的安全状况。
- 通过 Cloud KMS 和 CA 服务中的身份证书颁发日志,了解何时使用您管理的密钥和 CA 创建了身份。使用详细的 Kubernetes API 使用情况日志跟踪这些身份在集群中的操作。
以下文档介绍了如何查看和处理各种类型的控制平面日志:
有关控制平面安全的其他资源
本部分介绍了可用于增强对控制平面安全性的信心的其他方法。您无需使用 GKE 控制平面权限即可使用以下资源:
控制平面虚拟机映像完整性:GKE 会将节点虚拟机创建和启动事件的详细日志添加到 Cloud Logging。此外,我们还会在 GitHub 上发布与控制平面和工作器节点机器映像对应的 SLSA VSA。您可以验证虚拟机是否使用具有相应 VSA 的操作系统映像,并验证每个控制平面虚拟机的启动完整性。
如需执行虚拟机完整性验证,请参阅验证 GKE 控制平面虚拟机完整性。
内置的控制平面安全措施:GKE 会对托管式控制平面执行各种强化措施。如需了解详情,请参阅控制平面安全。
后续步骤
- 在 GKE 中运行您自己的证书授权机构和签名密钥
- 使用您的密钥加密 GKE 控制平面静态数据
- 验证 GKE 控制平面虚拟机完整性
- 验证 GKE 集群中的凭据发放和使用情况
- 验证 Google 人员在集群控制平面中的连接