使用多個金鑰和金鑰輪換
除了加密屬性值中的 {cipher}
前綴之外,Config 伺服器還會在 (Base64 編碼) 密文開始之前尋找零或多個 {name:value}
前綴。金鑰會傳遞到 TextEncryptorLocator
,後者可以執行任何需要的邏輯來尋找密碼的 TextEncryptor
。如果您已設定金鑰儲存庫 (encrypt.keystore.location
),則預設的定位器會尋找具有 key
前綴所提供別名的金鑰,其密文類似於以下內容
foo:
bar: `\{cipher}{key:testkey}...`
定位器會尋找名為 "testkey" 的金鑰。也可以透過在前綴中使用 {secret:…}
值來提供密碼。但是,如果未提供密碼,則預設為使用金鑰儲存庫密碼 (這是您建立金鑰儲存庫且未指定密碼時獲得的密碼)。如果您確實提供了密碼,則也應該使用自訂 SecretLocator
加密密碼。
當金鑰僅用於加密少量組態資料時 (也就是說,它們未在其他地方使用),從密碼學的角度來看,幾乎不需要金鑰輪換。但是,您可能偶爾需要變更金鑰 (例如,在發生安全漏洞時)。在這種情況下,所有用戶端都需要變更其來源組態檔 (例如,在 git 中),並在所有密碼中使用新的 {key:…}
前綴。請注意,用戶端需要先檢查金鑰別名是否在 Config 伺服器金鑰儲存庫中可用。
如果您希望讓 Config 伺服器處理所有加密和解密,則 {name:value} 前綴也可以作為純文字張貼到 /encrypt 端點。 |