第8章 Vault SPI
8.1. Vault プロバイダー
org.keycloak.vault
パッケージの Vault SPI を使用して、Red Hat build of Keycloak のカスタム拡張を作成し、任意の Vault 実装に接続できます。
組み込みの files-plaintext
プロバイダーは、この SPI の実装例です。一般的に以下のルールが適用されます。
-
レルム間でシークレットのリークを防ぐために、レルムで取得できるシークレットを分離したり、制限したりすることができます。この場合、プロバイダーはシークレットの検索時に、エントリーの前にレルム名を付けるなど、レルム名を考慮する必要があります。たとえば、式
${vault.key}
は、レルム A またはレルム B で使用されるかに応じて、一般的に異なるエントリー名に評価されます。レルムを区別するには、レルムを、KeycloakSession
パラメーターから利用できるVaultProviderFactory.create()
メソッドから、作成されたVaultProvider
インスタンスに渡す必要があります。 -
Vault プロバイダーは、指定したシークレット名に
VaultRawSecret
返す単一のメソッドobtainSecret
を実装します。そのクラスは、シークレットの表現をbyte[]
またはByteBuffer
のいずれかに保持し、必要に応じて 2 つの間で変換することが期待されます。このバッファーは、以下で説明されているように使用後に破棄されることに注意してください。
カスタムプロバイダーをパッケージ化してデプロイする方法は、サービスプロバイダーインターフェイス の章を参照してください。