Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

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: {}

1
每一资源 数组项是单独的配置,包含完整的配置。
2
resources.resources 字段是应加密的 Kubernetes 资源名称(资源或 resource.group)的数组。
3
provider 数组是一个有顺序的、可能加密的提供程序列表。每个条目只能指定一个提供程序类型(身份aescbc ),但不能提供同一项中的两个提供程序。
4
列表中的第一个提供程序用于对存储到存储的资源进行加密。
5
secret 的任意名称。
6
base64 编码的随机密钥。不同的提供程序具有不同的密钥长度。请参阅 如何生成密钥

从存储中读取资源时,与存储的数据匹配的每个提供程序都会尝试按顺序解密数据。如果没有因为格式或 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 个写入限制只会将致命非滥用的可能性限制为合理的低利润。