Kubernetes 的开发速度较快,经常会有新的安全功能供您使用。本文档介绍如何强化 GKE On-Prem 集群的安全性。
本指南首先介绍重要安全措施,这些措施需要您在创建集群时执行相关操作。不太重要的功能、默认安全的设置以及可在创建集群后启用的功能会在文档后面介绍。如需大致了解安全主题,请参阅安全。
核对清单
以下部署核对清单强调了强化 Anthos 集群平台部署安全性的最佳做法。如需详细了解每种做法,请参阅本文档中的各个部分。
部署核对清单 | 说明 |
---|---|
身份和访问权限控制 | 使用 vSphere 帐号权限: 保护 Google Cloud 服务帐号的安全: 配置 OpenID Connect (OIDC): 使用 Kubernetes 命名空间和 RBAC 限制访问权限: |
数据保护 | 加密 vSphere 虚拟机: 管理密文: |
网络保护 | 限制对控制层面和节点的网络访问: 使用网络政策来限制流量: |
声明式安全 | 使用 Anthos Config Management 政策控制器: |
维护 | 升级 Anthos: 监控安全公告: |
监控和日志记录 | 设置 Anthos 集群日志记录选项: |
身份和访问权限控制
使用 vSphere 帐号权限
您用于安装 GKE On-Prem 的 vCenter 用户帐号必须具有足够的权限。例如,被分配了 vCenter 的 Administrator 角色的用户帐号拥有对所有 vCenter 对象的完整访问权限,并向 GKE On-Prem 集群管理员提供完整访问权限。
建议使用最小权限原则,仅授予成功安装 Anthos 的必要权限。我们预定义了执行安装所需的最小权限集以及授予这些权限所需的命令。
保护 Google Cloud 服务帐号的安全
GKE On-Prem 需要 4 个 Google Cloud 服务帐号:
- 已预定义的服务帐号,用于访问 GKE On-Prem 软件。您可以在购买 Anthos 时创建此帐号。
- 注册服务帐号,供 Connect 用于将 GKE On-Prem 集群注册到 Google Cloud。
- 连接服务帐号,供 Connect 用于在 GKE On-Prem 集群和 Google Cloud 之间建立连接。
- Cloud Logging 服务帐号,用于收集集群日志以供 Cloud Logging 使用。
在安装期间,您将 Identity and Access Management 角色绑定到这些服务帐号。这些角色会向服务帐号授予在您项目中的特定权限,并且可以在安装期间为您生成。
配置 OpenID Connect
您只能在创建集群时配置身份验证。如需为集群配置用户身份验证,请使用 OpenID Connect (OIDC)。
GKE On-Prem 支持将 OIDC 用作与用户集群的 Kubernetes API 服务器进行交互的身份验证机制之一。借助 OIDC,您可以按照组织中创建、启用和停用用户帐号的标准程序来管理对 Kubernetes 集群的访问权限。
如需具体的 OIDC 支持,请参阅以下文档:
使用 Kubernetes 命名空间和 RBAC 限制访问权限
如需向团队授予对 Kubernetes 的最低访问权限,请创建 Kubernetes 命名空间或特定于环境的集群。为每个命名空间分配成本中心和适当的标签,以实现责任的明晰化和退款。仅为开发者提供部署和管理应用(特别是在生产环境中)所需的访问权限级别,允许其对命名空间进行访问。
划分用户需要对集群执行的任务,并定义完成每项任务所需的权限。如需授予集群级层和命名空间级层的权限,请使用 Kubernetes RBAC。
除了 Google Cloud 服务帐号用于安装 GKE On-Prem 的权限之外,IAM 不适用于 GKE On-Prem 集群。
如需了解详情,请参阅以下文档:
数据保护
加密 vSphere 虚拟机
GKE On-Prem 集群节点在 vSphere 集群中的虚拟机上运行。Google 强烈建议您对所有静态数据进行加密。如需在 vSphere 上执行此操作,请遵循 VMware vSphere 安全 PDF 和加密虚拟机的最佳做法指南。
此操作必须在安装 Anthos 之前完成。
管理密文
如需为敏感数据(例如存储在 etcd 中的 Kubernetes Secret)提供额外保护,请配置与 GKE On-Prem 集群集成的 Secret 管理器。
如果您在多个环境中运行工作负载,则可能更适合使用同时适用于 Google Kubernetes Engine 和 GKE On-Prem 的解决方案。如果您选择使用 HashiCorp Vault 等外部 Secret 管理器,请在集成 GKE On-Prem 集群之前设置该管理器。
您可以通过多种方式来管理密文。
- 您可以在 GKE On-Prem 中以原生方式使用 Kubernetes Secret。如前文所述,我们希望集群针对虚拟机使用 vSphere 加密,为 Secret 提供基本的静态加密保护。默认情况下,Secret 不会进一步加密。
- 您可以使用外部 Secret 管理器,例如 HashiCorp Vault。您可以使用 Kubernetes 服务帐号或 Google Cloud 服务帐号向 HashiCorp 进行身份验证。
如需了解详情,请参阅以下文档:
网络保护
限制对控制层面和节点的网络访问
限制集群控制层面和节点向互联网的公开程度。创建集群后,无法更改这些选项。 默认情况下,GKE On-Prem 集群是使用 RFC 1918 地址创建的,最佳做法是不要更改此设置。在本地网络中实施防火墙规则,以限制对控制层面的访问。
使用网络政策来限制流量
默认情况下,GKE On-Prem 集群中的所有 Service 都可以相互通信。如需了解如何根据工作负载的需要控制服务间通信,请参阅以下部分。
限制网络对服务的访问权限可以大大增加攻击者在集群中横向移动的难度,可以保护服务免遭意外的或故意的拒绝服务攻击。建议使用以下两种方法来控制流量:
- 如需控制到应用端点的 L7 流量,请使用 Istio。如果您对负载平衡、服务授权、节流、配额和指标感兴趣,请选择此方法。
- 如需控制 pod 之间的 L4 流量,请使用 Kubernetes 网络政策。如果您需要 Kubernetes 所公开的基本访问权限控制功能,请选择此方法。
您可以在创建 GKE On-Prem 集群后同时启用 Istio 和 Kubernetes 网络政策。如有需要,您可以同时使用它们。
如需了解详情,请参阅以下文档:
声明式安全
使用 Anthos Config Management 政策控制器
Kubernetes 准入控制器是负责管理和实施 Kubernetes 集群使用方式的插件。准入控制器是强化集群安全性的深度防御方法的重要组成部分。
最佳做法是使用 Anthos Config Management 的政策控制器。政策控制器使用 OPA 限制框架将政策描述和实施为 CRD。您希望应用于集群的限制是在集群中部署的限制模板中定义的。
如需了解如何使用政策控制器限制条件来实现与 PodSecurityPolicy 相同的许多保护措施,以及在强制执行政策前对其进行测试的功能,请参阅使用限制条件来强制执行 Pod 安全。
如需了解详情,请参阅以下文档:
维护
升级 Anthos
Kubernetes 经常引入新的安全功能并提供安全补丁程序。
您需要确保您的 GKE On-Prem 集群保持最新状态。对于每个版本,请查看版本说明。此外,请规划更新,每个月更新到最新的补丁程序版本,每三个月更新到次要版本。了解如何升级集群。
此外,您还需负责升级和保护 vSphere 基础架构:
- 建立及时修补和升级虚拟机的流程。
- 及时了解最新的 VMware 安全建议
- 按照将补丁程序应用于主机中的指导进行操作
监控安全公告
Anthos 安全团队会针对严重程度为“高”和“严重”的漏洞发布安全公告。
这些公告遵循通用的 Google Cloud 漏洞编号方案,并且在链接到 Google Cloud 公告主页和 GKE On-Prem 版本说明。每个安全公告页面都有一个 RSS Feed,供用户订阅更新。
如果需要客户操作才能解决这些严重程度为高和严重的漏洞,Google 会通过电子邮件与客户联系。此外,Google 可能还会通过支持渠道就支持合同事宜联系客户。
如需了解详情,请参阅以下文档:
监控和日志记录
设置 Anthos 集群日志记录选项
GKE On-Prem 包含多种集群日志记录和监控选项,其中包括云端代管式服务、开放源代码工具,以及经过验证的与第三方商业解决方案的兼容性:
- Cloud Logging 和 Cloud Monitoring,由使用 GKE On-Prem 部署的集群内代理启用
- Prometheus 和 Grafana,默认情况下处于停用状态
- 经过验证且适用于第三方解决方案的配置
无论您基于业务要求选择哪种日志记录解决方案,我们强烈建议您将转发相关事件和提醒记录到集中式安全信息和事件管理 (SIEM) 服务中,以管理安全突发事件。
如需了解详情,请参阅以下文档:
- 日志记录和监控
- 使用日志记录和监控功能
- 应用日志记录和监控功能
- 使用 Elastic Stack 监控 Anthos clusters on VMware
- 使用 Splunk Connect 在 Anthos 上收集日志