Dapr コンポーネントを使用して他のAzureまたはパートナー サービスに接続する

マネージド ID またはAzure Key Vault シークレット ストアを使用して、Dapr コンポーネントのAzureと非Microsoft サービスへの接続を安全に確立します。

作業を開始する前に、 Dapr コンポーネントのサポートの詳細を確認してください。

推奨事項

最も安全な接続を実現するために、可能な限りマネージド ID のサポートを提供するAzure コンポーネントを使用することをお勧めします。 マネージド ID 認証がサポートされていない場合に限り、Azure Key Vault シークレット ストアを使用します。

サービスの種類 推奨
マネージド ID をサポートするAzure コンポーネント マネージド ID フローを使用する (推奨)
マネージド ID をサポートしない Azure コンポーネント Azure Key Vault シークレット ストアを使用します
Azure以外のコンポーネント Azure Key Vault シークレット ストアを使用します

Azureホストされるサービスの場合、Dapr は、スコープ付きコンテナー アプリの管理 ID を使用してバックエンド サービス プロバイダーに対する認証を行うことができます。 マネージド ID を使用している場合、コンポーネント マニフェストにシークレット情報を含める必要はありません。 マネージド ID の使用が推奨されるのは、機密性の高い入力のコンポーネント内への保存がなくなり、シークレット ストアの管理も必要なくなるためです。

注意

azureClientId メタデータ フィールド (マネージド ID のクライアント ID) は、ユーザー割り当てマネージド ID を使って認証を行うすべてのコンポーネントで必要です。

Dapr シークレット ストアのコンポーネント参照を使用する

マネージド ID 認証をサポートしていない、Entra ID対応ではないサービスまたはコンポーネントに対して Dapr コンポーネントを作成する場合、特定のメタデータ フィールドには機密性の高い入力値が必要です。 このアプローチでは、シークレット情報に安全にアクセスする既存の Dapr シークレット ストア コンポーネントを参照することで、これらのシークレットを取得します。

参照を設定するには:

  1. Azure Container Apps スキーマを使用して、Dapr シークレット ストア コンポーネントを作成します。 サポートされているすべての Dapr シークレット ストアのコンポーネントの種類は、secretstores で始まります。
  2. 機密メタデータ入力を取得するために作成 した Dapr シークレット ストア コンポーネントを参照する追加のコンポーネントを (必要に応じて) 作成します。

Dapr シークレット ストア コンポーネントを作成する

Azure Container Appsでシークレット ストア コンポーネントを作成する場合は、次のいずれかの方法でメタデータ セクションに機密情報を指定できます。

Azure Key Vaultのシークレット ストア

次のコンポーネント スキーマは、Azure Key Vault シークレット ストアを使用した最も簡単なシークレット ストア構成を示しています。 publisher-appsubscriber-app は、Azure Key Vault インスタンスに対する適切なアクセス許可を持つシステム割り当てマネージド ID とユーザー割り当てマネージド ID の両方を持つよう構成されます。

componentType: secretstores.azure.keyvault
version: v1
metadata:
  - name: vaultName
    value: [your_keyvault_name]
  - name: azureEnvironment
    value: "AZUREPUBLICCLOUD"
  - name: azureClientId # Only required for authenticating user-assigned managed identity
    value: [your_managed_identity_client_id]
scopes:
  - publisher-app
  - subscriber-app

プラットフォーム管理のKubernetesシークレット

Kubernetes シークレット、ローカル環境変数、ローカル ファイル Dapr シークレット ストアの代わりに、Azure Container Appsは Kubernetes シークレットを作成して使用するためのプラットフォーム管理アプローチを提供します。 この方法を使用して、Azure以外のサービスに接続できます。 または、開発/テスト シナリオでは、シークレット ストアやマネージド ID を設定せずに、CLI を使用してコンポーネントをすばやくデプロイするために使用できます。

このコンポーネント構成では、秘匿性の高い値をメタデータ セクションから参照できるシークレット パラメーターとして定義します。

componentType: secretstores.azure.keyvault
version: v1
metadata:
  - name: vaultName
    value: [your_keyvault_name]
  - name: azureEnvironment
    value: "AZUREPUBLICCLOUD"
  - name: azureTenantId
    value: "[your_tenant_id]"
  - name: azureClientId 
    value: "[your_client_id]"
  - name: azureClientSecret
    secretRef: azClientSecret
secrets:
  - name: azClientSecret
    value: "[your_client_secret]"
scopes:
  - publisher-app
  - subscriber-app

Dapr シークレット ストア コンポーネントを参照する

先ほどのいずれかの方法を使って Dapr シークレット ストアを作成すると、同じ環境内の他の Dapr コンポーネントからそのシークレット ストアを参照できるようになります。 次の例では、Microsoft Entra ID認証の使用を示します。

componentType: pubsub.azure.servicebus.queue
version: v1
secretStoreComponent: "[your_secret_store_name]"
metadata:
  - name: namespaceName
    # Required when using Azure Authentication.
    # Must be a fully-qualified domain name
    value: "[your_servicebus_namespace.servicebus.windows.net]"
  - name: azureTenantId
    value: "[your_tenant_id]"
  - name: azureClientId 
    value: "[your_client_id]"
  - name: azureClientSecret
    secretRef: azClientSecret
scopes:
  - publisher-app
  - subscriber-app