Kubernetes安全配置与访问控制全解析
1. 集中式密钥管理
在Kubernetes中,密钥(Secrets)已经尽可能地安全,但拥有集群范围读取权限的管理员仍可读取未加密存储的所有密钥。除了将密钥处理逻辑嵌入应用代码,另一种选择是将安全信息存储在集群外部的集中式密钥管理系统(SMS)中,并通过安全通道按需请求机密信息。
目前有越来越多的SMS可供选择,每个云提供商都有自己的版本。接下来重点介绍这些系统如何集成到Kubernetes中。
1.1 密钥存储CSI驱动
容器存储接口(CSI)是Kubernetes用于向容器化应用程序暴露存储系统的API。CSI为第三方存储提供商提供了将新类型存储挂载为Kubernetes卷的途径。其中,密钥存储CSI驱动尤为重要。
该驱动由Kubernetes社区开发和维护,允许访问各种集中式SMS,并将其作为常规的Kubernetes卷挂载。与第20章中描述的挂载密钥卷不同,此驱动不会将任何数据存储在Kubernetes的etcd数据库中,而是安全地存储在集群外部。
密钥存储CSI驱动支持主要云供应商(AWS、Azure和GCP)的SMS以及HashiCorp Vault。
要通过CSI驱动连接密钥管理器,需要完成以下两个管理任务:
- 安装密钥存储CSI驱动并配置对特定SMS的访问。安装过程需要集群管理员权限。
- 配置访问规则和策略。需要完成几个特定于提供商的步骤,最终将Kubernetes服务账户映射到允许访问密钥的密钥管理器特定角色。
配置完成后,使用密钥卷就很简单了。首先,需要定义一个 Secre