Share via


使用適用於 JavaScript 的 Azure SDK 向 Azure 資源驗證 Azure 裝載的應用程式

在 Azure 中裝載應用程式時(使用像是 Azure App 服務、Azure 虛擬機器 或 Azure 容器執行個體 等服務),向 Azure 資源驗證應用程式的建議方法是使用受控識別

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

受控識別類型

受控身分識別有兩種:

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

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

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

系統指派的受控識別是由 提供並直接系結至 Azure 資源。 當您在 Azure 資源上啟用受控識別時,您會取得系統為該資源指派的受控識別。 它會系結至 Azure 資源的生命週期。 因此,當刪除資源時,Azure 會自動為您刪除身分識別。 您只需要為裝載程式碼的 Azure 資源啟用受控識別即可,因此,這可說是最容易使用的受控識別類型。

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

從概念上講,此身分識別是獨立的 Azure 資源。 您的解決方案有多個工作負載執行於多個 Azure 資源上,且這些資源全都需要共用相同的身分識別和相同的權限時,最常用到此身分識別。 例如,如果您的解決方案具有在多個 App Service 和虛擬機實例上執行的元件,而且它們都需要存取同一組 Azure 資源,跨這些資源建立和使用使用者指派的受控識別會有意義。

1 - 系統指派:在託管應用程式中啟用

第一個步驟是在裝載應用程式的 Azure 資源上啟用受控識別。 例如,如果您要使用 Azure App 服務 裝載 Django 應用程式,則必須為該 App Service Web 應用程式啟用受控識別。 如果您使用虛擬機器來裝載您的應用程式,則應讓 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 SDK for 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()
);

在本機開發期間於本機工作站上執行上述程式代碼時,SDK 方法 DefaultAzureCredential()會查看應用程式服務主體的環境變數,或查看 VS Code、Azure CLI 或 Azure PowerShell 中的一組開發人員認證,其中任一項可用來在本機開發期間向 Azure 資源驗證應用程式。 如此一來,這個相同的程式代碼可用來在本機開發期間和部署至 Azure 時,向 Azure 資源驗證您的應用程式。