你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
通过使用托管身份或 Azure 密钥保管库 的机密存储,为 Dapr 组件安全地与 Azure 和非 Microsoft 服务建立连接。
在开始之前,请详细了解 为 Dapr 组件提供的支持。
建议
对于最安全的连接,建议尽可能使用提供托管标识支持的Azure组件。 仅当不支持托管标识身份验证时,才使用 Azure 密钥保管库密钥存储。
| 服务类型 | 建议 |
|---|---|
| 具有托管标识支持的Azure组件 | 使用托管标识流(推荐) |
| 不支持托管标识的 Azure 组件 | 使用Azure 密钥保管库机密存储 |
| 非-Azure 组件 | 使用Azure 密钥保管库机密存储 |
使用托管标识(建议)
对于 Azure 托管的服务,Dapr 可以使用作用域容器应用的托管身份标识来对后端服务提供商进行身份验证。 使用托管标识时,无需在组件清单中包含机密信息。 建议使用托管标识,因为托管标识不存储组件中的敏感输入,并且不需要管理机密存储。
注意
azureClientId 元数据字段(托管标识的客户端 ID)对于使用用户分配的托管标识进行身份验证的任何组件都是必需的。
使用 Dapr 机密存储组件引用
在为未启用 Entra ID 的服务或不支持托管标识身份验证的组件创建 Dapr 组件时,某些元数据字段需要输入敏感数据。 对于此方法,请通过引用可安全访问机密信息的现有 Dapr 机密存储组件来检索这些机密。
若要设置引用,请执行以下操作:
- 使用 Azure 容器应用 架构创建 Dapr 机密存储组件。 所有支持的 Dapr 机密存储的组件类型都以
secretstores开头。 - 创建引用 Dapr 机密存储组件的额外组件(根据需要)来检索敏感元数据输入。
创建 Dapr 机密存储组件
在 Azure 容器应用 中创建机密存储组件时,可以通过以下任一方式在元数据部分中提供敏感信息:
- 对于 Azure 密钥保管库 机密存储,请使用托管标识建立连接。
- 对于非 Azure 密钥存储,请使用组件清单中直接定义、由平台管理的 Kubernetes 密钥。
Azure 密钥保管库机密存储
以下组件架构展示了使用Azure 密钥保管库机密存储的最简单机密存储配置。
publisher-app 和 subscriber-app 均配置为具有系统或用户分配的托管标识,并在 Azure 密钥保管库 实例上赋予了适当的权限。
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 组件引用该机密存储。 以下示例演示如何使用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