SpringCloud 使用多个按键和按键旋转
除了加密属性值中的{cipher}
前缀外,Config Server在(Base64编码的)密文开始之前查找零个或多个{name:value}
前缀。密钥被传递到TextEncryptorLocator
,后者可以执行为密码找到TextEncryptor
所需的任何逻辑。如果已配置密钥库(encrypt.keystore.location
),则默认定位器将查找具有key前缀提供的别名的密钥,其密文类似于以下内容:
foo: bar: `{cipher}{key:testkey}...`
定位器查找名为“ testkey”的键。也可以通过在前缀中使用{secret:…}
值来提供机密。但是,如果未提供,则默认为使用密钥库密码(这是在构建密钥库且未指定密钥时得到的密码)。如果确实提供了机密,则还应该使用自定义SecretLocator
对机密进行加密。
当密钥仅用于加密几个字节的配置数据时(也就是说,它们未在其他地方使用),从密码的角度讲,几乎不需要旋转密钥。但是,您有时可能需要更改密钥(例如,在发生安全漏洞时)。在这种情况下,所有客户端都需要更改其源配置文件(例如,在git中),并在所有密码中使用新的{key:…}
前缀。请注意,客户端需要首先检查Config Server密钥库中的密钥别名是否可用。
如果要让Config Server处理所有加密以及解密,则还可以将
{name:value}
前缀添加为发布到/encrypt
端点的纯文本。
更多建议: