Controllo dell'accesso con IAM

Questo documento descrive come utilizzare Google Cloud Identity and Access Management (IAM) per controllo dell'accesso in Google Cloud Managed Service per Apache Kafka.

IAM controlla l'accesso a livello di risorsa: Google Cloud

  • I controlli IAM determinano chi può gestire le risorse Managed Service per Apache Kafka, come cluster, argomenti o ACL, utilizzando API e strumenti. Google Cloud Alcuni esempi di questi strumenti sono la consoleGoogle Cloud , gcloud CLI o le librerie client.

  • Questi controlli determinano anche chi ha l'autorizzazione a connettersi inizialmente al cluster Managed Service per Apache Kafka quando si utilizzano client Apache Kafka standard.

Per saperne di più su IAM, consulta la documentazione di IAM.

Panoramica di IAM

IAM ti consente di concedere un accesso granulare a determinate risorseGoogle Cloud e impedisce l'accesso indesiderato ad altre risorse. IAM ti consente di adottare il principio di sicurezza del privilegio minimo, in base al quale concedi solo l'accesso necessario alle tue risorse.

IAM ti consente di controllare chi (soggetti) ha quale accesso (ruoli) a quali risorse.

Entità

Un'entità può essere un Account Google (per gli utenti finali), un account di servizio (per app e macchine virtuali), un gruppo Google o un dominio Google Workspace o Cloud Identity che può accedere a una risorsa.

Per saperne di più, consulta Panoramica di IAM: entità.

Un principal speciale: l'agente di servizio gestito Kafka

Google Cloud Managed Service per Apache Kafka utilizza un account di servizio gestito noto come agente di servizio per accedere alle tue risorse. Google Cloud Se hai abilitato l'API, l'agente di servizio è già stato creato. Il service agent è identificabile dal suo indirizzo email: service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com.

Il service agent Managed Service per Apache Kafka richiede il ruolo Managed Kafka Service Agent (roles/managedkafka.serviceAgent) nel progetto per gestire le risorse Managed Service per Apache Kafka. Questo ruolo viene concesso automaticamente quando attivi l'API. Se revochi questo ruolo, Managed Service per Apache Kafka non è in grado di creare, aggiornare o eliminare cluster.

Risorsa

Esempi di risorse a cui puoi concedere l'accesso in Managed Service per Apache Kafka sono progetti, cluster, argomenti e gruppi di consumatori.

Alcuni metodi API richiedono autorizzazioni per più risorse. Ad esempio, l'attività Crea cluster di connessione richiede l'autorizzazione managedkafka.connectClusters.create nella località padre della risorsa del cluster di connessione e l'autorizzazione managedkafka.clusters.attachConnectCluster nella risorsa del cluster.

Ruolo

Un ruolo è una raccolta di autorizzazioni. Le autorizzazioni determinano quali operazioni sono consentite su una risorsa. Se concedi un ruolo a un'entità, concedi tutte le autorizzazioni incluse nel ruolo.

Puoi concedere uno o più ruoli a un'entità.

Analogamente ad altri Google Cloud prodotti, Managed Service per Apache Kafka supporta tre tipi di ruoli:

  • Ruoli di base:ruoli altamente permissivi esistenti prima dell'introduzione di IAM. Per saperne di più sui ruoli di base, consulta la sezione Ruoli di base.

  • Ruoli predefiniti:consentono l'accesso granulare a risorse Google Cloudspecifiche. Per saperne di più sui ruoli predefiniti, consulta Ruoli predefiniti. I ruoli predefiniti di Managed Service per Apache Kafka sono inclusi in una parte successiva di questa sezione.

  • Ruoli personalizzati:ti aiutano ad applicare il principio del privilegio minimo. Per ulteriori informazioni sui ruoli personalizzati, vedi Ruoli personalizzati.

Ad esempio, il ruolo predefinito Visualizzatore Kafka gestito (roles/managedkafka.viewer) fornisce l'accesso in sola lettura alle risorse di Managed Service per Apache Kafka. Un principal con questo ruolo può visualizzare cluster, argomenti e gruppi di consumatori, ma non può crearli, aggiornarli o eliminarli.

Per saperne di più sull'assegnazione dei ruoli, consulta la documentazione relativa a Concessione, modifica e revoca dell'accesso.

Per determinare le autorizzazioni necessarie per un'attività specifica, consulta la pagina di riferimento Ruoli e autorizzazioni di Managed Service per Apache Kafka.

Come funziona controllo dell'accesso

L'autorizzazione per l'accesso a Managed Service per Apache Kafka tramite Google Cloud API è gestita da IAM. L'autorizzazione per l'accesso da client Apache Kafka open source che utilizzano l'autenticazione SASL viene controllata da IAM.

  • Quando un client si connette utilizzando SASL, IAM verifica innanzitutto se l'entità dispone dell'autorizzazione managedkafka.clusters.connect. Se questo controllo non viene superato, la connessione viene rifiutata.

  • Quando un client si connette utilizzando mTLS, questo controllo iniziale delle autorizzazioni IAM viene ignorato e l'autorizzazione viene gestita esclusivamente dagli ACL Kafka.

Per una sicurezza completa, devi configurare quanto segue:

  • Autorizzazioni IAM per l'accesso di gestione.

  • Autorizzazioni IAM per l'accesso alla connessione se utilizzi SASL.

  • ACL Kafka per l'accesso ai dati e le operazioni nel cluster da client Apache Kafka open source, indipendentemente dal metodo di autenticazione.

Ad esempio, supponi di voler impedire a un'entità di modificare gli argomenti. Puoi farlo in due modi:

  • Completamente tramite IAM. Nega all'entità sia il ruolo Editor argomenti Kafka gestito (roles/managedkafka.topicEditor) sia il ruolo Client Kafka gestito (roles/managedkafka.client). Questa configurazione limita completamente la modifica degli argomenti tramite le Google Cloud API e impedisce qualsiasi accesso all'API Kafka utilizzando SASL. Questa configurazione non impedisce le connessioni che utilizzano mTLS.

  • Utilizzo degli ACL Kafka insieme a IAM. Questo metodo è necessario se l'entità utilizza mTLS o ha bisogno dell'accesso SASL per altre operazioni. Limita le seguenti operazioni utilizzando gli ACL Kafka:

    • Crea (per la creazione di argomenti) a livello di cluster.

    • Alter, AlterConfigs, Delete (per la modifica e l'eliminazione di argomenti) a livello di argomento.

Puoi scegliere il metodo appropriato in base alla necessità dell'entità di accedere alle API Kafka e al metodo di autenticazione utilizzato.

Imposta controllo dell'accesso a livello di progetto

Per impostare i controlli dell'accesso a livello di progetto, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Imposta controllo dell'accesso a livello di risorsa

Alcune richieste di Managed Service per Apache Kafka, come la creazione o gli aggiornamenti dei cluster, sono operazioni a lunga esecuzione. Per consentire a un'entità di eseguire queste azioni, concedile l'accesso alle risorse managedkafka.googleapis.com/Operation oltre alla risorsa cluster specifica.

Questa configurazione garantisce che il principal possa sia avviare l'operazione sia monitorarne l'avanzamento.

Di seguito è riportato un esempio di condizione IAM impostata su un argomento denominato "test-topic":

{'expression': 'resource.name.endsWith('test-topic') 'title': 'SampleIAMCondition'}`.

Questo esempio mostra una condizione IAM che verifica se il nome di una risorsa termina con test-topic. In questo caso, la condizione è true. Questa condizione specifica è denominata SampleIAMCondition e può essere utilizzata in una policy IAM per limitare l'accesso solo a questo argomento specifico.

Alcune richieste di Managed Service per Apache Kafka, come la creazione o gli aggiornamenti del cluster, restituiscono operazioni a lunga esecuzione. Per concedere l'accesso a livello di cluster, includi l'accesso per tutte le risorse di tipo managedkafka.googleapis.com/Operation oltre alla condizione di risorsa per cluster. Questo processo garantisce che il principal possa avviare l'operazione e monitorarne l'avanzamento.

Controllo dell'accesso tra progetti

Per autorizzare un client in un progetto diverso ad accedere a un cluster, concedi il ruolo Client Kafka gestito (roles/managedkafka.client) al account di servizio del client nel progetto del cluster.

Ad esempio, se vuoi consentire a una VM Compute Engine in project-B di accedere a un cluster in project-A, in project-A, concedi il ruolo Client Kafka gestito (roles/managedkafka.client) al account di servizio della VM Compute Engine in project-B.

Passaggi successivi

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