Wie kann ich allgemeine Probleme bei der Verwendung meines Amazon MSK-Clusters mit SASL/SCRAM-Authentifizierung beheben?

Lesedauer: 2 Minute
0

Ich habe Probleme mit meinem Amazon Managed Streaming for Apache Kafka (Amazon MSK)-Cluster mit aktivierter SASL/SCRAM-Authentifizierung.

Auflösung

Sie erhalten den Fehler ClusterAuthorizationException in den Broker-Protokollen

Möglicherweise sehen Sie die folgende Fehlermeldung, wenn Sie auf Ihren Amazon MSK-Cluster zugreifen:

org.apache.kafka.common.errors.ClusterAuthorizationException: Request Request(processor=11, connectionId=INTERNAL_IP-INTERNAL_IP-0, session=Session(User:ANONYMOUS,/INTERNAL_IP), listenerName=ListenerName(REPLICATION_SECURE), securityProtocol=SSL, buffer=null) is not authorized.

Dieser Fehler tritt auf, wenn beide der folgenden Bedingungen erfüllt sind:

  • In Ihrem Amazon MSK-Cluster ist die Authentifizierung mit Simple Authentication and Security Layer (SASL)/Salted Challenge Response Mechanism (SCRAM) aktiviert.
  • Sie habenresourceType=CLUSTER undoperation=CLUSTER_ACTION in den Zugriffskontrolllisten (ACLs) für Ihren Cluster festgelegt

Der Amazon MSK-Cluster unterstützt diese Einstellung nicht, da diese Einstellung die interne Apache Kafka-Replikation verhindert. Bei dieser Einstellung erscheint die Identität der Broker als ANONYMOUS für die Kommunikation zwischen den Brokern. Wenn Ihr Cluster diese ACLs bei Verwendung der SASL/SCRAM-Authentifizierung unterstützen soll, müssen Sie dem Benutzer ANONYMOUS die Berechtigungen für ALLE Operationen erteilen. Dadurch wird die Einschränkung der Replikation zwischen den Brokern verhindert. Verwenden Sie den folgenden Befehl, um dem Benutzer ANONYMOUS diese Berechtigung zu erteilen:

./kafka-acls.sh --authorizer-properties
zookeeper.connect=example-ZookeeperConnectString --add --allow-principal
User:ANONYMOUS --operation ALL --cluster

Sie haben den Benutzernamen und/oder das Passwort für Ihr AWS Secrets Manager-Geheimnis geändert, aber die alten Anmeldeinformationen sind noch aktiv

Ein AWS Secrets Manager-Geheimnis muss mit einem einzigen Benutzer verknüpft sein. Wenn der Benutzer keinen Zugang mehr zum Cluster benötigt, muss das Geheimnis getrennt und die ACLs müssen aktualisiert werden. Wenn Sie den Benutzernamen auf dem Geheimnis aktualisieren, wird der alte Benutzername nicht automatisch entfernt. Daher ist es eine bewährte Methode, ein neues Geheimnis für den neuen Benutzer zu erstellen. Wenn Sie das alte Geheimnis verwenden müssen, heben Sie es zunächst auf und aktualisieren Sie dann die Anmeldeinformationen, bevor Sie das Geheimnis erneut zuordnen. Weitere Informationen finden Sie unter Arbeiten mit Benutzern.

Nicht-Administrator-Benutzer können neue ACLs erstellen und die bestehenden ACLs ändern

Standardmäßig kann jeder Benutzer ACLs erstellen oder ändern. Um zu verhindern, dass Nicht-Administratoren ACLs mit Apache ZooKeeper erstellen oder aktualisieren, sollten Sie den Zugriff auf Apache ZooKeeper einschränken, indem Sie die ZooKeeper-Knoten einer separaten Sicherheitsgruppe zuordnen. Stellen Sie außerdem sicher, dass alle Apache Kafka-Befehle und Client-Verbindungen über Bootstrap-Broker und nicht über Apache ZooKeeper ausgeführt werden. Beachten Sie, dass alle Apache-Kafka-Operationen mit dem Bootstrap-String durchgeführt werden können.


Zugehörige Informationen

Apache Kafka ACLs

Geheimnisse verschlüsseln

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren