你当前正在访问 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 机密存储组件来检索这些机密。
若要设置引用,请执行以下操作:
- 使用 Azure 容器应用架构创建 Dapr 机密存储组件。 所有支持的 Dapr 机密存储的组件类型都以
secretstores.
开头。 - 创建引用 Dapr 机密存储组件的额外组件(根据需要)来检索敏感元数据输入。
创建 Dapr 机密存储组件
在 Azure 容器应用中创建机密存储组件时,可以通过以下任一方式在元数据部分中提供敏感信息:
- 对于 Azure Key Vault 机密存储,请使用托管标识建立连接。
- 对于非 Azure 机密存储,请使用组件清单中直接定义、由平台管理的 Kubernetes 机密。
Azure Key Vault 机密存储
以下组件架构展示了使用 Azure Key Vault 机密存储的最简单的机密存储配置。 publisher-app
和 subscriber-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