17.3. キーリゾルバー

すべてのビルトインプロバイダーは、1 つ以上のキーリゾルバーの設定をサポートします。キーリゾルバーは、基本的にはレルム名とキーを組み合わせて (${vault.key} 式から取得)、vault からシークレットの取得に使用される最終エントリー名を組み合わせるためのアルゴリズムまたはストラテジーを実装します。keyResolvers プロパティーは、プロバイダーによって使用されるリゾルバーを設定するために使用されます。この値は、リゾルバー名のコンマ区切りリストです。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/" />
            <property name="keyResolvers" value="REALM_UNDERSCORE_KEY, KEY_ONLY"/>
        </properties>
    </provider>
</spi>

リゾルバーは、設定で宣言されるのと同じ順序で実行されます。それぞれのリゾルバーについて、レルムと vault キーを組み合わせるリゾルバーによって生成された最終エントリー名は vault のシークレットの検索に使用されます。シークレットが見つかると、すぐに返されます。そうでない場合には、次のリゾルバーが使用され、空でないシークレットが見つかるか、またはすべてのリゾルバーが試行されるまで継続され、空のシークレットが返されます。上記の例では、最初に REALM_UNDERSCORE_KEY リゾルバーが使用されます。生成する名前の vault にエントリーが存在する場合は、そのエントリーが返されます。そうでない場合は、KEY_ONLY リゾルバーが使用されます。生成する名前の vault にエントリーが存在する場合は、そのエントリーが返されます。これがないと、使用されるリゾルバーがなくなったため、空のシークレットが返されます。

現在利用可能なリゾルバーの一覧は以下のようになります。

  • KEY_ONLY: レルム名は無視され、vault 式からのキーがそのまま使用されます。
  • REALM_UNDERSCORE_KEY: レルムと鍵はアンダースコア _ を使用して結合されます。レルムまたはキーのいずれかでアンダースコアが存在する点は、別のアンダースコアでエスケープされます。したがって、レルムが master_realm と呼ばれ、キーが smtp_key の場合は、組み合わせたキーは master__realm_smtp__key になります。
  • REALM_FILESEPARATOR_KEY: レルムと鍵は、プラットフォームファイルの区切り文字を使用して組み合わせます。これは、ディレクトリー構造を使用してレルムでキーを分類する場合に便利です。

ビルトインプロバイダーにリゾルバーが設定されていない場合、REALM_UNDERSCORE_KEY はデフォルトで選択されます。