共用方式為


在 Azure API 管理中使用用戶端憑證驗證來保護後端服務

適用於:所有 APIM 層

API 管理可讓您使用用戶端憑證和相互 TLS 驗證來保護對 API 後端服務的存取。 本文說明如何使用 Azure 入口網站在 API 管理中管理憑證。 此外,也會說明如何設定 API 來使用憑證存取後端服務。

您也可以使用 API 管理 REST API 來管理 API 管理憑證。

憑證選項

API 管理提供兩個選項來管理用來保護後端服務存取權的憑證:

  • 參考在 Azure Key Vault 中管理的憑證。
  • 直接在 API 管理中新增憑證檔案。

附註

目前,在工作區中此案例下無法進行與金鑰保存庫的整合。

建議您使用金鑰保存庫憑證,因為這樣做可改善 API 管理安全性:

  • 儲存在金鑰保存庫中的憑證可以跨服務重複使用。
  • 細微 存取原則 可以套用至儲存在密鑰保存庫中的憑證。
  • 在金鑰保存庫中,已更新的憑證會自動在 API 管理中旋轉。 在密鑰保存庫中更新之後,API 管理中的憑證會在四小時內更新。 您也可以使用 Azure 入口網站或透過管理 REST API 手動重新整理憑證。

先決條件

附註

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 若要開始使用,請參閱安裝 Azure PowerShell。 若要了解如何遷移至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az

  • 如果您尚未建立 API 管理實例,請參閱 建立 API 管理服務實例

  • 設定後端服務客戶端憑證驗證。 如需在 Azure App Service 中設定憑證驗證的相關信息,請參閱 在 App Service 中設定 TLS 相互驗證

  • 請確定您可以存取 Azure 金鑰保存庫中的憑證和密碼,或要上傳至 API 管理服務的憑證。 憑證必須是 PFX 格式。 可接受自我簽署憑證。

  • 如果你使用自簽憑證或其他自訂 CA 憑證,且 API 管理實例屬於經典層級,請在 API Management 中安裝對應的根與中介憑證,以啟用後端服務憑證的驗證。 欲了解更多資訊,請參閱 如何在 Azure API Management 中新增自訂 CA 憑證

    如果你不安裝 CA 憑證,API 管理無法驗證後端服務憑證,且對後端服務的請求會失敗,除非你關閉憑證鏈驗證。 請參閱本文稍後的停用自我簽署憑證的證書鏈驗證

    重要事項

    如果你的 API 管理實例屬於 v2 層級,你只能在 後端的授權憑證中設定 CA 憑證的詳細資訊。 更多資訊請參閱後端指引。

    附註

    使用層不支援憑證驗證的 CA 憑證。

金鑰保存庫整合的必要條件

  1. 如果您還沒有金鑰保存庫,請建立一個。 如需建立金鑰保存庫的相關信息,請參閱 快速入門:使用 Azure 入口網站建立金鑰保存庫

  2. 在 API 管理中啟用系統指派或使用者指派的 受控識別

設定金鑰保存庫存取權

  1. 在入口網站中,移至您的金鑰保存庫。
  2. 在左側功能表中,選取 設定>訪問設定。 請注意已配置的許可權模型
  3. 根據權限模型,為 APIM 受控識別設定金鑰保存庫存取原則Azure RBAC 存取權

若要新增金鑰保存庫存取原則:

  1. 在左側功能表中,選取 [存取原則]
  2. [存取原則] 頁面上,選取 [+ 建立]
  3. 在 [ 許可權] 索引標籤的 [ 秘密許可權] 底下,選取 [取得列表],然後選取 [ 下一步]。
  4. 在 [主體] 索引標籤上,搜尋受控身分識別的資源名稱,然後選取 [下一步]。 如果您使用系統指派的身分識別,則主體是您 API 管理執行個體的名稱。
  5. 再次選取 [下一步]。 在 [檢閱 + 建立] 索引標籤中,選取 [建立]

若要在密鑰保存庫中建立憑證,或將憑證匯入至密鑰保存庫,請參閱 快速入門:使用 Azure 入口網站從 Azure Key Vault 設定及擷取憑證

金鑰保存庫防火牆的需求

如果您的 金鑰保存庫已啟用 Key Vault 防火牆 ,您必須符合下列需求:

  • 您必須使用 API 管理實體的系統指派受控識別來存取密鑰保存庫。

  • 確保你的 API Management 實例能透過網路與金鑰庫連結。 根據你的情境,請在金鑰保險庫上設定以下網路存取選項之一:

    • 允許所有網路公開存取。

    • 設定網路安全規則,允許基於 IP 位址或虛擬網路連線的 API 管理流量。

    • 透過私有連結連接,保護來自 API 管理的流量。

    • 使用 網路安全邊界 來保護你的金鑰庫,並允許來自 API 管理的流量。

  • 當您選取要新增至 Azure API 管理的憑證或祕密時,請確定您的本機用戶端 IP 位址可以暫時存取金鑰保存庫。 如需詳細資訊,請參閱設定 Azure Key Vault 網路設定

    完成設定之後,您可以在金鑰保存庫防火牆中封鎖客戶端位址。

重要事項

自 2026 年 3 月起,從 API 管理連接到 Azure Key Vault 的可信服務連線將不再透過啟用允許可信 Microsoft 服務繞過此防火牆金鑰保存庫防火牆設定支援。 若要在此變更後繼續使用 Key Vault 與 API 管理,請確保選擇上述支援的網路存取選項。 深入瞭解

虛擬網路需求

如果 API 管理執行個體已部署在虛擬網路中,也請設定下列網路設定:

  • 在 APIM 子網路上啟用 Key Vault 的服務端點
  • 設定網路安全性群組 (NSG) 規則,以允許對 AzureKeyVault 和 AzureActiveDirectory 服務標籤的輸出流量。

如需詳細資訊,請參閱 在虛擬網路中設定 API 管理時的網路組態

新增金鑰保存庫憑證

請參閱金鑰保存庫整合的必要條件

重要事項

若要將金鑰保存庫憑證新增至 API 管理實例,您必須具有從密鑰保存庫列出秘密的許可權。

注意

在 API 管理中使用金鑰保存庫憑證時,請小心不要刪除用來存取密鑰保存庫的憑證、金鑰保存庫或受控識別。

如果要將金鑰保存庫憑證新增至 API 管理:

  1. Azure 入口網站中,移至您的 API 管理實例。

  2. [安全性] 底下,選取 [憑證]

  3. 選取 [憑證]>[+新增]

  4. ID 中,輸入名稱。

  5. [憑證] 中,選取 [金鑰保存庫]

  6. 輸入金鑰保存庫憑證的識別碼,或選擇 [選取] 從金鑰保存庫來選取憑證。

    重要事項

    如果您自行輸入金鑰保存庫憑證標識碼,請確定它沒有版本資訊。 否則,憑證在金鑰保存庫中更新後,不會在 API 管理中自動旋轉。

  7. [用戶端身分識別] 中,選取系統指派的身分識別或現有的使用者指派受控識別。 如需詳細資訊,請參閱 在 Azure API 管理中使用受控識別

    附註

    身分識別需要權限才能從金鑰保存庫來取得和列出憑證。 如果您尚未設定金鑰保存庫的存取權,API 管理會提示您,以便使用必要的許可權自動設定身分識別。

  8. 選取 [新增]

    顯示如何在入口網站中將密鑰保存庫憑證新增至 API 管理的螢幕快照。

  9. 選取 [儲存]

上傳憑證

如果要將用戶端憑證上傳至 API 管理:

  1. Azure 入口網站中,移至您的 API 管理實例。

  2. [安全性] 底下,選取 [憑證]

  3. 選取 [憑證]>[+新增]

  4. ID 中,輸入名稱。

  5. [憑證] 中,選取 [自訂]

  6. 瀏覽以選取憑證 .pfx 檔案,然後輸入其密碼。

  7. 選取 [新增]

    在入口網站中將用戶端憑證上傳至 API 管理的螢幕擷取畫面。

  8. 選取 [儲存]

憑證上傳完畢後,其會顯示在 [憑證] 視窗中。 如果您有許多憑證,請注意您剛才上傳之憑證的指紋。 您將需要它來設定 API,以使用用戶端憑證進行 閘道驗證

設定 API 來執行用戶端憑證驗證的網路閘道

  1. Azure 入口網站中,移至您的 API 管理實例。

  2. [API] 底下,選取 [API]

  3. 從清單中選取 [API]。

  4. 在 [ 設計] 索引標籤上,選取 [後端 ] 區段中的鉛筆圖示。

  5. [網關認證] 中,選取 [用戶端憑證 ],然後在 [用戶端憑證 ] 列表中選取您的憑證。

  6. 選取 [儲存]

    使用用戶端憑證進行閘道驗證

注意

這項變更會立即生效。 對 API 作業的呼叫將會使用憑證在後端伺服器上進行驗證。

秘訣

當為 API 後端服務的閘道驗證指定憑證時,它會成為該 API 原則的一部分,而且可以在原則編輯器中檢視。

停用自我簽署憑證的憑證鏈結驗證

如果你使用自簽憑證,且 API 管理實例屬於經典層級,你需要停用憑證鏈驗證,才能讓 API 管理與後端系統通訊。 否則,您會收到 500 錯誤碼。 若要停用此驗證,您可以使用 New-AzApiManagementBackend (針對新的後端) 或 Set-AzApiManagementBackend (針對現有的後端) PowerShell Cmdlet,並將 參數設定 -SkipCertificateChainValidationTrue

$context = New-AzApiManagementContext -ResourceGroupName 'ContosoResourceGroup' -ServiceName 'ContosoAPIMService'
New-AzApiManagementBackend -Context  $context -Url 'https://contoso.com/myapi' -Protocol http -SkipCertificateChainValidation $true

您也可以使用後端 REST API 來停用憑證鏈結驗證。

刪除用戶端憑證

若要刪除憑證,請在省略號 (...) 功能選單上選取 [刪除]:

刪除憑證

重要事項

如果憑證被任何策略參考,就會顯示警告訊息。 若要刪除憑證,您必須先從設定為使用它的任何原則中移除憑證。