分享方式:


使用 Azure 負載測試對安全端點進行負載測試

在本文中,您會了解如何搭配需要驗證的應用程式端點使用 Azure 負載測試。 根據您的應用程式實作,您可能會使用存取權杖、使用者認證或客戶端憑證以驗證要求。

Azure 負載測試支援下列選項用於驗證的端點:

必要條件

  • 具有有效訂用帳戶的 Azure 帳戶。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶
  • Azure 負載測試資源。 若要建立負載測試資源,請參閱建立和執行負載測試

使用共用祕密或認證進行驗證

在此案例中,應用程式端點會要求您使用共用祕密,例如存取權杖、API 金鑰或使用者認證來進行驗證。

下圖顯示如何使用共用祕密或認證,在負載測試中向應用程式端點進行驗證。

Diagram that shows how to use shared-secret authentication with Azure Load Testing.

使用共用祕密或使用者認證進行驗證的流程為:

  1. 例如,將祕密或認證安全地儲存在 Azure Key Vault 或 CI/CD 祕密存放區中。
  2. 參考負載測試組態中的秘密。
  3. 在 JMeter 指令碼中,使用 GetSecret 函式擷取祕密值,並將祕密值傳遞至應用程式要求。

安全地儲存祕密

為了避免在 JMeter 指令碼中儲存和揭露安全性資訊,您可以安全地將祕密儲存在 Azure Key Vault 或 CI/CD 祕密存放區中。

您可以透過下列兩種方式之一,在祕密存放區中新增安全性資訊:

參考負載測試組態中的祕密

在您可以擷取 JMeter 測試指令碼中的祕密值之前,必須先參考負載測試組態中的祕密。

在 Azure 入口網站中,您可以參考 Azure Key Vault 中儲存的祕密。 若要在 Azure 入口網站中新增和設定負載測試祕密:

  1. 在 Azure 入口網站中瀏覽至您的負載測試資源,然後選取 [測試] 以檢視負載測試的清單。

  2. 從清單中選取您的測試,然後選取 [編輯] 以編輯負載測試設定。

    Screenshot that shows how to edit a load test in the Azure portal.

  3. 在 [參數] 索引標籤上,輸入祕密的詳細資料。

    欄位
    名稱 秘密的名稱。 您會將此名稱提供給 GetSecret 函式,以擷取 JMeter 指令碼中的祕密值。
    比對 Azure Key Vault 的祕密識別碼

    Screenshot that shows how to add secrets to a load test in the Azure portal.

  4. 選取 [套用] 以儲存負載測試設定變更。

擷取並使用 JMeter 指令碼中的祕密值

您現在可以使用 GetSecret 自訂函式,擷取 JMeter 指令碼中的祕密值,並將其傳遞至應用程式要求。 例如,使用 Authorization HTTP 標頭將 OAuth 權杖傳遞至要求。

  1. 建立使用者定義的變數,以使用 GetSecret 自訂函式擷取祕密值:

    GetSecret 函式總結從 Azure Key Vault 或 CI/CD 祕密存放區中擷取值的方式。

    Screenshot that shows how to add a user-defined variable that uses the GetSecret function in JMeter.

  2. 更新 JMeter 取樣器元件,以在要求中傳遞祕密。

    例如,若要提供 OAuth2 存取權杖,您可以新增 HTTP Header Manager 來設定 Authorization HTTP 標頭:

    Screenshot that shows how to add an authorization header to a request in JMeter.

使用用戶端憑證進行驗證

在此案例中,應用程式端點會要求您使用用戶端憑證進行驗證。 Azure 負載測試支援公開金鑰憑證標準 #12 (PKCS12) 類型的憑證。 一個負載測試只能使用一個用戶端憑證。

下圖顯示如何使用用戶端憑證,在負載測試中向應用程式端點進行驗證。

Diagram that shows how to use client-certificate authentication with Azure Load Testing.

使用用戶端憑證進行驗證的流程為:

  1. 將用戶端憑證安全地儲存在 Azure Key Vault 中。
  2. 參考負載測試組態中的憑證。
  3. Azure 負載測試會以透明方式將憑證傳遞至 JMeter 中的所有應用程式要求。

將用戶端憑證儲存在 Azure Key Vault 中

為了避免隨著 JMeter 指令碼儲存和揭露用戶端憑證,請將憑證儲存在 Azure Key Vault 中。

請遵循匯入憑證的步驟,將憑證儲存在 Azure Key Vault 中。

重要

Azure 負載測試僅支援 PKCS12 憑證。 以 PFX 檔案格式上傳用戶端憑證。

授與對 Azure 金鑰保存庫的存取權

當您在 Azure Key Vault 中儲存負載測試秘密或憑證時,負載測試資源會使用受控識別來存取金鑰保存庫。 在設定管理身分識別之後,您必須授與負載測試資源的受控識別從金鑰保存庫讀取這些值的權限。

若要授與 Azure 負載測試資源從 Azure 金鑰保存庫讀取祕密或憑證的權限:

  1. Azure 入口網站中,移至 Azure 金鑰保存庫資源。

    如果您沒有金鑰保存庫,請遵循 Azure Key Vault 快速入門中的指示來建立金鑰保存庫。

  2. 在左側窗格中,選取 [存取原則],然後選取 [+ 建立]

  3. 在 [權限] 索引標籤的 [祕密權限] 下,選取 [取得],然後選取 [下一步]

    注意

    Azure 負載測試會將憑證擷取為「祕密」,以確保憑證的私密金鑰可供使用。

  4. 在 [主體] 索引標籤上,搜尋並選取負載測試資源的受控識別,然後選取 [下一步]

    如果您使用系統指派的受控識別,則受控識別名稱會符合 Azure 負載測試資源的名稱。

  5. 再次選取 [下一步]。

    當您的測試執行時,與負載測試資源相關聯的受控識別現在可以從金鑰保存庫讀取負載測試的祕密或憑證。

參考負載測試組態中的憑證

若要將用戶端憑證傳遞至應用程式要求,您必須參考負載測試組態中的憑證。

若要在 Azure 入口網站中將用戶端憑證新增至負載測試:

  1. 在 Azure 入口網站中,瀏覽至您的 Azure 負載測試資源。 如果您還沒有任何負載測試,請使用 JMeter 指令碼建立新的負載測試

  2. 在左窗格中,選取 [測試] 以檢視負載測試的清單。

  3. 從清單中選取您的測試,然後選取 [編輯] 以編輯負載測試設定。

    Screenshot that shows how to edit a load test in the Azure portal.

  4. 在 [參數] 索引標籤上,輸入憑證的詳細資料。

    欄位
    名稱 憑證的名稱。
    比對 Azure Key Vault 中憑證的祕密識別碼

    Screenshot that shows how to add a certificate to a load test in the Azure portal.

  5. 選取 [套用] 以儲存負載測試設定變更。

當您執行負載測試時,Azure 負載測試會從 Azure Key Vault 擷取用戶端憑證,並自動將其插入每個 JMeter Web 要求中。