默认情况下,以下数据以加密方式存储在 Hybrid 运行时层面中:
- 密钥管理系统 (KMS) 数据
- 键值对映射 (KVM) 数据
- 缓存数据
数据加密不需要您执行任何特殊配置。但是,如果您出于某种原因想要使用自己的加密密钥(替换默认加密密钥),则可以按照本主题中的说明执行操作。
加密密钥范围
用于 KMS、KVM 和缓存的加密密钥具有范围。例如,KMS 密钥具有组织范围。这意味着该密钥用于加密整个组织的 KMS 数据。下表列出了每种密钥类型的范围:
加密密钥 | 范围 |
---|---|
KMS | 仅限组织 |
KVM |
组织或环境
如果 KVM 政策指定 |
缓存 | 仅限环境 |
关于默认加密密钥
默认情况下,Apigee Hybrid 提供一组用于加密 KVM、KMS 和缓存数据的 Base64 编码密钥。Apigee Hybrid 安装程序将密钥作为 Kubernetes Secret 存储在运行时层面,并使用这些密钥通过 AES-128 标准加密来加密数据。密钥由您控制;Hybrid 管理层面从不会注意到其存在。
更改默认加密密钥
虽然不是必需的,但是您可以根据需要更改任何默认加密密钥。要替换一个或多个默认密钥,请按以下步骤操作:
- 将以下节复制到您的替换文件中。通过此配置,您可以更改组织级别的 KMS 和 KVM 加密密钥以及环境级别的 KVM 和缓存加密密钥:
defaults: org: kmsEncryptionKey: base64-encoded-key kvmEncryptionKey: base64-encoded-key env: kvmEncryptionKey: base64-encoded-key cacheEncryptionKey: base64-encoded-key
- 为您要替换的每个密钥生成一个新密钥。每个密钥必须是长度为 16、24 或 32 字节长的 Base64 编码字符串。另请参阅如何创建编码密钥。
- 请将默认密钥替换为新密钥。在此示例中,所有默认密钥都替换为密钥:
defaults: org: kmsEncryptionKey: "JVpTb1FwI0otUHo2RUdRN3pnVyQqVGlMSEFAJXYmb1c=" kvmEncryptionKey: "T3VkRGM1U3cpOFgtNk9fMnNZU2NaSVA3I1BtZWxkaUU=" env: kvmEncryptionKey: "Q3h6M3R6OWdBeipxTURfKjQwQVdtTng2dU5mODFHcyE=" cacheEncryptionKey: "b2NTVXdKKjBzN0NORF9XSm9tWFlYKGJ6NUhpNystJVI="
- 按如下方式将替换文件应用于您的集群:
- 如果您更改了 KVM 或缓存键,请仅更新环境:
$APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --env env_name
- 如果您更改了 KMS 密钥,请更新组织和环境:
$APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --env env_name --org org_name
- 如果您更改了 KVM 或缓存键,请仅更新环境:
有关向后兼容性的说明
如果您第一次安装 Apigee Hybrid 时移除替换文件中的加密密钥,则将有效地停用加密,且值会以未加密的形式存储。如果以后通过提供密钥来启用加密,则退出数据将保持未加密状态。但是,将来添加的所有数据都将进行被加密。系统会继续使用未加密的数据和新的加密数据正常运行。
另请注意,运行时数据一旦加密,便无法再更改加密密钥。
如何创建编码密钥
KVM、KMS 和缓存加密需要使用格式正确的 Base-64 编码密钥。用于这些用途的密钥必须由 16、24 或 32 字节的字符串进行 Base-64 编码,如以下步骤所述:
以下示例命令会生成适当的、随机生成的、32 个字符的 Base64 编码字符串,其中不包含非打印字符:
LC_ALL=C tr -dc A-Za-z0-9_\!\@\#\$\%\^\&\*\(\)\\-+= < /dev/urandom | head -c 32 | openssl base64 PSFvX0BPc1Z2NVklcXdxcF8xR0N4MV4temFveStITU4=
或
LC_ALL=C tr -dc "[:print:]" < /dev/urandom | head -c 32 | openssl base64