In Managed Service per Apache Kafka, controlli l'accesso ai cluster e agli argomenti Kafka utilizzando una combinazione di autorizzazioni di Identity and Access Management (IAM) ed elenchi di controllo dell'accesso dell'accesso (ACL) Kafka:
Utilizza IAM per concedere le autorizzazioni per l'accesso di gestione e per consentire ai client di connettersi a un cluster quando utilizzano l'autenticazione SASL.
Utilizza gli ACL Kafka per l'accesso ai dati e le operazioni dai client Apache Kafka open source.
Questa pagina fornisce una panoramica di queste opzioni di controllo dell'accesso.
Managed Kafka Service Agent
Managed Service per Apache Kafka utilizza un agente di servizio per accedere alle risorse Google Cloud. Dopo aver abilitato l'API Managed Kafka, viene creato l'agente di servizio Managed Kafka.
L'agente di servizio Managed Kafka è un'entità con l'identificatore
service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com,
dove PROJECT_NUMBER è il numero del tuo progetto Google Cloud .
Questo agente di servizio richiede il ruolo IAM Agente di servizio Managed Kafka (roles/managedkafka.serviceAgent) nel progetto. Questo ruolo viene concesso automaticamente quando abiliti l'API. Se revochi questo ruolo, Managed Service per Apache Kafka non può creare, aggiornare o eliminare i cluster.
Per alcune attività, l'agente di servizio Managed Kafka richiede ruoli aggiuntivi. Ad esempio, se utilizzi Kafka Connect, potresti dover concedere all'agente di servizio l'autorizzazione per accedere alle origini e ai sink, come Pub/Sub o BigQuery.
Controllo dell'accesso per i client
In genere esistono due modi per eseguire operazioni sulle risorse di Managed Service per Apache Kafka:
L'API Managed Kafka. Questa opzione comprende la chiamata diretta alle API REST, nonché l'utilizzo di Google Cloud CLI, della console Google Cloud o delle librerie client.
L'API Apache Kafka open source. Molti client Kafka open source utilizzano questa API.
Controllo degli accessi tramite l'API Managed Kafka
Quando utilizzi l'API Managed Kafka, l'autorizzazione viene eseguita da Identity and Access Management (IAM). Per eseguire un'operazione su una risorsa, l'entità deve disporre delle autorizzazioni API Managed Kafka richieste per l'operazione. La documentazione di ogni attività elenca i ruoli IAM necessari per l'attività. Ad esempio, per consentire a un'entità di creare argomenti Kafka, concedile il ruolo Managed Kafka Topic Editor.
Controllo degli accessi tramite l'API Apache Kafka
I client che utilizzano l'API Apache Kafka si autenticano utilizzando l'autenticazione SASL o mutual TLS (mTLS).
Se un client si connette con SASL, l'entità di autenticazione deve disporre dell'autorizzazione IAM
managedkafka.clusters.connect. Per concedere questa autorizzazione, puoi assegnare il ruolo Managed Kafka Client (roles/managedkafka.client) all'entità.Se un client si connette con mTLS, l'autorizzazione
managedkafka.clusters.connectnon è richiesta. I client utilizzano invece i certificati client per l'autenticazione.
Dopo la connessione del client, il servizio utilizza gli ACL di Kafka per autorizzare le operazioni del client, ad esempio la lettura o la modifica delle risorse.
Controllo dell'accesso combinato
Per una sicurezza completa, devi configurare quanto segue:
Autorizzazioni IAM per l'accesso di gestione.
Autorizzazione IAM per connettersi al cluster, se i client utilizzano SASL.
ACL Kafka per l'accesso ai dati nel cluster e le operazioni dai client Apache Kafka open source, indipendentemente dal metodo di autenticazione.
Ad esempio, supponiamo che tu voglia impedire a un'entità di modificare gli argomenti. Per farlo, devi configurare i seguenti controlli di accesso:
Nega all'entità l'autorizzazione
managedkafka.topics.updateper impedire all'entità di utilizzare l'API Managed Kafka per aggiornare gli argomenti (ad esempio, utilizzando la console Google Cloud ).Facoltativamente, nega all'entità l'autorizzazione
managedkafka.clusters.connectper impedire all'entità di connettersi al cluster con l'autenticazione SASL.Se l'entità ha bisogno dell'accesso SASL per altri motivi o se si connette utilizzando mTLS, crea un'ACL Kafka che neghi le operazioni
ALTER,ALTER_CONFIGSeDELETEsugli argomenti. Per esempi specifici, consulta Nega la modifica di tutti gli argomenti.
Controllo dell'accesso a livello di risorsa
Per limitare le autorizzazioni IAM di un'entità a risorse Managed Service per Apache Kafka specifiche all'interno di un progetto, ad esempio singoli cluster o argomenti, utilizza le condizioni IAM.
L'esempio seguente mostra una condizione IAM che consente l'accesso solo se il tipo di risorsa è managedkafka.googleapis.com/Topic e il nome della risorsa termina con "test-topic":
{
"expression": "resource.name.endsWith(\"topic-1\") &&\nresource.type == \"managedkafka.googleapis.com/Topic\"",
"title": "topic-1",
"description": "Grant access only to topic-1"
}
Alcune richieste di Managed Service per Apache Kafka, come la creazione o l'aggiornamento di cluster,
restituiscono operazioni a lunga esecuzione. Se concedi l'accesso a livello di cluster, includi l'accesso per tutte le risorse di tipo managedkafka.googleapis.com/Operation, oltre alla condizione della risorsa per cluster. Questa autorizzazione garantisce che l'entità possa avviare l'operazione e monitorarne l'avanzamento.
Passaggi successivi
Per saperne di più sui concetti fondamentali di IAM, consulta Panoramica di IAM.
Per scoprire i diversi componenti di una policy IAM, consulta Policy IAM.
Per scoprire come utilizzare le ACL Kafka per l'accesso ai dati all'interno del cluster, consulta ACL Kafka.