
168
|
第
6
章
6.3.5 安全地存储所有密钥
系统中的所有密钥,无论是组件使用的还是 CI/CD 流程中需要使用的,都应该经过加
密并安全地保存。这听起来似乎很容易,但绝对不要以明文的形式存储任何机密,请始
终对其进行加密。最好使用现有的
、
经过验证的密钥管理系统来为你处理这些事情。最
简单的选择是使用 Kubernetes Secrets 来存储集群中的服务使用的密钥,密钥会存储在
etcd 这个分布式键 / 值存储中。但是,与使用 Kubernetes Secrets 相比,托管和集中式的
解决方案会具有多个优势。因为所有内容都集中存储,你可以定义访问控制策略,密钥
也会被加密,并且提供了审计功能,等等。Microsoft Azure Key Vault
、
Amazon Secrets
Manager 和 HashiCorp Vault 是一些托管解决方案的示例。
6.3.6 模糊化数据
你的组件中用到的所有数据都应该需要恰当的模糊化处理。例如,你永远都不会希望在
明文中记录任何可以归类为个人身份信息(Personally Identifiable Information, PII)的数
据。如果你需要在日志中记录或者是把它保存下来,那么它必须经过混淆(如果是记录
日志)或者进行加密(如果是保存)。
6.3.7 传输数据加密
当数据在组件之间传输时,应当经过加密,这样当通信被劫持时你的数据才可以得到保
护。为了实现这种保护,你需要先对数据进行加密,然后再进行传输,对接入点进行身
份验证,最后在到达接入点后对数据进行解密和验证 ...