Questo documento descrive come funziona controllo dell'accesso in Managed Service per Apache Kafka.
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 del servizio Managed Kafka.
L'agente di servizio Kafka gestito è un principal con l'identificatore
service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com,
dove PROJECT_NUMBER è il numero del tuo progetto Google Cloud .
Questo service agent richiede il ruolo IAM Agente di servizio Kafka gestito
(roles/managedkafka.serviceAgent) sul 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 cluster.
Per alcune attività, l'agente di servizio gestito Kafka richiede ruoli aggiuntivi. Ad esempio, se utilizzi Kafka Connect, potresti dover concedere all'agente di servizio l'autorizzazione per accedere a origini e 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 include la chiamata diretta delle 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 dell'accesso 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 quell'attività. Ad esempio, per consentire a un'entità di creare argomenti Kafka, concedi all'entità il ruolo Editor argomenti Kafka gestito.
Controllo dell'accesso 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 certificati client per l'autenticazione.
Dopo la connessione del client, il servizio utilizza gli ACL Kafka per autorizzare le operazioni del client, come 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 e le operazioni in-cluster 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 dell'accesso:
Nega all'entità la permission
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.connect, per 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 nega le operazioni
ALTER,ALTER_CONFIGSeDELETEsugli argomenti. Per esempi specifici, vedi Nega la modifica di tutti gli argomenti.
Controllo dell'accesso a livello di risorsa
Per limitare le autorizzazioni IAM di un principal a risorse Managed Service per Apache Kafka specifiche all'interno di un progetto, come 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 gli aggiornamenti dei 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 per risorsa per cluster. Questa autorizzazione garantisce che il principal possa avviare l'operazione e monitorarne l'avanzamento.
Passaggi successivi
Per saperne di più sui concetti fondamentali di IAM, consulta la panoramica di IAM.
Per scoprire di più sui diversi componenti di una policy IAM, consulta Policy IAM.
Per scoprire come utilizzare gli ACL Kafka per l'accesso ai dati nel cluster, consulta ACL Kafka.