控制平面安全

本文档介绍 Google Kubernetes Engine 中集群控制平面组件的安全防护措施。

共同责任模式下,Google 会为您管理 GKE 控制平面组件。控制平面包括 Kubernetes API 服务器、etcd 和多个控制器。您可能能够根据自己的要求配置某些选项,但控制平面的安全由 Google 负责。您负责节点、容器和 Pod 的安全。

安全强化型操作系统

GKE 控制平面组件在 Container-Optimized OS 中运行,该操作系统是由 Google 设计的安全强化型操作系统。有关 Container-Optimized OS 内置安全功能的详细说明,请参阅 Container-Optimized OS 的安全概览

架构和隔离

在 GKE 集群中,控制平面组件在 Google 管理的项目中的由 Google 拥有的 Compute Engine 实例上运行。每个实例仅为一个客户运行这些组件。

Kubernetes API 服务器和 etcd 的身份验证方式与其他 Google Cloud 服务相同。 应用层传输安全性 (ALTS) 为这些通信提供保护。

集群的管理员权限

Google 网站可靠性工程师的 SSH 会话通过 Google 的内部审核基础架构记录到审核日志中,可用于取证和安全响应。如需了解详情,请参阅 Google 安全性白皮书中的管理员权限

etcd 安全性

在 Google Cloud 中,默认情况下,客户内容在文件系统层加密。因此,托管 GKE 集群的 etcd 存储的磁盘在文件系统层加密。如需了解详情,请参阅静态加密

etcd 监听两个 TCP 端口。端口 2379 用于 etcd 客户端,如 Kubernetes API 服务器。端口 2379 绑定到本地环回网络接口,因此只能从运行 Kubernetes API 服务器的虚拟机访问。端口 2380 用于服务器到服务器的通信。端口 2380 上的流量通过双向 TLS 加密,也就是说,两端的服务器必须向彼此证明身份。在区域性集群中,用于建立仲裁的 etcd 服务器之间的通信通过双向 TLS 加密。

证书颁发机构和集群信任

每个集群都有自己的根证书颁发机构 (CA)。 Google 内部服务管理此类根证书颁发机构的根密钥。每个集群还有自己的 etcd 根证书颁发机构。etcd 根证书颁发结构的根密钥会分发给运行 Kubernetes API 服务器的虚拟机的元数据。 节点与 Kubernetes API 服务器之间的通信受 TLS 保护。如需了解详情,请参阅集群信任

漏洞和补丁程序管理

GKE 遵循 Google 标准来测试、鉴定和逐步推出对控制平面的更改。这样可以最大限度地降低控制平面组件不可用的风险。GKE 遵循服务等级协议,该协议定义了可用性的诸多方面。

GKE 控制平面组件由 Google 站点可靠性工程师团队管理,并保持用最新的安全补丁实时更新。这包括主机操作系统、Kubernetes 组件以及在控制平面虚拟机上运行的容器的补丁程序。

GKE 会及时应用新的内核、操作系统和 Kubernetes 级别的修复来控制平面虚拟机,在其中包含对已知漏洞的修复时,您可以在 GKE 安全公告中找到更多信息。GKE 使用 Container Registry 漏洞扫描功能扫描所有 Kubernetes 系统和 GKE 特定容器的漏洞,并实时修补容器,从而使整个 Kubernetes 生态系统受益。

Google 工程师参与查找、修复和披露 Kubernetes 安全错误。Google 还通过 Google 漏洞奖励计划向外部安全研究人员支付报酬,以寻找安全漏洞。在某些情况下,例如对于 2017 年 10 月的 dnsmasq 漏洞,GKE 成功在公开此漏洞之前修补了所有正在运行的集群。

后续内容

本主题前面讨论的安全功能由 Google 管理。 本节和下一节讨论您可以监控和配置的安全功能。

自 1.8.3 版起,创建的集群默认启用审核日志记录。这提供了对 Kubernetes API 服务器进行调用的详细记录(可在 Stackdriver 中获取)。您可以通过 GCP Console 中的“日志”页面查看日志条目。您还可以使用 BigQuery 查看和分析这些日志。

您可以配置的内容

默认情况下,Kubernetes API 服务器使用公共 IP 地址。您可以通过使用主授权网络专用集群(可让您为 Kubernetes API 服务器分配专用 IP 地址并停用对公共 IP 地址的访问权限)来保护 Kubernetes API 服务器。

您可以将 Cloud Identity and Access Management (Cloud IAM) 用作身份提供方在 GKE 中处理集群身份验证。您应该为 MasterAuth 配置设置空白用户名和密码,从而确保已停用基本身份验证。在同一配置中,您还可以停用客户端证书,以确保在锁定对集群的访问权限时可以少考虑一个密钥。

您可以通过定期执行凭据轮替来增强控制平面的安全。启动凭据轮替后,TLS 证书和集群证书颁发机构将自动轮替。 GKE 还会轮替 Kubernetes API 服务器的 IP 地址。如需了解详情,请参阅基于角色的访问权限控制凭据轮替

后续步骤