本頁說明用戶端應用程式連線至 Google Cloud Managed Service for Apache Kafka 代理程式時,支援的驗證方法。
對於在 Google Kubernetes Engine、Compute Engine、Cloud Run 或 Cloud Run functions 等 Google Cloud 服務上執行的 Google Cloud Managed Service for Apache Kafka 用戶端應用程式,您有下列驗證選項:
SASL/OAUTHBEARER (建議使用):這是 Google Cloud內用戶端最流暢且安全的方法。並使用應用程式預設憑證 (ADC),自動找出與環境相關聯的服務帳戶身分。這樣就不需要管理及發布服務帳戶金鑰等靜態憑證檔案。
SASL/PLAIN:這是早期開發的實用方法。 用戶端會使用長期有效的服務帳戶金鑰進行驗證。
mTLS:如果貴機構的標準是採用憑證驗證,則可選擇這個選項。應用程式已在 Google Cloud 設定用戶端憑證和金鑰。
如果用戶端應用程式在 Google Cloud以外的環境中執行 (例如地端部署資料中心或其他雲端服務供應商),請考慮使用下列驗證方法。根據貴機構的安全狀態和現有身分基礎架構,選擇最合適的方法。
使用 SASL/OAUTHBEARER 的 Workload Identity Federation (建議使用):這是外部用戶端最安全的方法。您可以透過這項功能,授權外部系統 (例如 AWS、Microsoft Azure,或 ADFS 等內部部署身分識別提供者) 的身分,模擬Google Cloud 服務帳戶。用戶端會使用偏好的憑證取得短期 Google Cloud 存取權杖,而非管理長期服務帳戶金鑰。接著,用戶端會使用這個權杖進行驗證,大幅降低與靜態憑證檔案相關的安全性風險。
mTLS:這個方法與供應商無關,如果貴機構已使用公用金鑰基礎架構 (PKI) 管理服務身分識別的 TLS 憑證,就很適合採用這個方法。這項功能可讓用戶端在沒有 Google Cloud特定身分的情況下進行驗證。不過,與使用服務帳戶金鑰類似,這個方法需要您管理長期憑證 (例如用戶端憑證) 的生命週期和發布作業。
使用服務帳戶金鑰的 SASL/PLAIN:這個方法可讓外部用戶端直接以 Google Cloud 身分驗證。您會下載服務帳戶金鑰 JSON 檔案,並在用戶端的 SASL/PLAIN 設定中使用該檔案。一般不建議在正式版工作負載中使用這種方法,因為這需要在用戶端管理及保護長期有效的靜態憑證。
SASL 和 mTLS 的功能比較
Managed Service for Apache Kafka 的主要驗證機制是 SASL (簡單驗證和安全層),可直接與Google Cloud的身分識別服務整合。做為基準,SASL 會使用 Google Cloud IAM 主體 (例如服務帳戶) 驗證用戶端。SASL 提供彈性授權機制:您可以使用精細的 IAM 角色和 Kafka 的存取控制清單 (ACL),管理叢集的存取權。
相較之下,mTLS 提供與供應商無關的驗證方法,不依賴 Google Cloud IAM。mTLS 會根據用戶端的 TLS 憑證驗證用戶端,身分則衍生自憑證的主體名稱。
這項區別導致授權處理方式出現重大差異。 與 SASL 主體不同,mTLS 主體只能使用 Kafka ACL 授權,無法透過 Google Cloud IAM 角色管理。
我們強烈建議為叢集設定 Kafka ACL。如果未設定任何 ACL,Kafka 預設行為會授予所有經過驗證的主體 (無論是使用 SASL 或 mTLS) 叢集的完整存取權。如要進一步瞭解如何設定 Kafka ACL,請參閱「建立 Managed Service for Apache Kafka ACL」。
Managed Service for Apache Kafka 支援 mTLS 驗證,並使用憑證授權單位服務核發的用戶端憑證。如果貴機構使用外部信任根,您可以在 CA 服務中建立從屬 CA,並鏈結至外部 CA,即可整合該信任根。
下表比較了各種驗證方法的功能。
| 功能 | SASL/OAUTHBEARER | SASL/PLAIN | mTLS |
|---|---|---|---|
| 主要身分 | Google Cloud IAM 主體 | Google Cloud IAM 主體 | 憑證主體名稱 |
| 憑證類型 | 應用程式預設憑證 (ADC) 或 OAuth 2.0 權杖 | Base64 編碼的服務帳戶金鑰 | 用戶端憑證和私密金鑰 |
| 授權方法 | Google Cloud IAM 角色或 Kafka ACL | Google Cloud IAM 角色或 Kafka ACL | 僅限 Kafka ACL |
| 用途 | Google Cloud上的用戶端;使用 Workload Identity 聯盟的外部用戶端 | 簡單的用戶端、測試情境或需要使用服務帳戶金鑰的舊版系統。 | 與供應商無關,非常適合地端部署、多雲端或現有 PKI 應用程式。 |
| 用戶端設定 | 使用專用登入處理常式類別 (Java) 或本機驗證伺服器 (非 Java) 的 JAAS 設定 | 使用標準 PlainLoginModule 的 JAAS 設定 (Java) | 金鑰儲存區和信任儲存區屬性 (例如 security.protocol=SSL) |
| 叢集可用性 | 所有叢集 | 所有叢集 | 2025 年 6 月 24 日後建立的叢集 |
選擇 SASL 或 mTLS
驗證方式的選擇取決於貴機構的安全政策和現有基礎架構。在大多數情況下,建議您搭配使用 SASL 和 Google Cloud IAM。
透過 SASL 搭配 Google Cloud IAM 或 Workload Identity Federation,可享有最靈活且整合的驗證和授權體驗。並使用 Google Cloud的身分識別系統做為管理權限的單一可靠資料來源。如要執行下列操作,請選擇這個路徑:
使用熟悉的Google Cloud IAM 角色,集中管理 Kafka 用戶端的權限。
避免在用戶端管理靜態憑證。
啟用來自其他雲端 (例如 AWS、Azure) 的用戶端,或地端身分識別提供者 (例如 Okta 或 ADFS),使用 Workload Identity Federation 進行驗證。這種方法提供安全且與雲端無關的身分識別解決方案,不需要切換至其他驗證通訊協定。
如果貴機構嚴格要求採用憑證驗證,請選擇 mTLS。如果您要遷移現有的內部部署 Kafka 部署作業,且該作業已使用 TLS 憑證進行身分識別,或是公司政策規定所有應用程式都必須使用用戶端憑證,就會有這項需求。雖然 mTLS 提供強大的傳輸層安全防護,但請注意,mTLS 用戶端的授權必須完全透過 Kafka ACL 管理,這與 Google Cloud IAM 無關。
設定 SASL/PLAIN 或 SASL/OAUTHBEARER 的工作流程
如要設定用戶端,透過 SASL 驗證機制搭配 Managed Service for Apache Kafka 使用,請先授予用戶端身分權限,然後根據所選的 SASL 機制設定用戶端應用程式。以下是必要工作流程的總覽。如需設定 SASL 的詳細操作說明,請參閱「設定 SASL 驗證」。
授予 IAM 權限。您必須先將「Managed Kafka Client」(代管 Kafka 用戶端) (
roles/managedkafka.client) 角色授予用戶端用於驗證的服務帳戶。這個角色提供必要的managedkafka.clusters.connect權限,可連線至專案中的 Kafka 叢集。設定 Kafka 用戶端。具體用戶端設定取決於您使用 SASL/OAUTHBEARER 或 SASL/PLAIN 機制。
適用於 SASL/OAUTHBEARER (建議使用):這項機制會使用應用程式預設憑證 ADC。設定方式取決於用戶端的語言:
Java 用戶端:將專用的 Google Cloud 驗證程式庫新增至應用程式的類別路徑。然後設定 Kafka 用戶端屬性,使用提供的
GcpLoginCallbackHandler類別,系統就會自動使用 ADC 處理驗證。GcpLoginCallbackHandler類別與 Kafka 的 OAUTHBEARER 驗證機制搭配使用,專為 Managed Service for Apache Kafka 設計。這個外掛程式會處理從 Google 身分識別提供者取得 JSON Web Token (JWT) 的程序,讓 Kafka 用戶端能使用 ADC 向服務進行驗證。非 Java 用戶端:在用戶端電腦上執行提供的本機驗證伺服器。這個伺服器會使用 ADC 擷取憑證,並提供給 Kafka 用戶端。接著,用戶端會設定為從這個本機伺服器的端點取得驗證權杖。
適用於 SASL/PLAIN
這項機制會使用使用者名稱和密碼組合。用戶端應用程式必須設定為使用 SASL_SSL 安全性通訊協定、PLAIN 機制,以及指定
PlainLoginModule類別的 JAAS 設定。使用者名稱是服務帳戶的電子郵件地址。您可以透過下列兩種方式產生密碼:
將服務帳戶金鑰 JSON 檔案進行 Base64 編碼。
取得短期存取憑證。
設定授權。用戶端使用 SASL 成功完成驗證後,系統會根據叢集上 IAM 角色或 Kafka ACL 中定義的權限控管存取權。
SASL 限制
SASL 驗證方法有下列限制:
SASL 驗證本質上與 IAM 主體相關聯。如果貴機構需要嚴格區分身分,或使用非 Google 身分,則不適合使用這項功能,除非您設定了 Workload Identity Federation。Google Cloud
SASL 不會使用用戶端憑證進行驗證。如果機構依賴現有的 PKI 來識別應用程式,這項功能就不適合。
設定 mTLS 的工作流程
為 Managed Service for Apache Kafka 設定 mTLS 時,需要設定憑證授權單位、Kafka 叢集和 Kafka 用戶端。如需設定 mTLS 的詳細操作說明,請參閱「設定 mTLS 驗證」。
設定憑證授權單位 (CA)。您必須先在憑證授權單位服務 (CA 服務) 中建立及設定 CA 集區。如果您建立的 CA 集區位於其他專案,請務必授予 Managed Service for Apache Kafka 服務代理 (
service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com) 存取這些集區的權限。您必須在 CA 集區內建立根憑證和從屬憑證。設定 Kafka 叢集。建立或更新叢集,並提供已設定 CA 集區的資源 ID,即可啟用 mTLS。我們也建議設定
ssl.principal.mapping.rules代理程式屬性,建立簡化的主體名稱,以供 ACL 使用。您可以使用 Google Cloud CLI 指令執行這項操作。設定 Kafka 用戶端。從 CA 取得用戶端憑證,並安裝在用戶端環境中,例如 Java 金鑰儲存區。接著,用戶端應用程式必須設定正確的安全防護通訊協定 (SSL) 和金鑰存放區位置,才能連線至叢集的專屬 mTLS 啟動通訊埠 (
9192)。監控 mTLS。設定完成後,請監控
managedkafka.googleapis.com/mtls_truststore_update_count指標,確認叢集是否定期從 CA 服務集區重新整理 CA 憑證。您也可以使用 Cloud Logging。
mTLS 限制
mTLS 功能有下列限制:
您只能在 2025 年 6 月 24 日後建立的 Managed Service for Apache Kafka 叢集上使用 mTLS 功能。
您必須使用 Kafka ACL 設定 mTLS 主體的授權。 您無法使用 IAM 角色繫結授權 mTLS 用戶端。
服務只會驗證提供 CA 服務所管理憑證的用戶端。不過,您可以在 CA 服務中建立從屬 CA,並鏈結至外部 CA,藉此整合外部信任根。
您可以設定叢集,最多信任 10 個 CA 集區。