本文說明 Managed Service for Apache Kafka 的存取控管機制。
代管型 Kafka 服務代理
Managed Service for Apache Kafka 會使用服務代理存取 Google Cloud資源。啟用 Managed Kafka API 後,系統會建立 Managed Kafka 服務代理。
代管型 Kafka 服務代理是主體,識別碼為 service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com,其中 PROJECT_NUMBER 是您的專案號碼。 Google Cloud
這項服務代理需要專案的代管 Kafka 服務代理 (roles/managedkafka.serviceAgent) IAM 角色。啟用 API 時,系統會自動授予這個角色。如果撤銷這個角色,Managed Service for Apache Kafka 就無法建立、更新或刪除叢集。
執行部分工作時,代管 Kafka 服務代理需要其他角色。舉例來說,如果您使用 Kafka Connect,可能需要授予服務代理存取來源和接收端的權限,例如 Pub/Sub 或 BigQuery。
用戶端的存取控管
一般來說,對 Managed Service for Apache Kafka 資源執行作業的方式有兩種:
Managed Kafka API。這個選項包含直接呼叫 REST API,以及使用 Google Cloud CLI、 Google Cloud 控制台或用戶端程式庫。
開放原始碼的 Apache Kafka API。許多開放原始碼的 Kafka 用戶端都會使用這個 API。
使用 Managed Kafka API 控管存取權
使用 Managed Kafka API 時,授權作業由 Identity and Access Management (IAM) 執行。如要對資源執行作業,主體必須具備該作業所需的 Managed Kafka API 權限。每項工作的說明文件都會列出該工作所需的 IAM 角色。舉例來說,如要允許主體建立 Kafka 主題,請將Managed Kafka 主題編輯者角色授予該主體。
使用 Apache Kafka API 進行存取控管
使用 Apache Kafka API 的用戶端會透過 SASL 或相互傳輸層安全標準 (mTLS) 驗證機制進行驗證。
如果用戶端透過 SASL 連線,驗證主體需要
managedkafka.clusters.connectIAM 權限。如要授予這項權限,請將「代管 Kafka 用戶端」(roles/managedkafka.client) 角色授予主體。如果用戶端透過 mTLS 連線,則
managedkafka.clusters.connect權限為選用。用戶端會改用用戶端憑證進行驗證。
用戶端連線後,服務會使用 Kafka ACL 授權用戶端執行作業,例如讀取或變更資源。
合併存取控管
如要全面提升安全性,請設定下列項目:
管理存取權的 IAM 權限。
如果用戶端使用 SASL,則需要連線至叢集的 IAM 權限。
Kafka ACL,可透過開放原始碼 Apache Kafka 用戶端存取叢集內資料和執行作業,不受驗證方法限制。
舉例來說,假設您要禁止主體編輯主題,請設定下列存取權控管:
拒絕主體的
managedkafka.topics.update權限,防止主體使用 Managed Kafka API 更新主題 (例如使用 Google Cloud 控制台)。您可以選擇拒絕主體的
managedkafka.clusters.connect權限,防止主體透過 SASL 驗證連線至叢集。如果主體因其他原因需要 SASL 存取權,或主體使用 mTLS 連線,請建立 Kafka ACL,拒絕對主題執行
ALTER、ALTER_CONFIGS和DELETE作業。如需具體範例,請參閱拒絕修改所有主題。
資源層級存取控管
如要將主體的 IAM 權限限制為專案中的特定 Managed Service for Apache Kafka 資源 (例如個別叢集或主題),請使用 IAM 條件。
下列範例顯示 IAM 條件,只有在資源類型為 managedkafka.googleapis.com/Topic 且資源名稱結尾為 "test-topic" 時,才允許存取:
{
"expression": "resource.name.endsWith(\"topic-1\") &&\nresource.type == \"managedkafka.googleapis.com/Topic\"",
"title": "topic-1",
"description": "Grant access only to topic-1"
}
部分 Managed Service for Apache Kafka 要求 (例如叢集建立或更新) 會傳回長時間執行的作業。如果您在叢集層級授予存取權,除了每個叢集資源的條件外,也請一併納入 managedkafka.googleapis.com/Operation 類型所有資源的存取權。這項權限可確保主體能啟動作業並監控進度。
後續步驟
如要進一步瞭解 IAM 的基本概念,請參閱「身分與存取權管理總覽」。
如要瞭解 IAM 政策的不同元件,請參閱「IAM 政策」。
如要瞭解如何使用 Kafka ACL 存取叢集內資料,請參閱「Kafka ACL」。