快速入門:使用受控識別來設定 Durable Functions
來自存取管理服務 Microsoft Entra ID 的受控識別可讓您的應用程式存取其他受 Microsoft Entra 保護的資源 (例如 Azure 儲存器帳戶),而不需手動處理密碼。 身分識別由 Azure 平台負責管理,所以您無須佈建或輪替任何密碼。 驗證 Azure 資源存取權的建議方式,是使用這類身分識別。
在本快速入門中,您會完成使用預設 Azure 儲存體提供者設定 Durable Functions 應用程式的步驟,以使用身分識別型連線進行儲存體帳戶存取。
注意
Durable Functions 延伸模組 2.7.0 版和更新版本支援受控識別。
如果您沒有 Azure 帳戶,請在您開始之前先建立 免費帳戶。
必要條件
若要完成本快速入門,您需要:
- 在 Azure 入口網站中建立的現有 Durable Functions 專案,或部署至 Azure 的本機 Durable Functions 專案。
- 熟悉在 Azure 中執行 Durable Functions 應用程式。
如果您沒有部署在 Azure 中的 Durable Functions 專案,建議您先進行下列其中一個快速入門:
- 建立您的第一個耐久函式 - C#
- 建立您的第一個耐久函式 - JavaScript
- 建立您的第一個耐久函式 - Python
- 建立您的第一個耐久函式 - PowerShell
- 建立您的第一個耐久函式 - Java
本機開發
使用 Azure 儲存體模擬器
建議您在進行本機開發時使用 Azurite,這是 Azure 儲存體的本機模擬器。 在 local.settings.json 中指定 "AzureWebJobsStorage": "UseDevelopmentStorage = true"
,即可將您的應用程式設定為模擬器。
本機開發的身分識別型連線
嚴格來說,應用程式只有在 Azure 上執行時才能使用受控識別。 不過,您仍然可以使用開發人員認證來針對 Azure 資源進行驗證,將本機執行的應用程式設定為使用身分識別型連線。 然後,在 Azure 上部署時,應用程式會改用您的受控識別設定。
使用開發人員認證時,連線會嘗試以上述順序從下列位置取得權杖,以存取您的 Azure 資源:
- Microsoft 應用程式之間共用的本機快取
- Visual Studio 中的目前使用者內容
- Visual Studio Code 中的目前使用者內容
- Azure CLI 中的目前使用者內容
如果這些選項都未成功,就會顯示錯誤,表示應用程式無法擷取 Azure 資源的驗證權杖。
設定執行階段以使用本機開發人員身分識別
在 local.settings.json 中指定 Azure 儲存體帳戶的名稱,例如:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage__accountName": "<<your Azure Storage account name>>", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" } }
前往 Azure 入口網站中的 Azure 儲存體帳戶資源,導覽至 [存取控制 (IAM)] 索引標籤,然後按一下 [新增角色指派]。 尋找下列角色:
- 儲存體佇列資料參與者
- 儲存體 Blob 資料參與者
- 儲存體資料表資料參與者
按一下 [+ 選取成員] 並在快顯視窗中尋找您的電子郵件,以將角色指派給自己。 (此電子郵件是您用來登入 Visual Studio 系列中 Microsoft 應用程式、Azure CLI 或編輯器的電子郵件。)
部署至 Azure 之應用程式的身分識別型連線
啟用受控識別資源
若要開始,請為應用程式啟用受控識別。 您的函數應用程式必須要有系統指派的受控識別或使用者指派的受控識別。 若要為函數應用程式啟用受控識別,並深入了解這兩種身分識別之間的差異,請參閱受控識別概觀。
將存取角色指派給受控識別
導覽至 Azure 入口網站中應用程式的 Azure 儲存體資源,將三個角色型存取控制 (RBAC) 角色指派給受控識別資源:
- 儲存體佇列資料參與者
- 儲存體 Blob 資料參與者
- 儲存體資料表資料參與者
若要找到您的身分識別資源,請針對 [存取權指派對象] 選取 [受控識別],然後選取 [+ 選取成員]
將受控識別組態新增至您的應用程式
在使用應用程式的受控識別之前,必須先對應用程式設定進行一些變更:
在 Azure 入口網站中,於函數應用程式資源功能表的 [設定] 下,選取 [環境變數]。
新增設定以將您的 Azure 儲存體帳戶連結至應用程式。
視您應用程式執行的雲端而定,使用下列其中一種方法:
Azure 雲端:如果您的應用程式在全域 Azure 中執行,請新增可識別 Azure 儲存體帳戶名稱的
AzureWebJobsStorage__accountName
設定。 範例值:mystorageaccount123
非 Azure 雲端:如果您的應用程式在 Azure 之外的雲端中執行,您必須新增下列三項設定,為儲存體帳戶提供特定的服務 URI (或端點),而不是帳戶名稱。
設定名稱:
AzureWebJobsStorage__blobServiceUri
範例值:
https://mystorageaccount123.blob.core.windows.net/
設定名稱:
AzureWebJobsStorage__queueServiceUri
範例值:
https://mystorageaccount123.queue.core.windows.net/
設定名稱:
AzureWebJobsStorage__tableServiceUri
範例值:
https://mystorageaccount123.table.core.windows.net/
您可以在 [端點] 索引標籤上的儲存體帳戶資訊中找到這些 URI 變數的值。
注意
如果您使用 Azure Government 或任何其他與全域 Azure 不同的雲端,您必須使用提供特定服務 URI 的選項,而不只是提供儲存體帳戶名稱。 如需搭配 Azure Government 使用 Azure 儲存體的詳細資訊,請參閱在 Azure Government 上使用儲存體 API 進行開發。
完成受控識別組態 (請記得在進行設定變更之後按一下[套用]):
如果您使用系統指派的身分識別,則不必進行任何其他變更。
如果您使用使用者指派的身分識別,請將下列設定新增至您的應用程式組態:
針對 AzureWebJobsStorage__credential,請輸入 managedidentity
針對 AzureWebJobsStorage__clientId,從受控識別資源取得此 GUID 值
注意
在使用使用者指派的身分識別時,Durable Functions 不會支援
managedIdentityResourceId
。 請改用clientId
。