使用 Microsoft Entra ID 設定 Durable Functions

Microsoft Entra ID (Microsoft Entra ID) 是雲端式身分識別與存取管理服務。 身分識別型連線可讓 Durable Functions 對 Microsoft Entra 受保護資源提出授權要求,例如 Azure 儲存體帳戶,而不需要手動管理秘密。 使用預設的 Azure 儲存體提供者,Durable Functions 必須針對 Azure 儲存體帳戶進行驗證。 在本文中,我們將示範如何設定 Durable Functions 應用程式,以利用兩種身分識別型連線:受控識別認證用戶端密碼認證

受控識別可讓應用程式輕鬆存取其他 Microsoft Entra 受保護資源 (例如 Azure Key Vault)。 Durable Functions 延伸模組2.7.0 版和更新版本支援受控識別。

注意

嚴格來說,應用程式只有在 Azure 上執行時才能使用受控識別。 設定為使用身分識別型連線時,本機執行的應用程式會利用您的開發人員認證向 Azure 資源進行驗證。 然後,在 Azure 上部署時,它會改用您的受控識別設定。

必要條件

下列步驟假設您從現有的 Durable Functions 應用程式開始,並熟悉其操作方式。 特別是在本快速入門中,假設您已經:

  • 在 Azure 入口網站建立 Durable Functions 專案,或已將本機 Durable Functions 部署至 Azure。

如果情況並非如此,建議您從下列其中一篇文章開始,其中提供如何達成上述所有需求的詳細指示:

啟用受控識別

函式只需要一個身分識別,可以是系統指派的受控識別使用者指派的受控識別。 若要啟用函式的受控識別,並深入了解這兩種身分識別之間的差異,請參閱這裡提供的詳細指示。

將角色型存取控制 (RBAC) 指派給受控識別

在 Azure 入口網站中,瀏覽至您的應用程式儲存體資源。 請遵循這些指示,將下列角色指派給您的受控識別資源。

  • 儲存體佇列資料參與者
  • 儲存體 Blob 資料參與者
  • 儲存體資料表資料參與者

在 Azure 入口網站中新增受控識別設定

瀏覽至 Azure 函數應用程式的 [設定] 頁面,然後執行下列變更:

  1. 移除預設值 "AzureWebJobsStorage"。

Screenshot of default storage setting.

  1. 新增下列其中一個值設定以連結您的 Azure 儲存體帳戶:

    • AzureWebJobsStorage__accountName:例如:mystorageaccount123

    • AzureWebJobsStorage__blobServiceUri:範例:https://mystorageaccount123.blob.core.windows.net/

      AzureWebJobsStorage__queueServiceUri:範例:https://mystorageaccount123.queue.core.windows.net/

      AzureWebJobsStorage__tableServiceUri:範例:https://mystorageaccount123.table.core.windows.net/

      注意

      如果您使用 Azure Government 或任何其他與全域 Azure 分開的雲端,則必須使用第二個選項來提供特定服務 URL。 您可以在 [端點] 索引標籤下的儲存體帳戶中找到這些設定的值。如需搭配 Azure Government 使用 Azure 儲存體的詳細資訊,請參閱在 Azure Government 上使用儲存體 API 進行開發文件。

    Screenshot of endpoint sample.

  2. 完成受控識別設定:

    • 如果應該使用系統指派的身分識別,則不需指定其他設定。

    • 如果應該使用使用者指派的身分識別,請在應用程式設定中新增下列應用程式設定值:

      • AzureWebJobsStorage__credential:managedidentity

      • AzureWebJobsStorage__clientId:(這是您從 Microsoft Entra 系統管理中心取得的 GUID 值)

      Screenshot of user identity client id.

設定應用程式使用用戶端密碼認證

在 Microsoft Entra ID 中註冊用戶端應用程式是設定 Azure 服務存取權的另一種方式。 在下列步驟中,您將了解如何使用用戶端密碼認證向 Azure 儲存體帳戶進行驗證。 函數應用程式可在本機和 Azure 上使用此方法。 不過,相較於受控識別,較不建議使用用戶端密碼認證,因為設定和管理更複雜,而且需要與 Azure Functions 服務共用秘密認證。

必要條件

下列步驟假設您從現有的 Durable Functions 應用程式開始,並熟悉其操作方式。 特別是在本快速入門中,假設您已經:

  • 在本機電腦或 Azure 入口網站中建立 Durable Functions 專案。

在 Microsoft Entra ID 中註冊用戶端應用程式

  1. 根據這些指示,使用 Azure 入口網站,在 Microsoft Entra ID 底下註冊用戶端應用程式。

  2. 為用戶端應用程式建立用戶端密碼。 在已註冊的應用程式中:

    1. 選取 [憑證和祕密],然後選取 [新增用戶端密碼]

    2. 填寫 [描述],然後在 [到期] 欄位中選擇祕密有效時間。

    3. 請小心複製並儲存秘密值,因為它不會在您離開頁面之後再次顯示。

    Screenshot of client secret page.

將角色型存取控制 (RBAC) 指派給用戶端應用程式

使用下列步驟,將這三個角色指派給用戶端應用程式。

  • 儲存體佇列資料參與者
  • 儲存體 Blob 資料參與者
  • 儲存體資料表資料參與者
  1. 瀏覽至函式的儲存體帳戶 [存取控制 (IAM)] 頁面,然後新增角色指派。

    Screenshot of access control page.

  2. 選擇必要的角色,按 [下一步],然後搜尋您的應用程式、檢閱和新增。

    Screenshot of role assignment page.

新增客戶端密碼設定

若要在 Azure 中執行及測試,請前往 Azure 入口網站,在 Azure 函數應用程式的 [設定] 頁面中指定下列設定。 若要在本機執行及測試,請在函式的 local.settings.json 檔案中指定下列設定。

  1. 移除預設值 "AzureWebJobsStorage"。

  2. 新增下列其中一個值設定以連結 Azure 儲存體帳戶:

    • AzureWebJobsStorage__accountName:例如:mystorageaccount123

    • 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 變數的值。

    Screenshot of endpoint sample.

  3. 藉由指定下列值來新增用戶端密碼認證:

    • AzureWebJobsStorage__clientId:(這是在 Microsoft Entra 應用程式頁面中找到的 GUID 值)

    • AzureWebJobsStorage__ClientSecret:(這是前一步驟在 Microsoft Entra 系統管理中心產生的祕密值)

    • AzureWebJobsStorage__tenantId:(這是 Microsoft Entra 應用程式註冊使用的租用戶識別碼)

    您可以在用戶端應用程式的概觀頁面上找到用戶端識別碼和租用戶識別碼值。 用戶端密碼值是在上一個步驟中小心儲存的秘密值。 重新整理頁面之後就無法取得此值。

    Screenshot of application's overview page.