13.6. 使用方法


13.6.1. Azure Key Vault プロパティー関数の使用

この関数を使用するには、環境変数として Azure Key Vault サービスに認証情報を提供する必要があります。

export $CAMEL_VAULT_AZURE_TENANT_ID=tenantId
export $CAMEL_VAULT_AZURE_CLIENT_ID=clientId
export $CAMEL_VAULT_AZURE_CLIENT_SECRET=clientSecret
export $CAMEL_VAULT_AZURE_VAULT_NAME=vaultName

次のように、application.properties ファイルで認証情報を設定することもできます。

camel.vault.azure.tenantId = accessKey
camel.vault.azure.clientId = clientId
camel.vault.azure.clientSecret = clientSecret
camel.vault.azure.vaultName = vaultName

または、次の方法で Azure Identity の使用を有効にすることもできます。

export $CAMEL_VAULT_AZURE_IDENTITY_ENABLED=true
export $CAMEL_VAULT_AZURE_VAULT_NAME=vaultName

次のように、application.properties ファイルで Azure アイデンティティーの使用を有効にすることもできます。

camel.vault.azure.azureIdentityEnabled = true
camel.vault.azure.vaultName = vaultName
注記

camel.vault.azure 設定は、Azure Key Vault プロパティー関数にのみ適用されます (例: プロパティーの解決時)。operation オプションを使用してシークレットの作成、取得、リスト表示などを行う場合は、Azure サービスに接続するための通常のオプションを指定する必要があります。

この時点で、次の方法でプロパティーを参照できるようになります。

<camelContext>
    <route>
        <from uri="direct:start"/>
        <to uri="{{azure:route}}"/>
    </route>
</camelContext>

ここで、route は Azure Key Vault サービスに保存されているシークレットの名前になります。

Azure Key Vault サービスにシークレットが存在しない場合は、デフォルト値を指定できます。

<camelContext>
    <route>
        <from uri="direct:start"/>
        <to uri="{{azure:route:default}}"/>
    </route>
</camelContext>

この場合、シークレットが存在しなければプロパティーの値は "default" にフォールバックします。

また、たとえば次の形式の database という名前のシークレットがある場合、シークレットの特定のフィールドを取得できます。

{
  "username": "admin",
  "password": "password123",
  "engine": "postgres",
  "host": "127.0.0.1",
  "port": "3128",
  "dbname": "db"
}

たとえば次のように、ルート内で単一のシークレット値を取得できます。

<camelContext>
    <route>
        <from uri="direct:start"/>
        <log message="Username is {{azure:database/username}}"/>
    </route>
</camelContext>

または、エンドポイントの一部としてプロパティーを再利用します。

特定のシークレットフィールドが Azure Key Vault に存在しない場合は、デフォルト値を指定できます。

<camelContext>
    <route>
        <from uri="direct:start"/>
        <log message="Username is {{azure:database/username:admin}}"/>
    </route>
</camelContext>

この場合、シークレットが存在しないか、シークレットは存在するがユーザー名フィールドがシークレットの一部ではない場合、プロパティーは値として "admin" にフォールバックします。

フィールド/デフォルト値を指定して、またはシークレットのみを使用して、両方のアプローチでシークレットの特定のバージョンを取得するための構文もあります。

<camelContext>
    <route>
        <from uri="direct:start"/>
        <to uri="{{azure:route@bf9b4f4b-8e63-43fd-a73c-3e2d3748b451}}"/>
    </route>
</camelContext>

このアプローチでは、バージョン 'bf9b4f4b-8e63-43fd-a73c-3e2d3748b451' の RAW ルートシークレットが返されます。

<camelContext>
    <route>
        <from uri="direct:start"/>
        <to uri="{{azure:route:default@bf9b4f4b-8e63-43fd-a73c-3e2d3748b451}}"/>
    </route>
</camelContext>

このアプローチでは、バージョン 'bf9b4f4b-8e63-43fd-a73c-3e2d3748b451' のルートシークレット値が返されます。シークレットが存在しない場合、またはバージョンが存在しない場合は、デフォルト値が返されます。

<camelContext>
    <route>
        <from uri="direct:start"/>
        <log message="Username is {{azure:database/username:admin@bf9b4f4b-8e63-43fd-a73c-3e2d3748b451}}"/>
    </route>
</camelContext>

この方法では、バージョン 'bf9b4f4b-8e63-43fd-a73c-3e2d3748b451' のデータベースシークレットの username フィールドが返されます。シークレットが存在しない場合、またはバージョンが存在しない場合は、admin が返されます。

現時点では、ローテーション機能は適用されていても考慮していませんが、今後対応する予定です。

唯一の要件は、Camel アプリケーションに camel-azure-key-vault jar を追加することです。

13.6.2. Secret Refresh での Camel コンテキストの自動リロード

シークレット更新時に Camel コンテキストをリロードできるようにするには、通常の認証情報 (Azure Key Vault Property 関数で使用されるものと同じ) を指定します。

環境変数を使用する場合:

export $CAMEL_VAULT_AZURE_TENANT_ID=tenantId
export $CAMEL_VAULT_AZURE_CLIENT_ID=clientId
export $CAMEL_VAULT_AZURE_CLIENT_SECRET=clientSecret
export $CAMEL_VAULT_AZURE_VAULT_NAME=vaultName

または単純な Camel のメインプロパティーとしての場合:

camel.vault.azure.tenantId = accessKey
camel.vault.azure.clientId = clientId
camel.vault.azure.clientSecret = clientSecret
camel.vault.azure.vaultName = vaultName

Azure アイデンティティーを環境変数と共に使用したい場合は、次の方法で実行できます。

export $CAMEL_VAULT_AZURE_IDENTITY_ENABLED=true
export $CAMEL_VAULT_AZURE_VAULT_NAME=vaultName

次のように、application.properties ファイルで Azure アイデンティティーの使用を有効にすることもできます。

camel.vault.azure.azureIdentityEnabled = true
camel.vault.azure.vaultName = vaultName

自動更新を有効にするには、追加のプロパティーを設定する必要があります。

camel.vault.azure.refreshEnabled=true
camel.vault.azure.refreshPeriod=60000
camel.vault.azure.secrets=Secret
camel.vault.azure.eventhubConnectionString=eventhub_conn_string
camel.vault.azure.blobAccountName=blob_account_name
camel.vault.azure.blobContainerName=blob_container_name
camel.vault.azure.blobAccessKey=blob_access_key
camel.main.context-reload-enabled = true

ここで、camel.vault.azure.refreshEnabled は自動コンテキストリロードを有効にし、camel.vault.azure.refreshPeriod は更新イベントの 2 つの異なるチェック間の時間間隔で、camel.vault.azure.secrets は更新を追跡するシークレットを表す正規表現です。

ここで、camel.vault.azure.eventhubConnectionString は通知を取得するイベントハブ接続文字列、camel.vault.azure.blobAccountNamecamel.vault.azure.blobContainerNamecamel.vault.azure.blobAccessKey は、Azure Eventhub に必要なチェックポイントストアの Azure Storage Blob パラメーターです。

camel.vault.azure.secrets は必須ではないことに注意してください。指定されていない場合、更新イベントのチェックを行うタスクは、azure: 接頭辞を持つプロパティーを考慮します。

唯一の要件は、Camel アプリケーションに camel-azure-key-vault jar を追加することです。

まずアプリケーションを作成する必要があります。

az ad app create --display-name test-app-key-vault

次に認証情報を取得する必要があります。

az ad app credential reset --id <appId> --append --display-name 'Description: Key Vault app client' --end-date '2024-12-31'

次のような結果が返されます。

{
  "appId": "appId",
  "password": "pwd",
  "tenant": "tenantId"
}

パスワードをメモし、clientSecret パラメーターとして clientId および tenantId と共に使用する必要があります。

key vault を作成します

az keyvault create --name <vaultName> --resource-group <resourceGroup>

アプリケーション ID に関連付けられたサービスプリンシパルを作成します。

az ad sp create --id <appId>

この時点で、ロール割り当てを使用してアプリケーションにロールを追加する必要があります。

az role assignment create --assignee <appId> --role "Key Vault Administrator" --scope /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.KeyVault/vaults/<vaultName>

最後のステップとして、アプリケーションで何ができるか、何ができないかに関するポリシーを作成します。ここでは、シークレットの値を読み取るだけです。そのためには以下で十分なはずです。

az keyvault set-policy --name <vaultName> --spn <appId> --secret-permissions get

次のコマンドを使用して、Azure CLI 経由でシークレットを作成できます。

az keyvault secret set --name <secret_name> --vault-name <vaultName> -f <json-secret>

次に、シークレットの更新について通知を受け取るるために、Eventhub/EventGrid 通知を設定する必要があります。

まず、Eventhub の消費アクティビティーを追跡するために、Blob アカウントと Blob コンテナーが必要になります。

az storage account create --name <blobAccountName> --resource-group <resourceGroup>

次にコンテナーを作成します。

az storage container create --account-name <blobAccountName> --name <blobContainerName>

次に、このためのアクセスキーを回復します

az storage account keys list -g <resourceGroup> -n <blobAccountName>

vault の設定に使用する Blob アカウント名、Blob コンテナー名、Blob アクセスキーをメモします。

Eventhub 側を作成します。

まず名 namespace を作成します。

az eventhubs namespace create --resource-group <resourceGroup> --name <eventhub-namespace> --location westus --sku Standard --enable-auto-inflate --maximum-throughput-units 20

リソースを作成します。

az eventhubs eventhub create --resource-group <resourceGroup> --namespace-name <eventhub-namespace> --name <eventhub-name> --cleanup-policy Delete --partition-count 15

Azure ポータルで、作成した eventhub リソースに対する "MANAGE" 権限を持つ共有ポリシーを作成し、接続文字列をコピーします。

これで、vault を設定するために必要なすべてのパラメーターが揃いました。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る