Using Multiple Keys and Key Rotation
除了加密属性值中的 {cipher}
前缀外,Config Server 还会在(Base64 编码)密码文本开始前查找零个或多个 {name:value}
前缀。这些键将传递给 TextEncryptorLocator
,该定位器可以执行任何逻辑,以找到密码的 TextEncryptor
。如果你已配置密钥库(encrypt.keystore.location
),则默认定位器使用 key
前缀提供别名的密钥,密码文本类似于以下内容:
foo:
bar: `\{cipher}{key:testkey}...`
定位器查找名为 "testkey" 的密钥。还可以使用前缀中的 {secret:…}
值提供秘密。然而,如果没有提供,则默认使用密钥库密码(这是你在构建密钥库时获得的内容,并且没有指定秘密)。如果你确实提供了秘密,则还应该使用自定义 SecretLocator
对其进行加密。
当密钥仅用于加密配置数据的少量字节时(即,它们不会在其他地方使用),基于密码学原理几乎不需要密钥轮换。然而,你可能偶尔需要更改密钥(例如,在安全漏洞事件时)。在这种情况下,所有客户端都需要更改它们的源配置文件(例如,在 git 中)并在所有密码中使用新的 {key:…}
前缀。请注意,客户端需要首先检查密钥别名在 Config Server 密钥库中是否可用。
如果您希望配置服务器处理所有加密和解密,则 |