透過 Dapr 元件連線到其他 Azure 或第三方服務
使用受控識別或 Azure 金鑰保存庫 秘密存放區,安全地為 Dapr 元件建立與 Azure 和第三方服務的連線。
開始之前, 請先深入瞭解 Dapr 元件的提供支援。
建議
盡可能使用 Azure 元件,以提供最安全連線的受控識別支援。 只有在不支援受控識別驗證時,才使用 Azure 金鑰保存庫 秘密存放區。
服務類型 | 建議 |
---|---|
具有受控識別支援的 Azure 元件 | 使用受控識別流程 (建議) |
沒有受控識別支援的 Azure 元件 | 使用 Azure 金鑰保存庫 秘密存放區 |
非 Azure 元件 | 使用 Azure 金鑰保存庫 秘密存放區 |
使用受控識別 (建議)
針對 Azure 裝載的服務,Dapr 可以使用限定範圍的容器應用程式的受控識別向後端服務提供者進行驗證。 使用受控識別時,您不需要在元件資訊清單中包含祕密資訊。 建議 使用受控識別,因為它可排除在元件中敏感性輸入的記憶體,而且不需要管理秘密存放區。
注意
針對利用使用者指派的受控識別進行驗證的任何元件,azureClientId
中繼資料欄位 (受控識別的用戶端識別碼) 為必要欄位。
使用 Dapr 祕密存放區元件參考
當您為不支援受控識別驗證的非 Entra 識別元啟用服務或元件建立 Dapr 元件時,某些元數據欄位需要敏感性輸入值。 針對此方法,參考可安全地存取秘密資訊的現有 Dapr 秘密存放區元件,以擷取這些秘密。
若要設定參考:
- 使用Azure 容器應用程式結構描述建立 Dapr 祕密存放區元件。 所有支援的 Dapr 祕密存放區的元件類型都是以
secretstores.
開頭。 - 建立額外的元件 (視需要),以參考您建立的 Dapr 祕密存放區元件來擷取敏感性中繼資料輸入。
建立 Dapr 祕密存放區元件
在 Azure 容器應用程式中建立祕密存放區元件時,您可以使用下列其中一種方式,在中繼資料區段中提供敏感性資訊:
- 針對 Azure Key Vault 祕密存放區,請使用受控識別來建立連線。
- 針對非 Azure 祕密存放區,請使用直接定義為元件資訊清單一部分的平台受控 Kubernetes 祕密。
Azure Key Vault 祕密存放區
下列元件架構會使用 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 祕密
Azure Container Apps 除了 Kubernetes 秘密、本機環境變數和本機檔案 Dapr 秘密存放區,還提供平臺管理的方法來建立及運用 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