Authentifizierung der Anmeldedaten mit AWS Secrets Manager - Amazon Managed Streaming für Apache Kafka

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Authentifizierung der Anmeldedaten mit AWS Secrets Manager

Sie können den Zugriff auf Ihre MSK Amazon-Cluster mithilfe von Anmeldeinformationen steuern, die mit AWS Secrets Manager gespeichert und gesichert werden. Das Speichern von Benutzeranmeldeinformationen in Secrets Manager reduziert den Aufwand für die Cluster-Authentifizierung, wie z. B. die Prüfung, Aktualisierung und Rotation von Anmeldeinformationen. Mit Secrets Manager können Sie auch Benutzeranmeldeinformationen clusterübergreifend freigeben.

Funktionsweise

Die Authentifizierung mit den Anmeldedaten für Amazon MSK verwendet die AuthentifizierungSASL/SCRAM(Simple Authentication and Security Layer/Salted Challenge Response Mechanism). Um die Authentifizierung über Anmeldeinformationen für einen Cluster einzurichten, erstellen Sie eine Secret-Ressource in AWS Secrets Manager und ordnen diesem Secret Anmeldeinformationen zu.

SASL/SCRAMist in 5802 definiert. RFC SCRAMverwendet sichere Hashing-Algorithmen und überträgt keine Klartext-Anmeldedaten zwischen Client und Server.

Anmerkung

Wenn Sie die SASL SCRAM /Authentifizierung für Ihren Cluster einrichten, MSK aktiviert Amazon die TLS Verschlüsselung für den gesamten Datenverkehr zwischen Kunden und Brokern.

SASLSCRAMEinrichtung/Authentifizierung für einen MSK Amazon-Cluster

Um ein Geheimnis in AWS Secrets Manager einzurichten, folgen Sie dem Tutorial Creating and Retrieving a Secret im AWS Secrets Manager Manager-Benutzerhandbuch.

Beachten Sie die folgenden Anforderungen, wenn Sie ein Geheimnis für einen MSK Amazon-Cluster erstellen:

  • Wählen Sie Andere Art von Geheimnissen (z. B. API Schlüssel) als Geheimtyp aus.

  • Ihr geheimer Name muss mit dem Präfix Amazon MSK _ beginnen.

  • Sie müssen entweder einen vorhandenen benutzerdefinierten AWS KMS Schlüssel verwenden oder einen neuen benutzerdefinierten AWS KMS Schlüssel für Ihr Geheimnis erstellen. Secrets Manager verwendet standardmäßig den AWS KMS Standardschlüssel für ein Geheimnis.

    Wichtig

    Ein mit dem AWS KMS Standardschlüssel erstelltes Geheimnis kann nicht mit einem MSK Amazon-Cluster verwendet werden.

  • Ihre Anmeldeinformationen müssen das folgende Format haben, um Schlüssel-Wert-Paare mit der Klartext-Option eingeben zu können.

    { "username": "alice", "password": "alice-secret" }
  • Notieren Sie sich den Wert ARN (Amazon Resource Name) für Ihr Geheimnis.

  • Wichtig

    Sie können einem Cluster, der die unter Die Größe Ihres Clusters anpassen: Anzahl der Partitionen pro Broker beschriebenen Grenzwerte überschreitet, kein Secrets-Manager-Secret zuordnen.

  • Wenn Sie den AWS CLI zur Erstellung des Geheimnisses verwenden, geben Sie eine Schlüssel-ID oder ARN für den kms-key-id Parameter an. Geben Sie keinen Alias an.

  • Verwenden Sie entweder die MSK Amazon-Konsole oder den BatchAssociateScramSecretVorgang, um das Geheimnis Ihrem Cluster zuzuordnen.

    Wichtig

    Wenn Sie einem Cluster ein Geheimnis zuordnen, MSK fügt Amazon dem Geheimnis eine Ressourcenrichtlinie hinzu, die es Ihrem Cluster ermöglicht, auf die von Ihnen definierten geheimen Werte zuzugreifen und diese zu lesen. Sie sollten diese Ressourcenrichtlinie nicht ändern. Andernfalls kann Ihr Cluster daran gehindert werden, auf Ihr Secret zuzugreifen.

    Die folgende JSON Beispieleingabe für den BatchAssociateScramSecret Vorgang verknüpft ein Geheimnis mit einem Cluster:

    { "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4", "secretArnList": [ "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret" ] }

Herstellen einer Verbindung zu Ihrem Cluster mit Anmeldeinformationen

Nachdem Sie ein Secret erstellt und es Ihrem Cluster zugeordnet haben, können Sie Ihren Client mit dem Cluster verbinden. Die folgenden Beispielschritte zeigen, wie Sie einen Client mit einem Cluster verbinden, der die SCRAM Authentifizierung SASL /verwendet, und wie Sie anhand eines Beispielthemas produzieren und konsumieren.

  1. Führen Sie den folgenden Befehl auf einem Computer aus, auf dem das AWS CLI installiert ist, und ersetzen Sie clusterARN mit dem ARN Ihres Clusters.

    aws kafka get-bootstrap-brokers --cluster-arn clusterARN
  2. Um ein Beispielthema zu erstellen, führen Sie den folgenden Befehl aus und ersetzen Sie BootstrapServerString mit einem der Broker-Endpunkte, die Sie im vorherigen Schritt erhalten haben.

    <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --bootstrap-server BootstrapServerString --replication-factor 3 --partitions 1 --topic ExampleTopicName
  3. Erstellen Sie auf Ihrem Client-Computer eine JAAS Konfigurationsdatei, die die in Ihrem Secret gespeicherten Benutzeranmeldedaten enthält. Erstellen Sie beispielsweise für den Benutzer alice eine Datei namens users_jaas.conf mit dem folgenden Inhalt.

    KafkaClient { org.apache.kafka.common.security.scram.ScramLoginModule required username="alice" password="alice-secret"; };
  4. Verwenden Sie den folgenden Befehl, um Ihre JAAS Konfigurationsdatei als KAFKA_OPTS Umgebungsparameter zu exportieren.

    export KAFKA_OPTS=-Djava.security.auth.login.config=<path-to-jaas-file>/users_jaas.conf
  5. Erstellen Sie in einem ./tmp-Verzeichnis eine Datei namens kafka.client.truststore.jks.

  6. Verwenden Sie den folgenden Befehl, um die JDK Schlüsselspeicherdatei aus Ihrem JVM cacerts Ordner in die kafka.client.truststore.jks Datei zu kopieren, die Sie im vorherigen Schritt erstellt haben. Ersetzen JDKFolder mit dem Namen des JDK Ordners auf Ihrer Instanz. Beispielsweise könnte Ihr JDK Ordner benannt seinjava-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64.

    cp /usr/lib/jvm/JDKFolder/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks
  7. Erstellen Sie im bin-Verzeichnis Ihrer Apache-Kafka-Installation eine Client-Eigenschaftendatei namens client_sasl.properties mit dem folgenden Inhalt. Diese Datei definiert den SASL Mechanismus und das Protokoll.

    security.protocol=SASL_SSL sasl.mechanism=SCRAM-SHA-512 ssl.truststore.location=<path-to-keystore-file>/kafka.client.truststore.jks
  8. Rufen Sie die Zeichenfolge Ihres Bootstrap-Brokers mit dem folgenden Befehl ab. Ersetzen ClusterArn mit dem Amazon-Ressourcennamen (ARN) Ihres Clusters:

    aws kafka get-bootstrap-brokers --cluster-arn ClusterArn

    Speichern Sie aus dem JSON Ergebnis des Befehls den Wert, der der angegebenen Zeichenfolge zugeordnet istBootstrapBrokerStringSaslScram.

  9. Führen Sie den folgenden Befehl auf Ihrem Client-Computer aus, um in dem von Ihnen erstellten Beispielthema zu produzieren. Ersetzen BootstrapBrokerStringSaslScram mit dem Wert, den Sie im vorherigen Schritt abgerufen haben.

    <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list BootstrapBrokerStringSaslScram --topic ExampleTopicName --producer.config client_sasl.properties
  10. Führen Sie den folgenden Befehl auf Ihrem Client-Computer aus, um aus dem von Ihnen erstellten Thema zu verbrauchen. Ersetzen BootstrapBrokerStringSaslScram mit dem Wert, den Sie zuvor erhalten haben.

    <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringSaslScram --topic ExampleTopicName --from-beginning --consumer.config client_sasl.properties

Working with users

Benutzer erstellen: Sie erstellen Benutzer in Ihrem Secret als Schlüssel-Wert-Paare. Wenn Sie die Klartext-Option in der Secrets-Manager-Konsole verwenden, sollten Sie die Anmeldeinformationen im folgenden Format angeben.

{ "username": "alice", "password": "alice-secret" }

Benutzerzugriff widerrufen: Um einem Benutzer die Anmeldeinformationen für den Zugriff auf einen Cluster zu entziehen, empfehlen wir, zuerst einen zu entfernen oder für den Cluster ACL zu erzwingen und dann die Zuordnung des Geheimnisses aufzuheben. Dies ist auf Folgendes zurückzuführen:

  • Durch das Entfernen eines Benutzers werden bestehende Verbindungen nicht geschlossen.

  • Es dauert bis zu 10 Minuten, bis Änderungen an Ihrem Secret verbreitet sind.

Informationen zur Verwendung von und ACL mit Amazon MSK finden Sie unterApache Kafka ACLs.

Für Cluster, die ZooKeeper den Modus verwenden, empfehlen wir, den Zugriff auf Ihre ZooKeeper Knoten einzuschränken, um zu verhindern, dass Benutzer Änderungen vornehmenACLs. Weitere Informationen finden Sie unter Steuern des Zugriffs auf Apache ZooKeeper.

Einschränkungen

Beachten Sie bei der Verwendung von SCRAM Geheimnissen die folgenden Einschränkungen:

  • Amazon unterstützt MSK nur die SCRAM SHA -512-Authentifizierung.

  • Ein MSK Amazon-Cluster kann bis zu 1000 Benutzer haben.

  • Sie müssen einen AWS KMS key mit Ihrem Secret verwenden. Sie können kein Secret, das den standardmäßigen Secrets Manager-Verschlüsselungsschlüssel verwendet, mit Amazon verwendenMSK. Informationen zum Erstellen eines KMS Schlüssels finden Sie unter Symmetrische KMS Verschlüsselungsschlüssel erstellen.

  • Sie können keinen asymmetrischen KMS Schlüssel mit Secrets Manager verwenden.

  • Mithilfe dieser BatchAssociateScramSecretOperation können Sie einem Cluster bis zu 10 Geheimnisse gleichzeitig zuordnen.

  • Der Name von Geheimnissen, die mit einem MSK Amazon-Cluster verknüpft sind, muss das Präfix Amazon MSK _ haben.

  • Mit einem MSK Amazon-Cluster verknüpfte Geheimnisse müssen sich im selben Amazon Web Services-Konto und derselben AWS Region wie der Cluster befinden.