Dopo aver creato una risorsa ACL Managed Service per Apache Kafka, puoi modificarne la configurazione per aggiornare l'elenco delle voci ACL.
L'aggiornamento di una risorsa ACL Managed Service per Apache Kafka può essere eseguito in due modi:
Sostituzione completa: sovrascrive l'intero elenco di voci ACL come descritto in questa pagina.
Aggiornamento incrementale: aggiunge o rimuove una singola voce ACL come documentato nelle pagine Aggiungere una voce ACL e Rimuovere una voce ACL.
Non puoi modificare l'elenco delle voci ACL in modo che sia vuoto utilizzando un'operazione di aggiornamento. Per rimuovere tutte le voci per un pattern di risorse, elimina la risorsa ACL Managed Service per Apache Kafka.
Ruoli e autorizzazioni richiesti
Per ottenere le autorizzazioni
necessarie per aggiornare un ACL Managed Service per Apache Kafka,
chiedi all'amministratore di concederti il
ruolo IAM Managed Kafka ACL Editor (roles/managedkafka.aclEditor)
nel tuo progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per aggiornare un elenco di controllo degli accessi di Managed Service for Apache Kafka. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per aggiornare un elenco di controllo degli accessi (ACL) di Managed Service per Apache Kafka sono necessarie le seguenti autorizzazioni:
-
Concedi questa autorizzazione all'ACL richiesta per l'aggiornamento utilizzando la sostituzione completa (API
UpdateAcl):managedkafka.acls.update -
Concedi questa autorizzazione all'ACL richiesta per l'aggiornamento utilizzando modifiche incrementali (API
AddAclEntryoRemoveAclEntry):managedkafka.acls.updateEntries
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Per maggiori informazioni sul ruolo Editor ACL Kafka gestito, consulta Ruoli predefiniti di Google Cloud Managed Service per Apache Kafka.
La proprietà etag
Il campo etag viene utilizzato per controllo della contemporaneità ottimistico. Un ETag viene restituito
nella risposta alle operazioni GetAcl e CreateAcl. Devi includere
questo etag nella richiesta UpdateAcl per assicurarti che le modifiche vengano applicate alla
stessa versione della risorsa ACL Managed Service per Apache Kafka che hai recuperato.
In questo modo si evitano aggiornamenti persi se la risorsa è stata modificata contemporaneamente.
Un carattere terminale T nell'etag indica che l'elenco delle voci ACL è stato
troncato nella risposta perché ha superato il numero massimo di elementi di campo ripetibili. Esistono altre voci per questo pattern di risorse direttamente nel cluster Kafka, ma non è stato possibile rappresentarle nella risorsa ACL Managed Service per Apache Kafka. Gli aggiornamenti di sostituzione completa non sono supportati per le risorse con voci ACL troncate. In questo scenario, utilizza le API Apache Kafka standard come
kafka-acls.sh o AdminClient per gestire direttamente gli elenchi di controllo degli accessi.
Sostituzione completa delle voci ACL
Puoi utilizzare il metodo API UpdateAcl o il comando
gcloud managed-kafka acls update per eseguire una sostituzione
completa dell'elenco delle voci ACL. L'intero campo acl_entries nella
risorsa viene sovrascritto dall'elenco inviato nella richiesta di aggiornamento.
Per modificare l'elenco utilizzando questo metodo, ad esempio per aggiungere o rimuovere una singola voce ACL mantenendo le altre, segui questi passaggi:
Recupera l'elenco attuale delle voci ACL e l'etag utilizzando il comando describe.
Costruisci il nuovo elenco di voci ACL.
Esegui il comando
gcloud managed-kafka acls updateinsieme all'etag recuperato.
La sezione seguente mostra come utilizzare il comando
gcloud managed-kafka acls update per eseguire una
sostituzione completa dell'elenco delle voci ACL.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init Esegui il comando
gcloud managed-kafka acls updateper sostituire tutte le voci ACL esistenti con quelle specificate:ACL_ID(obbligatorio): l'ID della risorsa ACL Managed Service per Apache Kafka da aggiornare. Per saperne di più sull'ID ACL, consulta la pagina ID ACL.CLUSTER_ID(obbligatorio): l'ID del cluster contenente la risorsa ACL.LOCATION(obbligatorio): la regione in cui si trova il cluster. Per saperne di più sulla regione, consulta Località supportate.ETAG_VALUE(obbligatorio): il valore etag ottenuto da un'operazione di descrizione o creazione precedente per questa risorsa ACL.--acl-entry(obbligatorio): specifica una voce ACL da includere nel nuovo elenco. Puoi ripetere questo flag per includere più voci. L'intero elenco esistente viene sostituito dalle voci specificate nel comando.PRINCIPAL(obbligatorio): il principale per questa voce ACL. Utilizza il formatoUser:{google_service_account_email}o il carattere jollyUser:*.OPERATION_TYPE(obbligatorio): il tipo di operazione per questa voce ACL. I valori consentiti includonoALL,READ,WRITE,CREATE,DELETE,ALTER,DESCRIBE,CLUSTER_ACTION,DESCRIBE_CONFIGS,ALTER_CONFIGSeIDEMPOTENT_WRITE.PERMISSION_TYPE(obbligatorio): il tipo di autorizzazione da aggiornare:ALLOWoDENY.HOST(obbligatorio): l'host client della voce ACL da aggiornare. Per Google Cloud Managed Service per Apache Kafka, questo valore deve essere impostato sul carattere jolly'*'.
gcloud managed-kafka acls update ACL_ID \ --cluster=CLUSTER_ID \ --location=LOCATION \ --etag=ETAG_VALUE \ --acl-entry=principal='PRINCIPAL',operation=OPERATION_TYPE,permission_type=PERMISSION_TYPE,host='*' \
Sostituisci quanto segue:
Esempio di sostituzione completa
Questo comando sostituisce tutte le voci ACL esistenti per il pattern di risorsa topic/orders in test-kafka-cluster che si trova in us-central1 con una singola nuova voce. Questa nuova voce concede l'autorizzazione WRITE al account di servizio
producer-app@test-project.iam.gserviceaccount.com.
Il comando richiede l'etag corrente della risorsa ACL, che in questo esempio è "AYk=Ags=".
gcloud managed-kafka acls update topic/orders \
--cluster=test-kafka-cluster \
--location=us-central1 \
--project=test-project \
--etag='"AYk=Ags="' \
--acl-entry=principal='User:producer-app@test-project.iam.gserviceaccount.com',operation=WRITE,permission_type=ALLOW,host='*'
Se il comando ha esito positivo, l'output mostra la configurazione della risorsa ACL aggiornata, inclusi il nuovo elenco aclEntries e un nuovo etag. Vengono rimosse tutte le voci esistenti in precedenza per questa risorsa ACL.
aclEntries:
- host: '*'
operation: WRITE
permissionType: ALLOW
principal: User:producer-app@test-project.iam.gserviceaccount.com
etag: '"Bcn=Def="' # Note: The etag value changes after a successful update.
name: projects/test-project/locations/us-central1/clusters/my-kafka-cluster/acls/topic/orders
resourcePatternType: TOPIC
Aggiornamento incrementale delle voci ACL
Puoi aggiungere o rimuovere singoli elementi di voci ACL senza sostituire l'intero elenco utilizzando i metodi API AddAclEntry e RemoveAclEntry o i comandi gcloud managed-kafka acls add-acl-entry e gcloud managed-kafka acls remove-acl-entry corrispondenti. Questi metodi
non richiedono un ETag.
L'utilizzo di
AddAclEntryaggiunge una nuova voce ACL alla risorsa ACL Managed Service per Apache Kafka. È analogo alla creazione di un singolo nuovoAclBindingApache Kafka. Per maggiori informazioni, vedi Aggiungere una voce ACL.L'utilizzo di
RemoveAclEntryrimuove una singola voce ACL esistente dalla risorsa ACL Managed Service per Apache Kafka. È analogo all'eliminazione di un singoloAclBindingApache Kafka. Per saperne di più, vedi Rimuovere una voce ACL.