Compartilhar via

使用 Dapr 组件连接到其他Azure或合作伙伴服务

使用托管标识或Azure密钥保管库密钥存储,为Dapr组件安全地建立与Azure及第三方服务的连接。

在开始之前,请详细了解对 Dapr 组件所提供的支持。

建议

建议尽可能使用Azure组件,这些组件为最安全的连接提供托管标识支持。 不支持托管标识身份验证时,请使用 Azure Key Vault 机密存储only

服务类型 建议
具有托管标识支持的 Azure 组件 使用托管标识流(推荐)
不支持托管标识的Azure组件 使用Azure Key Vault机密存储
非 Azure 组件 使用Azure Key Vault机密存储

对于托管在 Azure 上的服务,Dapr 可以使用限定范围容器应用的托管身份来对后端服务提供商进行身份验证。 使用托管标识时,无需在组件清单中包含机密信息。 建议使用托管标识,因为这消除了在组件中存储敏感输入的需求,并且不需要管理秘密存储。

注意事项

azureClientId 元数据字段(托管标识的客户端 ID)对于使用用户分配的托管标识进行身份验证的任何组件都是必需的。

使用 Dapr 密钥库组件引用

当为未启用 Entra ID 的服务或不支持托管标识身份验证的组件创建 Dapr 组件时,某些元数据字段需要敏感的输入值。 对于此方法,请通过引用可安全访问机密信息的现有 Dapr 机密存储组件来检索这些机密。

若要设置引用,请执行以下操作:

  1. 使用 Azure Container Apps 架构创建 Dapr 机密存储组件。 所有支持的 Dapr 机密存储的组件类型都以 secretstores 开头。
  2. 创建可根据需要引用已创建的 Dapr 机密存储组件的附加组件,以检索敏感元数据输入。

创建 Dapr 机密存储组件

在 Azure Container Apps 中创建机密存储组件时,可以通过以下任一方式在元数据部分中提供敏感信息:

  • 对于 Azure Key Vault 机密存储,请使用托管标识建立连接。
  • 对于非 Azure 机密存储,请使用在组件清单中直接定义的平台管理的 Kubernetes 机密。

Azure Key Vault机密存储

以下组件架构展示了使用Azure Key Vault机密存储的最简单机密存储配置。 publisher-appsubscriber-app 配置为具有系统或用户分配的托管标识,并具有对 Azure Key Vault 实例的适当权限。

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服务或在开发/测试方案中快速通过 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.chinacloudapi.cn]"
  - name: azureTenantId
    value: "[your_tenant_id]"
  - name: azureClientId 
    value: "[your_client_id]"
  - name: azureClientSecret
    secretRef: azClientSecret
scopes:
  - publisher-app
  - subscriber-app

后续步骤

了解如何设置 Dapr 组件弹性