關於應用程式負載平衡器的 TLS 雙向驗證
雙向傳輸層安全性 ( mTLS ) 驗證可透過在客戶端與負載平衡器之間,以及負載平衡器與後端伺服器之間啟用基於憑證的驗證,為您的 IBM Cloud® 應用程式負載平衡器 (ALB) 提供更強化的安全性。
什麼是互惠 TLS?
mTLS 這是標準 TLS 協定的延伸,要求連線中的雙方必須使用數位憑證相互進行身分驗證。 雖然標準的「TLS」僅要求伺服器向客戶端出示憑證,但「mTLS」則要求客戶端與伺服器雙方皆須出示憑證,從而建立一種雙向驗證機制。
透過 mTLS 對 ALB 的支援,您可以在兩個層級上實作基於憑證的驗證:
- 前端驗證
- 要求客戶端在連線至負載平衡器監聽器時出示有效的憑證,藉此驗證客戶端身分。
- 後端驗證
- 透過出示客戶端憑證,讓負載平衡器向後端伺服器進行身份驗證,並可選擇性地驗證後端伺服器的憑證。
重要優點
ALB mTLS 支援提供以下功能:
- 在監聽器端驗證客戶端憑證
- 透過設定憑證授權機構 (CA) 憑證來驗證客戶端憑證,藉此在負載平衡器前端啟用客戶端驗證。 驗證機制可確保僅有持有由受信憑證授權機構簽署之有效憑證的客戶端,才能建立連線。
- 支援憑證撤銷清單 (CRL)
- 上傳一份 CRL 以檢查客戶端憑證是否已被撤銷,透過拒絕受損或已過期的憑證,提供額外的安全防護層。
- 後端伺服器憑證驗證
- 在 TLS 握手過程中驗證後端伺服器憑證,以確保負載平衡器僅連線至可信賴的後端伺服器。 驗證有助於防止中間人攻擊。
- 後端客戶端驗證
- 當後端基礎架構需要 mTLS 時,將來自負載平衡器的客戶端憑證提交給後端伺服器,以實現安全的雙向驗證。
使用案例
mTLS 在需要加強安全性與身分驗證的情境下,身分驗證具有重要價值:
- 零信任安全架構
- 透過要求所有連線均須進行基於憑證的驗證,以落實零信任原則,確保在建立通訊前,每個客戶端與伺服器均已通過驗證。
- API 安全
- 透過要求客戶端出示有效憑證來保護 API 端點,防止未經授權的存取敏感 API,並確保僅有經過身份驗證的應用程式才能使用您的服務。
- 微服務通訊
- 透過在前端和後端皆實作 mTLS,確保微服務之間的通訊安全,並確保所有服務間的通訊均經過驗證與加密。
- 合規要求
- 符合監管合規要求,這些要求規定必須採用強認證機制,例如金融服務、醫療保健或政府部門所規定的要求。
- 後端伺服器驗證
- 透過驗證憑證,確保您的負載平衡器僅連線至合法的後端伺服器,藉此防範惡意或遭入侵的後端執行個體。
mTLS 如何與應用程式負載平衡器協同運作
ALB 支援在「客戶端至負載平衡器」及「負載平衡器至伺服器」兩種連線情境下,皆採用 mTLS。 以下工作流程說明在每次 TLS 連線建立過程中,憑證驗證是如何進行的。
前端 mTLS (監聽器層級)
當您在聆聽器層級啟用客戶端驗證( mTLS )時:
- 客戶端向負載平衡器建立 HTTPS 連線。
- 負載平衡器會向客戶端出示其伺服器憑證。
- 負載平衡器會向客戶端索取客戶端憑證。
- 客戶端向負載平衡器出示其憑證。
- 負載平衡器會根據已設定的 CA 憑證,驗證客戶端憑證。
- 若已設定 CRL,負載平衡器會檢查該憑證是否已被撤銷。
- 若驗證成功,則建立連線。 否則,該連線將被拒絕。
後端 mTLS (池層級)
當您在彙總層級啟用伺服器驗證或客戶端憑證出示時:
- 負載平衡器會向後端伺服器建立連線。
- 後端伺服器會向負載平衡器出示其憑證。
- 若已啟用伺服器驗證,負載平衡器會根據已設定的 CA 憑證,對後端伺服器的憑證進行驗證。
- 如果後端伺服器要求進行客戶端驗證,負載平衡器便會出示其客戶端憑證。
- 後端伺服器會驗證客戶端憑證。
- 若驗證成功,則會建立連線,流量便會傳送至後端伺服器。
支援憑證撤銷清單 (CRL)
CRL 是一份由憑證授權機構(CA)在憑證到期日前撤銷的憑證清單。 憑證可能會因各種原因而被撤銷,包括:
- 私鑰已遭洩露
- 該證書的簽發有誤
- 憑證持有人的權限已變更
- 該證書已不再需要
當您為監聽器設定 CRL 時,負載平衡器會在「TLS」握手過程中,將每個客戶端憑證與撤銷清單進行比對。 如果某張憑證出現在 CRL 中,即使該憑證在其他方面均屬有效且簽署無誤,連線仍會被拒絕。
CRL 支援透過確保遭入侵或失效的憑證無法用於存取您的服務,即使這些憑證尚未過期,也能提供額外的安全防護層。
必要條件
在為您的 ALB 設定「mTLS」之前,請確保您符合以下要求:
- 您擁有一台 ALB,其設定檔支援 mTLS。 請檢查負載平衡器設定檔中的「
mtls_supported」屬性。 - 您的監聽器使用 HTTPS 協定。mTLS 僅適用於 HTTPS 監聽器。
- 您在 Secrets Manager 目錄中儲存了符合 PEM 格式的有效憑證。
- 您擁有適當的 IAM 權限,可管理 Secrets Manager 中的負載平衡器及存取憑證。
憑證需求
所有用於 mTLS 的憑證均須符合以下要求:
- 憑證必須採用 PEM 格式。
- 證書必須儲存於 Secrets Manager,並透過其 CRN 進行引用。
- 用於驗證的 CA 憑證必須包含完整的憑證鏈(根憑證和中間憑證)。
- 由負載平衡器向後端伺服器出示的客戶端憑證,必須包含私密金鑰。
- 憑證必須有效(未過期),並由受信任的憑證授權機構(CA)正確簽署。
重要考量
在實作時,請謹記以下幾點考量:mTLS:
- 憑證管理責任
- 您負責管理所有憑證,包括取得、上傳、續期及撤銷憑證。IBM Cloud 不會自動管理或續期憑證。
- 憑證驗證
- 您必須確認憑證是否已由預期的憑證授權機構正確簽署,且信任關係是否已正確建立。 若憑證無效或不匹配,將導致 TLS 建立連線失敗,並造成服務無法使用。
- 後端伺服器驗證
- 為維持向後相容性,後端伺服器驗證預設為停用狀態。 啟用此功能後,您必須透過上傳適當的 CA 憑證,以確保負載平衡器與後端伺服器之間存在有效的信任關係。
- 泳池層級設定
- 後端伺服器驗證與客戶端驗證皆在池層級進行設定。 同一叢集內的所有後端伺服器均使用相同的設定。 若您需要針對不同的後端伺服器設定不同的憑證政策,請建立獨立的憑證池。
- 證書更新
- 憑證的更新或撤銷,可能需要重新載入負載平衡服務才能生效。 請在維護時段內安排憑證更新,以將服務中斷降至最低。
- 多個憑證授權機構
- 當同一叢集中的後端伺服器由不同的憑證授權機構 (CA) 簽署時,您可以提供一個捆綁的 CA 檔案,其中包含所有相關的根憑證和中間憑證。 若所有後端伺服器的憑證鏈皆指向憑證集中的任何憑證授權機構(CA),則這些伺服器均被視為可信。