次の方法で共有


Dapr コンポーネント経由で他の Azure またはサード パーティのサービスに接続する

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

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

推奨事項

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

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

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

Note

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

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

Entra 以外の ID が有効になっているサービス、またはマネージド 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 を持つように構成されています。

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 シークレットを作成して利用するためのプラットフォームで管理されたアプローチが用意されています。 この方法は、シークレット ストアやマネージド ID を設定せずに CLI を介してコンポーネントを迅速にデプロイするために、Azure 以外のサービスに接続するため、または Dev/Test シナリオで使用できます。

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

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 コンポーネントからそのシークレット ストアを参照できるようになります。 次の例は、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

次のステップ

Dapr コンポーネントの回復性を設定する方法を確認します。