從內部部署 JavaScript 應用程式向 Azure 資源進行驗證
在 Azure 外部執行的應用程式(例如內部部署或第三方資料中心)應該使用應用程式服務主體在存取 Azure 資源時向 Azure 進行驗證。 系統會在 Azure 中使用應用程式註冊程序來建立應用程式服務主體物件。 建立應用程式服務主體時,會產生應用程式的用戶端標識碼和客戶端密碼。 您會將用戶端識別碼、用戶端密碼和租使用者標識符儲存在環境變數中,讓適用於 JavaScript 的 Azure SDK 在運行時間使用環境變數向 Azure 驗證您的應用程式。
應該為每個環境建立不同的應用程式註冊(例如測試、階段、生產環境),應用程式正在執行。 這可讓每個服務主體設定環境特定的資源許可權,並確定部署到某個環境的應用程式不會與屬於另一個環境一部分的 Azure 資源交談。
1:在 Azure 中註冊應用程式
您可以使用 Azure 入口網站或 Azure CLI 向 Azure 註冊應用程式。
登入 Azure 入口網站並遵循下列步驟。
2:將角色指派給應用程式服務主體
接著,您必須決定應用程式針對哪些資源需要哪些角色 (權限),並將這些角色指派給應用程式。 角色可在資源、資源群組或訂閱範圍內獲派其他角色。 此範例會顯示如何在資源群組範圍內為服務主體指派角色,因為多數應用程式都會將所有 Azure 資源劃分在單一資源群組中。
3:設定應用程式的環境變數
您必須為執行 JavaScript 應用程式的進程設定 AZURE_CLIENT_ID
、 AZURE_TENANT_ID
和 AZURE_CLIENT_SECRET
環境變數,讓應用程式服務主體認證可在運行時間使用。 對象 DefaultAzureCredential
會尋找這些環境變數中的服務主體資訊。
AZURE_CLIENT_ID=<value>
AZURE_TENANT_ID=<value>
AZURE_CLIENT_SECRET=<value>
4:在應用程式中實作 DefaultAzureCredential
若要向 Azure 驗證 Azure SDK 用戶端物件,您的應用程式應該使用DefaultAzureCredential
來自@azure/身分識別套件的 類別。
首先,將 @azure/身分 識別套件新增至您的應用程式。
npm install @azure/identity
接下來,針對在應用程式中建立 Azure SDK 用戶端物件的任何 JavaScript 程式代碼,您會想要:
- 從模組匯入
DefaultAzureCredential
@azure/identity
類別。 - 建立
DefaultAzureCredential
物件。 - 將
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()
);
當上述程式代碼具現化 DefaultAzureCredential
物件時, DefaultAzureCredential
讀取環境變數 AZURE_SUBSCRIPTION_ID
、 AZURE_TENANT_ID
、 AZURE_CLIENT_ID
和 AZURE_CLIENT_SECRET
,讓應用程式服務主體資訊連線到 Azure。