在 Azure API 管理中,執行用戶端憑證驗證,來保護後端服務
適用於:所有 APIM 層
APIM 允許您使用用戶端憑證和相互 TLS 驗證,來保護對 API 後端服務的存取權。 本指南說明如何在 Azure 入口網站中,管理 Azure API 管理服務執行個體中的憑證。 此外,也會說明如何設定 API 來使用憑證存取後端服務。
您也可以使用 API 管理 REST API 來管理API 管理憑證。
憑證選項
API 管理提供兩個選項,以管理用來保護後端服務存取權的憑證:
- 請參考在 Azure Key Vault 中的受控憑證
- 直接在 API 管理中新增憑證檔案
建議執行金鑰保存庫憑證,因為這有助於改善 API 管理的安全性:
- 儲存在金鑰保存庫中的憑證,可以跨服務重複使用
- 可以將細微存取原則套用至,儲存在金鑰保存庫中的憑證
- 在金鑰保存庫中,已更新的憑證會自動在 API 管理中旋轉。 將金鑰保存庫更新之後,在 API 管理中的憑證會在 4 小時內進行更新。 您也可以使用 Azure 入口網站,或透過管理 REST API 來手動重新整理憑證。
必要條件
注意
建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 若要開始使用,請參閱安裝 Azure PowerShell (部分機器翻譯)。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az。
如果您尚未建立 API 管理服務執行個體,請參閱 建立 API 管理服務執行個體。
您應該已將後端服務,設定為用戶端憑證驗證。 如果要在 Azure App Service 中設定憑證驗證,請參閱此文章。
您需要存取憑證和密碼,才能在 Azure 金鑰保存庫中,管理或上傳至 API 管理服務。 該憑證必須為 PFX 格式。 可接受自我簽署憑證。
如果您使用自我簽署憑證:
金鑰保存庫整合的必要條件
注意
目前,此功能無法在工作區中使用。
如果您還沒有金鑰保存庫,請建立一個。 如需建立金鑰保存庫的步驟,請參閱快速入門:使用 Azure 入口網站建立金鑰保存庫。
若要建立憑證或將憑證匯入金鑰保存庫,請參閱快速入門:使用 Azure 入口網站從 Azure Key Vault 設定及擷取憑證。
在 API 管理執行個體中啟用系統指派或使用者指派的受控識別。
設定金鑰保存庫存取權
在入口網站中,瀏覽至您的金鑰保存庫。
從左側功能表中選取 [存取設定],並記下已設定的 [權限模型]。
根據權限模型,為 APIM 受控識別設定金鑰保存庫存取原則或 Azure RBAC 存取權。
若要新增金鑰保存庫存取原則:
- 在左側功能表中,選取 [存取原則]。
- 在 [存取原則] 頁面上,選取 [+ 建立]。
- 在 [權限] 索引標籤的 [祕密權限] 下,選取 [取得] 與 [列出],然後選取 [下一步]。
- 在 [主體] 索引標籤的 [選取主體] 中,搜尋受控識別的資源名稱,然後選取 [下一步]。 如果您使用系統指派的身分識別,則主體是您 API 管理執行個體的名稱。
- 再次選取 [下一步]。 在 [檢閱 + 建立] 索引標籤中,選取 [建立]。
若要設定 Azure RBAC 存取權:
- 在左側功能表中,選取 [存取控制 (IAM)]。
- 在 [存取控制 (IAM)] 頁面上,選取 [新增角色指派]。
- 在 [角色] 索引標籤上,選取 [Key Vault 憑證使用者]。
- 在 [成員] 索引標籤上,選取 [受控識別]>[+ 選取成員]。
- 在 [選取受控識別] 頁面上,選取系統指派的受控識別或與 APIM 執行個體相關聯的使用者指派受控識別,然後選取 [選取]。
- 選取檢閱+指派。
金鑰保存庫防火牆的需求
如果您的金鑰保存庫已啟用金鑰保存庫防火牆,則下列為其他需求:
您必須使用 API 管理執行個體的系統指派受控識別來存取金鑰保存庫。
在金鑰保存庫防火牆中,啟用 [允許信任的 Microsoft 服務略過此防火牆] 選項。
當您選取要新增至 Azure API 管理的憑證或祕密時,請確定您的本機用戶端 IP 位址可以暫時存取金鑰保存庫。 如需詳細資訊,請參閱設定 Azure Key Vault 網路設定。
完成設定之後,您可以在金鑰保存庫防火牆中封鎖用戶端位址。
虛擬網路需求
如果 API 管理執行個體已部署在虛擬網路中,也請設定下列網路設定:
- 在 API 管理子網路上啟用 Azure Key Vault 的服務端點。
- 設定網路安全性群組 (NSG) 規則,以允許對 AzureKeyVault 和 AzureActiveDirectory 服務標籤的輸出流量。
如需詳細資料,請參閱在 VNet 中設定 Azure API 管理時的網路設定。
新增金鑰保存庫憑證
請參閱金鑰保存庫整合的必要條件。
重要
將金鑰保存庫憑證新增至 API 管理執行個體時,您必須具有從金鑰保存庫列出秘密的權限。
警告
在 API 管理中使用金鑰保存庫憑證時,請小心不要刪除用來存取金鑰保存庫的憑證、金鑰保存庫,或受控識別。
如果要將金鑰保存庫憑證新增至 API 管理:
在 Azure 入口網站中,瀏覽至您的 API 管理執行個體。
在 [安全性] 底下,選取 [憑證]。
選取 [憑證]>[+新增]。
在 [識別碼] 中,輸入您選擇的名稱。
在 [憑證] 中,選取 [金鑰保存庫]。
輸入金鑰保存庫憑證的識別碼,或選擇 [選取] 從金鑰保存庫來選取憑證。
重要
如果您自行輸入金鑰保存庫憑證識別碼,請確定這個沒有版本資訊。 否則,憑證在金鑰保存庫中更新後,不會在 API 管理中自動旋轉。
在 [用戶端身分識別] 中,選取系統指派或現有的使用者指派受控識別。 了解如何在 API 管理服務中新增或修改受控識別。
注意
身分識別需要從金鑰保存庫來取得和列出憑證。 如果您尚未設定金鑰保存庫的存取權,API 管理會提示您,以便可以使用必要的權限自動設定身分識別。
選取 [新增]。
選取 [儲存]。
上傳憑證
如果要將用戶端憑證上傳至 API 管理:
在 Azure 入口網站中,瀏覽至您的 API 管理執行個體。
在 [安全性] 底下,選取 [憑證]。
選取 [憑證]>[+新增]。
在 [識別碼] 中,輸入您選擇的名稱。
在 [憑證] 中,選取 [自訂]。
瀏覽以選取憑證 .pfx 檔案,然後輸入其密碼。
選取 [新增]。
選取 [儲存]。
憑證上傳完畢後,其會顯示在 [憑證] 視窗中。 如果您有許多憑證,請記下所需憑證的指紋,藉以設定 API 來執行用戶端憑證驗證的網路閘道。
設定 API 來執行用戶端憑證驗證的網路閘道
在 Azure 入口網站中,瀏覽至您的 API 管理執行個體。
在 [API] 底下,選取 [API]。
從清單中選取 [API]。
在 [設計] 索引標籤中,選取 [後端] 區段中的編輯器圖示。
將 [閘道認證] 變更為 [用戶端憑證],並從下拉式清單中選取您的憑證。
選取 [儲存]。
警告
此變更會立即生效,且該 API 的呼叫作業將使用憑證,以在後端伺服器上進行驗證。
提示
當您將憑證指定用於 API 後端服務的閘道驗證時,憑證遂成為該 API 原則的一部分,因此可以在原則編輯器中檢視。
停用自我簽署憑證的憑證鏈結驗證
如果您使用自我簽署憑證,則需要停用信任鏈結驗證,才能使 API 管理與後端系統通訊。 否則將會傳回 500 錯誤碼。 如果要這樣設定,請使用New-AzApiManagementBackend
(適用於新的後端) 或Set-AzApiManagementBackend
(適用於現有的後端) PowerShell Cmdlet,並將-SkipCertificateChainValidation
參數設定為True
。
$context = New-AzApiManagementContext -resourcegroup 'ContosoResourceGroup' -servicename 'ContosoAPIMService'
New-AzApiManagementBackend -Context $context -Url 'https://contoso.com/myapi' -Protocol http -SkipCertificateChainValidation $true
您也可以使用後端 REST API 來停用憑證鏈結驗證。
刪除用戶端憑證
如果要刪除憑證,請選取 [憑證],然後從 [捷徑功能表 (...)] 中選取 [刪除]。
重要
如果該憑證已受任何原則所參考,系統將顯示警告畫面。 若要刪除憑證,您必須先從任何原則中已設定使用該憑證的部分,予以移除。