複数のキーとキーローテーションの使用
暗号化されたプロパティ値の {cipher}
プレフィックスに加えて、構成サーバーは、(Base64 でエンコードされた)暗号文の開始前に 0 個以上の {name:value}
プレフィックスを検索します。キーは TextEncryptorLocator
に渡され、TextEncryptorLocator
は、暗号の TextEncryptor
を見つけるために必要なロジックを実行できます。キーストア(encrypt.keystore.location
)を構成した場合、デフォルトのロケーターは、key
プレフィックスによって提供されるエイリアスを持ち、次のような暗号文を持つキーを探します。
foo:
bar: `\{cipher}{key:testkey}...`
ロケーターは "testkey" という名前のキーを探します。シークレットは、プレフィックスに {secret:…}
値を使用して提供することもできます。ただし、指定されていない場合、デフォルトではキーストアパスワードが使用されます(これは、キーストアを構築し、シークレットを指定しないときに取得するものです)。シークレットを提供する場合は、カスタム SecretLocator
を使用してシークレットも暗号化する必要があります。
キーが数バイトの構成データの暗号化にのみ使用されている場合(つまり、他の場所では使用されていない場合)、暗号化の理由でキーのローテーションはほとんど必要ありません。ただし、場合によってはキーを変更する必要があります(たとえば、セキュリティ違反が発生した場合)。その場合、すべてのクライアントはソース構成ファイルを変更し(たとえば、git で)、すべての暗号で新しい {key:…}
プレフィックスを使用する必要があります。クライアントは、最初にキーエイリアスが ConfigServer キーストアで使用可能であることを確認する必要があることに注意してください。
構成サーバーにすべての暗号化と復号化を処理させたい場合は、{name:value} プレフィックスを /encrypt エンドポイントに送信されるプレーンテキストとして追加することもできます。 |