50.6. 例
50.6.1. Hashicorp Vault プロパティー関数の使用 リンクのコピーリンクがクリップボードにコピーされました!
この機能を使用するには、環境変数として Hashicorp vault の認証情報を提供する必要があります。
export $CAMEL_VAULT_HASHICORP_TOKEN=token
export $CAMEL_VAULT_HASHICORP_HOST=host
export $CAMEL_VAULT_HASHICORP_PORT=port
export $CAMEL_VAULT_HASHICORP_SCHEME=http/https
次のように、application.properties ファイルで認証情報を設定することもできます。
camel.vault.hashicorp.token = token
camel.vault.hashicorp.host = host
camel.vault.hashicorp.port = port
camel.vault.hashicorp.scheme = scheme
camel.vault.hashicorp 設定は、Hashicorp Vault プロパティー関数 (例: プロパティーの解決時) にのみ適用されます。operation オプションを使用してシークレットを作成、取得、リスト表示する場合は、host、port、scheme (必要に応じて)、token オプションを指定する必要があります。
この時点で、次の方法でプロパティーを参照できるようになります。
<camelContext>
<route>
<from uri="direct:start"/>
<to uri="{{hashicorp:secret:route}}"/>
</route>
</camelContext>
ここでの route は、Hashicorp Vault インスタンスの 'secret' エンジンに保存されているシークレットの名前になります。
Hashicorp Vault インスタンスにシークレットが存在しない場合は、デフォルト値を指定する必要があります。
<camelContext>
<route>
<from uri="direct:start"/>
<to uri="{{hashicorp:secret:route:default}}"/>
</route>
</camelContext>
この場合、シークレットが 'secret' エンジンに存在しない場合は、プロパティーの値は "default" に戻ります。
また、たとえば次の形式の database という名前のシークレットがある場合、シークレットの特定のフィールドを取得できます。
{
"username": "admin",
"password": "password123",
"engine": "postgres",
"host": "127.0.0.1",
"port": "3128",
"dbname": "db"
}
ルート内の 'secret' エンジンには、次の例のように 1 つのシークレット値を設定できます。
<camelContext>
<route>
<from uri="direct:start"/>
<log message="Username is {{hashicorp:secret:database/username}}"/>
</route>
</camelContext>
または、エンドポイントの一部としてプロパティーを再利用します。
'secret' エンジンで、Hashicorp Vault インスタンスのシークレットに特定のフィールドが存在が存在しない場合のデフォルト値を指定できます。
<camelContext>
<route>
<from uri="direct:start"/>
<log message="Username is {{hashicorp:secret:database/username:admin}}"/>
</route>
</camelContext>
この場合、シークレットが存在しないか、シークレットが存在する ('secret' エンジン内) がユーザー名フィールドがシークレットの一部ではない場合、プロパティーの値は "admin" にフォールバックされます。
フィールド/デフォルト値を指定して、またはシークレットのみを使用して、両方のアプローチでシークレットの特定のバージョンを取得するための構文もあります。
<camelContext>
<route>
<from uri="direct:start"/>
<to uri="{{hashicorp:secret:route@2}}"/>
</route>
</camelContext>
このアプローチは、'secret' エンジンでバージョン '2' の RAW ルートシークレットを返します。
<camelContext>
<route>
<from uri="direct:start"/>
<to uri="{{hashicorp:route:default@2}}"/>
</route>
</camelContext>
このアプローチでは、('secret' エンジン内に) シークレットが存在しない場合、またはバージョンが存在しない場合、バージョン '2' またはデフォルト値のルートシークレット値が返されます。
<camelContext>
<route>
<from uri="direct:start"/>
<log message="Username is {{hashicorp:secret:database/username:admin@2}}"/>
</route>
</camelContext>
このアプローチでは、データベースシークレットのユーザー名フィールドがバージョン '2' で返されます。あるいは、('secret' エンジン内) にシークレットが存在しない場合、またはバージョンが存在しない場合は、admin が返されます。
唯一の要件は、camel-hashicorp-vault jar を Camel アプリケーションに追加することです。