Controllo dell'accesso per Managed Service per Apache Kafka

Questo documento descrive il funzionamento 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 Google Cloud risorse. Dopo aver abilitato l'API Managed Kafka, viene creato Managed Kafka Service Agent.

Managed Kafka Service Agent è un'entità con l'identificatore service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com, dove PROJECT_NUMBER è il numero del tuo Google Cloud progetto.

Questo agente di servizio richiede il ruolo IAM Managed Kafka Service Agent (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 cluster.

Per alcune attività, Managed Kafka Service Agent richiede ruoli aggiuntivi. Ad esempio, se utilizzi Kafka Connect, potresti dover concedere all'agente di servizio l'autorizzazione ad accedere a origini e sink, come Pub/Sub o BigQuery.

Controllo degli accessi per i client

In genere, esistono due modi per eseguire operazioni sulle risorse 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 Google Cloud console 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 dell'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, concedi all'entità il ruolo Managed Kafka Topic Editor.

Controllo degli accessi tramite l'API Apache Kafka

I client che utilizzano l'API Apache Kafka eseguono l'autenticazione tramite SASL o mutual TLS (mTLS) autenticazione.

  • Se un client si connette con SASL, l'entità di autenticazione necessita dell'autorizzazione IAM managedkafka.clusters.connect. Per concedere questa autorizzazione, puoi concedere all'entità il ruolo Managed Kafka Client (roles/managedkafka.client).

  • Se un client si connette con mTLS, l'autorizzazione managedkafka.clusters.connect non è obbligatoria. I client utilizzano invece i certificati client per l'autenticazione.

Dopo che il client si è connesso, il servizio utilizza le 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 da 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 degli accessi:

  • Nega all'entità l'autorizzazione managedkafka.topics.update per impedirle di utilizzare l'API Managed Kafka per aggiornare gli argomenti (ad esempio utilizzando la Google Cloud console).

  • Facoltativamente, nega all'entità l'autorizzazione managedkafka.clusters.connect per impedirle 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_CONFIGS, e DELETE sugli 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, 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 a 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

Apache Kafka® è un marchio registrato di The Apache Software Foundation o delle sue affiliate negli Stati Uniti e/o in altri paesi.