Menu Close
Settings Close

Language and Page Formatting Options

第13章 Vault を使用したシークレットの取得

直接入力せずに Vault からシークレットを取得するには、以下の特別に作成された文字列を適切なフィールドに入力します。

**${vault.**_key_**}**

キー は vault によって認識されたシークレットの名前です。

レルム間でシークレットのリークを防ぐために、Red Hat Single Sign-On はレルム名と vault 式から取得した キー を組み合わせます。このメソッドは、キー が vault のエントリーに直接マップされるのではなく、キー をレルム名と組み合わせるために使用されるアルゴリズムに従って最終的なエントリー名を作成します。

以下のフィールドの vault からシークレットを取得できます。

SMTP パスワード
レルム SMTP 設定
LDAP バインド認証情報
LDAP ベースのユーザーフェデレーションの LDAP 設定
OIDC アイデンティティープロバイダーシークレット
アイデンティティープロバイダーの OpenID Connect Config 内のクライアントシークレット

vault を使用するには、Red Hat Single Sign-On で Vault プロバイダーを登録します。ここ で説明するプロバイダーを使用するか、プロバイダーを実装できます。詳細は、サーバー開発者ガイドを参照してください。

注記

Red Hat Single Sign-On では、Red Hat Single Sign-On インスタンスごとに最大 1 つのアクティブな vault プロバイダーが許可されます。クラスター内の各インスタンスで vault プロバイダーを一貫して設定します。

13.1. Kubernetes/OpenShift ファイルのプレーンテキスト Vault プロバイダー

Red Hat Single Sign-On は、Kubernetes シークレット の vault 実装をサポートします。Kubernetes のシークレットはデータボリュームとしてマウントでき、フラットファイル構造のディレクトリーとして表示されます。Red Hat Single Sign-On は、各シークレットをファイルとして、ファイル名をシークレット名として、ファイルの内容をシークレット値として表します。

このディレクトリー内のファイルには、レルム名とアンダースコアのプレフィックスが付けられたシークレット名として名前を指定する必要があります。シークレット名またはレルム名内のすべてのアンダースコアをファイル名で 2 倍にします。たとえば、sso_realm という名前のレルム内のフィールドの場合には、secret-name という名前のシークレットへの参照は ${vault.secret-name} として記述され、ファイル名は sso__realm_secret-name になります。レルム名でアンダースコアが 2 倍になっていることに注意してください。

このタイプのシークレットストアを使用するには、standalone.xml ファイルで files-plaintext vault プロバイダーを宣言し、マウントされたボリュームが含まれるディレクトリーにそのパラメーターを設定する必要があります。以下の例は、Red Hat Single Sign-On ベースディレクトリーとの関連で、vault ファイルが standalone/configuration/vault に設定されたディレクトリーを含む files-plaintext プロバイダーを示しています。

<spi name="vault">
    <default-provider>files-plaintext</default-provider>
    <provider name="files-plaintext" enabled="true">
        <properties>
            <property name="dir" value="${jboss.home.dir}/standalone/configuration/vault/" />
        </properties>
    </provider>
</spi>

以下は、CLI コマンドを使用して同等の設定です。

/subsystem=keycloak-server/spi=vault/:add
/subsystem=keycloak-server/spi=vault/provider=files-plaintext/:add(enabled=true,properties={dir => "${jboss.home.dir}/standalone/configuration/vault"})
/subsystem=keycloak-server/spi=vault:write-attribute(name=default-provider,value=files-plaintext)