Managed Kafka-ACL aktualisieren

Nachdem Sie eine ACL-Ressource für Managed Service for Apache Kafka erstellt haben, können Sie ihre Konfiguration bearbeiten, um die Liste der ACL-Einträge zu aktualisieren.

Eine ACL-Ressource von Managed Service for Apache Kafka kann auf zwei Arten aktualisiert werden:

  • Vollständiger Ersatz: Die gesamte Liste der ACL-Einträge wird überschrieben, wie auf dieser Seite beschrieben.

  • Inkrementelles Update: Fügt einen einzelnen ACL-Eintrag hinzu oder entfernt ihn, wie auf den Seiten ACL-Eintrag hinzufügen und ACL-Eintrag entfernen beschrieben.

Sie können die Liste der ACL-Einträge nicht mit einem Update-Vorgang leeren. Wenn Sie alle Einträge für ein Ressourcenmuster entfernen möchten, löschen Sie stattdessen die Managed Service for Apache Kafka-ACL-Ressource.

Erforderliche Rollen und Berechtigungen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Managed Kafka ACL Editor (roles/managedkafka.aclEditor) für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Aktualisieren einer ACL für Managed Service for Apache Kafka benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Aktualisieren einer ACL für Managed Service for Apache Kafka erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um eine ACL für Managed Service for Apache Kafka zu aktualisieren:

  • Gewähren Sie diese Berechtigung für die angeforderte ACL, die durch vollständigen Ersatz aktualisiert werden soll (UpdateAcl API): managedkafka.acls.update
  • Gewähren Sie diese Berechtigung für die angeforderte ACL, die mit inkrementellen Änderungen aktualisiert werden soll (AddAclEntry- oder RemoveAclEntry-API): managedkafka.acls.updateEntries

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Weitere Informationen zur Rolle Managed Kafka ACL Editor finden Sie unter Vordefinierte Rollen für Google Cloud Managed Service for Apache Kafka.

Das Attribut „etag“

Das Feld etag wird für die optimistische Nebenläufigkeitserkennung verwendet. Ein ETag wird in der Antwort auf die Vorgänge GetAcl und CreateAcl zurückgegeben. Sie müssen dieses ETag in die UpdateAcl-Anfrage einfügen, damit Ihre Änderungen auf dieselbe Version der ACL-Ressource von Managed Service for Apache Kafka angewendet werden, die Sie abgerufen haben. So werden Aktualisierungen nicht verloren, wenn die Ressource gleichzeitig geändert wurde.

Ein abschließendes T-Zeichen in der ETag gibt an, dass die Liste der ACL-Einträge in der Antwort gekürzt wurde, weil sie die maximale Anzahl wiederholbarer Feld-Elemente überschritten hat. Für dieses Ressourcenmuster sind direkt im Kafka-Cluster weitere Einträge vorhanden, die in der Managed Service for Apache Kafka-ACL-Ressource nicht dargestellt werden konnten. Vollständige Ersetzungsaktualisierungen werden für Ressourcen mit gekürzten ACL-Einträgen nicht unterstützt. Verwenden Sie in diesem Szenario Standard-Apache Kafka-APIs wie kafka-acls.sh oder AdminClient, um die ACLs direkt zu verwalten.

Vollständiger Ersatz von ACL-Einträgen

Sie können die API-Methode UpdateAcl oder den Befehl gcloud managed-kafka acls update verwenden, um die Liste der ACL-Einträge vollständig zu ersetzen. Das gesamte Feld acl_entries in der Ressource wird durch die in der Aktualisierungsanfrage gesendete Liste überschrieben.

Wenn Sie die Liste mit dieser Methode ändern möchten, z. B. um einen einzelnen ACL-Eintrag hinzuzufügen oder zu entfernen, während andere beibehalten werden, gehen Sie so vor:

  1. Rufen Sie die aktuelle Liste der ACL-Einträge und das ETag mit dem Befehl „describe“ ab.

  2. Erstellen Sie die neue Liste der ACL-Einträge.

  3. Führen Sie den Befehl gcloud managed-kafka acls update mit dem abgerufenen ETag aus.

Im folgenden Abschnitt wird gezeigt, wie Sie mit dem Befehl gcloud managed-kafka acls update die Liste der ACL-Einträge vollständig ersetzen.

  1. Install the Google Cloud CLI.

  2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Führen Sie den Befehl gcloud managed-kafka acls update aus, um alle vorhandenen ACL-Einträge durch die angegebenen zu ersetzen:

  5. 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='*' \

    Ersetzen Sie Folgendes:

    • ACL_ID (erforderlich): Die ID der Managed Service for Apache Kafka-ACL-Ressource, die aktualisiert werden soll. Weitere Informationen zur ACL-ID finden Sie unter ACL-ID.
    • CLUSTER_ID (erforderlich): Die ID des Clusters, der die ACL-Ressource enthält.
    • LOCATION (erforderlich): Die Region, in der sich der Cluster befindet. Weitere Informationen zur Region finden Sie unter Unterstützte Standorte.
    • ETAG_VALUE (erforderlich): Der ETag-Wert, der aus einem vorherigen Vorgang zum Beschreiben oder Erstellen für diese ACL-Ressource abgerufen wurde.
    • --acl-entry (erforderlich): Gibt einen ACL-Eintrag an, der in die neue Liste aufgenommen werden soll. Sie können dieses Flag wiederholen, um mehrere Einträge einzuschließen. Die gesamte vorhandene Liste wird durch die im Befehl angegebenen Einträge ersetzt.
      • PRINCIPAL (erforderlich): Der Prinzipal für diesen ACL-Eintrag. Verwenden Sie das Format User:{google_service_account_email} oder das Platzhalterzeichen User:*.
      • OPERATION_TYPE (erforderlich): Der Vorgangstyp für diesen ACL-Eintrag. Zulässige Werte sind ALL, READ, WRITE, CREATE, DELETE, ALTER, DESCRIBE, CLUSTER_ACTION, DESCRIBE_CONFIGS, ALTER_CONFIGS und IDEMPOTENT_WRITE.
      • PERMISSION_TYPE (erforderlich): Der Typ der Berechtigung, die aktualisiert werden soll: ALLOW oder DENY.
      • HOST (erforderlich): Der Client-Host des ACL-Eintrags, der aktualisiert werden soll. Für Google Cloud Managed Service for Apache Kafka muss dieser Wert auf das Platzhalterzeichen '*' gesetzt werden.

Beispiel für vollständigen Ersatz

Mit diesem Befehl werden alle vorhandenen ACL-Einträge für das topic/orders-Ressourcenmuster in test-kafka-cluster, das sich in us-central1 befindet, durch einen einzelnen neuen Eintrag ersetzt. Dieser neue Eintrag gewährt dem Dienstkonto producer-app@test-project.iam.gserviceaccount.com die Berechtigung WRITE. Für den Befehl ist die aktuelle etag der ACL-Ressource erforderlich, die in diesem Beispiel "AYk=Ags=" ist.

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='*'

Wenn der Befehl erfolgreich ausgeführt wurde, wird in der Ausgabe die aktualisierte ACL-Ressourcenkonfiguration angezeigt, einschließlich der neuen aclEntries-Liste und einer neuen etag. Alle zuvor vorhandenen Einträge für diese ACL-Ressource werden entfernt.

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

Inkrementelles Aktualisieren von ACL-Einträgen

Sie können einzelne ACL-Einträge hinzufügen oder entfernen, ohne die gesamte Liste zu ersetzen. Verwenden Sie dazu die API-Methoden AddAclEntry und RemoveAclEntry oder die entsprechenden Befehle gcloud managed-kafka acls add-acl-entry und gcloud managed-kafka acls remove-acl-entry. Für diese Methoden ist kein ETag erforderlich.

  • Mit AddAclEntry wird der ACL-Ressource von Managed Service for Apache Kafka ein einzelner neuer ACL-Eintrag hinzugefügt. Dies entspricht dem Erstellen eines einzelnen neuen Apache Kafka-AclBinding. Weitere Informationen finden Sie unter ACL-Eintrag hinzufügen.

  • Mit RemoveAclEntry wird ein einzelner vorhandener ACL-Eintrag aus der ACL-Ressource von Managed Service for Apache Kafka entfernt. Dies entspricht dem Löschen eines einzelnen Apache Kafka-AclBinding. Weitere Informationen finden Sie unter ACL-Eintrag entfernen.

Nächste Schritte

Apache Kafka® ist eine eingetragene Marke der Apache Software Foundation oder deren Tochtergesellschaften in den USA und/oder anderen Ländern.