共用方式為


如何使用 Azure 身分識別連結庫向 Azure 資源驗證 Azure 裝載的 JavaScript 應用程式

在 Azure 中裝載應用程式時(使用 Azure App Service、Azure Functions 或 Azure Container Apps 等服務),您可以使用 受控識別 安全地向 Azure 資源驗證您的應用程式。

受控識別會為您的應用程式提供身分識別,讓它連線到其他 Azure 資源,而不需要使用秘密(例如連接字串或密鑰)。 在內部,Azure 會辨識應用程式的身分識別,並知道應用程式有權存取哪些資源。 Azure 會使用這項資訊自動取得應用程式的Microsoft Entra 令牌,讓它聯機到其他 Azure 資源,而不需要您管理(建立或輪替)驗證秘密。

受控識別類型

受控身分識別有兩種:

  • 系統指派的受控識別 - 單一 Azure 資源
  • 使用者指派的受控識別 - 多個 Azure 資源

本文涵蓋為應用程式啟用和使用系統指派受控識別的步驟。 如果您需要使用由使用者指派的受控識別,請參閱管理使用者指派的受控識別一文,以了解如何建立使用者指派的受控識別。

單一資源的系統指派受控識別

系統指派的受控識別是由 提供並直接系結至 Azure 資源。 當您在 Azure 資源上啟用受控識別時,您會取得系統為該資源指派的受控識別。 管理中身份會繫結至 Azure 資源的生命週期。 因此,當刪除資源時,Azure 會自動為您刪除身分識別。 由於您只需要為裝載程式代碼的 Azure 資源啟用受控識別,因此此身分識別類型是最簡單的受控識別類型。

多個資源的使用者指派受控識別

使用者指派的受控識別是獨立的 Azure 資源。 當您的解決方案有多個工作負載在多個 Azure 資源上執行,而這些工作負載全都需要共用相同的身分識別和相同的許可權時,最常使用此身分識別類型。 例如,假設您的解決方案包含在多個 App Service 和虛擬機實例上執行的應用程式。 應用程式都需要存取同一組 Azure 資源。 跨這些資源建立和使用使用者指派的受控識別是最佳設計選擇。

1 - 在託管應用程式中啟用系統指派的受控識別

第一個步驟是在裝載應用程式的 Azure 資源上啟用受控識別。 例如,如果您要使用 Azure App Service 裝載 Express.js 應用程式,則必須為該 App Service Web 應用程式啟用受控識別。 如果您使用 VM 來裝載應用程式,您可以讓 VM 使用受控識別。

您可以使用 Azure 入口網站或 Azure CLI,讓受控識別用於 Azure 資源。

指示 Screenshot
在 Azure 入口網站中瀏覽至裝載應用程式程式碼的資源。

例如,您可以在頁面頂端的搜尋方塊中輸入資源的名稱,並在對話方塊中加以選取,以瀏覽至該資源。
螢幕快照,顯示如何使用 Azure 入口網站 中的頂端搜尋列來尋找並流覽至 Azure 中的資源。
在資源的頁面上,從左側功能表中選取 [身分識別] 功能表項目。

所有能夠支援受控識別的 Azure 資源都會有 [身分識別] 功能表項目,即便功能表的配置可能稍有不同。
螢幕擷取畫面顯示 [身分識別] 功能表項目在 Azure 資源左側功能表中的位置。
在 [身分識別] 頁面上:
  1. 將 [狀態] 滑桿變更為 [開啟]
  2. 選取儲存
確認對話框會驗證您想要為您的服務啟用受控識別。 回答 [是 ] 以啟用 Azure 資源的受控識別。
螢幕擷取畫面顯示如何在資源的 [身分識別] 頁面上啟用 Azure 資源的受控識別。

2 - 將角色指派給受控識別

接下來,您必須判斷應用程式需要哪些角色 (權限),並將受控識別指派給 Azure 中的這些角色。 受控識別可以在資源、資源群組或訂閱範圍獲派角色。 此範例示範如何在資源群組範圍中指派角色,因為大部分的應用程式都會將其所有 Azure 資源群組組成單一資源群組。

指示 Screenshot
用 Azure 入口網站頂端的搜尋方塊,搜尋資源群組的名稱,藉此找出應用程式的資源群組。

選取對話方塊中 資源群組 標題下方的資源群組名稱,瀏覽至您的資源群組。
此螢幕快照顯示如何使用 Azure 入口網站 中的頂端搜尋列來尋找並流覽至 Azure 中的資源群組。
在資源群組分頁中,從左側功能表選取 存取控制 (IAM) 顯示 Azure 資源群組左側選單中存取控制 (I A M) 選單項位置的螢幕快照。
存取控制 (IAM) 分頁上:
  1. 選取 [角色指派] 索引標籤。
  2. 從頂端功能表選取 [+ 新增],然後從產生的下拉功能表中選取 [新增角色指派]
螢幕擷取畫面顯示如何瀏覽至角色指派索引標籤,以及用來將角色指派新增至資源群組的按鈕位置。
新增角色指派 分頁列出所有可指派至資源群組之角色的清單。
  1. 請善用搜尋方塊,將清單篩選為更易於管理的大小。 此範例顯示如何針對儲存體 Blob 角色進行篩選。
  2. 選取您要指派的角色。
    選取 [下一步] 前往下一個畫面。
螢幕擷取畫面顯示如何篩選並選取要新增至資源群組的角色指派。
下一個 新增角色指派 分頁能讓您指定要指派角色的使用者。
  1. 選取 [指派存取權] 下的 [受控識別]
  2. 選取 [成員] 下的 [+ 選取成員]
對話方塊會在 Azure 入口網站的右側開啟。
螢幕擷取畫面顯示如何在 [新增角色指派] 頁面上選取受控識別,作為您要指派角色 (權限) 的使用者類型。
在 [選取受控識別] 對話方塊中:
  1. [受控識別] 下拉式清單和 [選取] 文字方塊可用來篩選訂閱中的受控識別清單。 此範例選取了 App Service,因此只會顯示與 App Service 相關聯的受控識別。
  2. 為裝載應用程式的 Azure 資源選取受控識別。
選擇對話框底部的 [ 選取 ] 以繼續。
螢幕擷取畫面顯示如何使用 [選取受控識別] 對話方塊來篩選及選取要獲派角色的受控識別。
受控識別會在 [ 新增角色指派 ] 畫面上顯示為已選取。

選取 [檢閱 + 指派] 移至最終分頁,然後再次選取 [檢閱 + 指派] 完成此流程。
螢幕擷取畫面顯示最終的 [新增角色指派] 畫面,使用者必須在此選取 [檢閱 + 指派] 按鈕以完成角色指派。

3 - 在應用程式中實作 DefaultAzureCredential

DefaultAzureCredential 會自動偵測正在使用受控識別,並使用受控識別向其他 Azure 資源進行驗證。 如 Azure 身分識別 JavaScript 驗證程式庫概覽 一文所述,DefaultAzureCredential 支援多種驗證方法,並在執行時確定所使用的驗證方法。 如此一來,您的應用程式就可以在不同的環境中使用不同的驗證方法,而不需要實作環境特定的程序代碼。

首先,將 @azure/身分 識別套件新增至您的應用程式。

npm install @azure/identity

接下來,針對在應用程式中建立 Azure SDK 用戶端物件的任何 JavaScript 程式代碼,您想要:

  1. 從模組匯入 DefaultAzureCredential@azure/identity 類別。
  2. 建立 DefaultAzureCredential 物件。
  3. DefaultAzureCredential 對象傳遞至 Azure SDK 用戶端物件建構函式。

下列步驟的範例會顯示在下列程式代碼區段中。

// connect-with-default-azure-credential.js
import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
import 'dotenv/config'

const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!accountName) throw Error('Azure Storage accountName not found');

const blobServiceClient = new BlobServiceClient(
  `https://${accountName}.blob.core.windows.net`,
  new DefaultAzureCredential()
);