34.3. 了解加密配置
使用所有可用供应商的加密配置文件
kind: EncryptionConfig apiVersion: v1 resources: 1 - resources: 2 - secrets providers: 3 - aescbc: 4 keys: - name: key1 5 secret: c2VjcmV0IGlzIHNlY3VyZQ== 6 - name: key2 secret: dGhpcyBpcyBwYXNzd29yZA== - secretbox: keys: - name: key1 secret: YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoxMjM0NTY= - aesgcm: keys: - name: key1 secret: c2VjcmV0IGlzIHNlY3VyZQ== - name: key2 secret: dGhpcyBpcyBwYXNzd29yZA== - identity: {}
从存储中读取资源时,与存储的数据匹配的每个提供程序都会尝试按顺序解密数据。如果没有因为格式或 secret 密钥不匹配而导致存储的数据读取存储的数据,则会返回一个错误,这可以防止客户端访问该资源。
如果任何资源无法通过加密配置读取(因为键已更改),则唯一恢复是从底层的 etcd 中直接删除该密钥。调用尝试读取该资源将会失败,直到它被删除或有效解密密钥。
34.3.1. 可用供应商
名称 | Encryption | 强度 | 速度 | 键长度 | 其他注意事项 |
---|---|---|---|---|---|
身份 | 无 | N/A | N/A | N/A | 在不加密的情况下写为即用的资源。当设置为第一个提供程序时,资源将作为新值进行解密。 |
aescbc | AES-CBC,带有 PKCS#7 padding | 强大 | 速度快 | 32 字节 | 推荐的加密选择,但可能比 secretbox 稍慢。 |
secretbox | XSalsa20 and Poly1305 | 强 | 速度更快 | 32 字节 | 较新的标准,在需要高审核级别的环境中不被视为可以接受。 |
aesgcm | AES-GCM,带有随机初始化向量(IV) | 必须对每 200,000 个写入进行轮转 | 十快 | 16、24 或 32 字节 | 不建议使用,除非采用自动密钥轮转方案。 |
每个供应商支持多个密钥。为解密而尝试密钥。如果该提供程序是第一个提供程序,则使用第一个密钥进行加密。
Kubernetes 没有正确的非生成器,并使用随机 IV 作为 AES-GCM 的非。由于 AES-GCM 需要正确非安全,因此不推荐使用 AES-GCM。200,000 个写入限制只会将致命非滥用的可能性限制为合理的低利润。