你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

通过 Dapr 组件连接到其他 Azure 或第三方服务

使用托管标识或 Azure Key Vault 机密存储安全地为 Dapr 组件建立与 Azure 和第三方服务的连接。

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

建议

如果可能,建议使用 Azure 组件为最安全的连接提供托管标识支持。 仅当不支持托管标识身份验证时,才使用 Azure Key Vault 机密存储。

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

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

注意

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

使用 Dapr 机密存储组件引用

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

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

  1. 使用 Azure 容器应用架构创建 Dapr 机密存储组件。 所有支持的 Dapr 机密存储的组件类型都以 secretstores. 开头。
  2. 创建引用 Dapr 机密存储组件的额外组件(根据需要)来检索敏感元数据输入。

创建 Dapr 机密存储组件

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

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 容器应用提供了一种平台管理的方法来创建和利用 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 组件引用该机密存储。 以下示例演示如何使用 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 组件复原能力