Gegenseitige TLS-Authentifizierung - 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.

Gegenseitige TLS-Authentifizierung

Sie können die Client-Authentifizierung mit TLS für Verbindungen von Ihren Anwendungen zu Ihren Amazon MSK-Brokern aktivieren. Damit Sie die Client-Authentifizierung verwenden können, benötigen Sie eine AWS Private CA. AWS Private CA Sie können sich entweder in demselben AWS-Konto Cluster oder in einem anderen Konto befinden. Informationen zu AWS Private CA s finden Sie unter Erstellen und Verwalten von AWS Private CA.

Anmerkung

TLS-Authentifizierung ist derzeit in den Regionen Peking und Ningxia nicht verfügbar.

Amazon MSK unterstützt keine Zertifikatswiderrufslisten (CRLs). Verwenden Sie Apache Kafka ACLs und Sicherheitsgruppen, um den Zugriff auf Ihre Cluster-Themen zu kontrollieren oder kompromittierte Zertifikate zu blockieren. AWS Informationen zur Verwendung von Apache-Kafka-ACLs finden Sie unter Apache Kafka ACLs.

Erstellen eines Cluster, der die Client-Authentifizierung unterstützt

Dieses Verfahren zeigt Ihnen, wie Sie die Client-Authentifizierung mithilfe von aktivieren. AWS Private CA

Anmerkung

Wir empfehlen dringend, unabhängig AWS Private CA für jeden MSK-Cluster zu verwenden, wenn Sie Mutual TLS zur Zugriffskontrolle verwenden. Dadurch wird sichergestellt, dass von PCAs signierte TLS-Zertifikate nur bei einem einzigen MSK-Cluster authentifiziert werden.

  1. Erstellen Sie eine Datei mit dem Namen clientauthinfo.json und dem folgenden Inhalt. Ersetzen Sie Private-CA-ARN durch den ARN Ihrer PCA.

    { "Tls": { "CertificateAuthorityArnList": ["Private-CA-ARN"] } }
  2. Erstellen Sie eine Datei mit dem Namen brokernodegroupinfo.json, wie unter Erstellen eines Clusters mit dem AWS CLI beschrieben.

  3. Für die Client-Authentifizierung müssen Sie auch die Verschlüsselung während der Übertragung zwischen Clients und Brokern aktivieren. Erstellen Sie eine Datei mit dem Namen encryptioninfo.json und dem folgenden Inhalt. Ersetzen Sie KMS-Key-ARN durch den ARN Ihres KMS-Schlüssels. Für ClientBroker können Sie TLS oder TLS_PLAINTEXT festlegen.

    { "EncryptionAtRest": { "DataVolumeKMSKeyId": "KMS-Key-ARN" }, "EncryptionInTransit": { "InCluster": true, "ClientBroker": "TLS" } }

    Weitere Informationen zur Verschlüsselung finden Sie unter Amazon-MSK-Verschlüsselung.

  4. Führen Sie auf einem Computer, auf dem Sie das AWS CLI installiert haben, den folgenden Befehl aus, um einen Cluster mit aktivierter Authentifizierung und Verschlüsselung bei der Übertragung zu erstellen. Speichern Sie den in der Antwort angegebenen Cluster-ARN.

    aws kafka create-cluster --cluster-name "AuthenticationTest" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file://encryptioninfo.json --client-authentication file://clientauthinfo.json --kafka-version "{YOUR KAFKA VERSION}" --number-of-broker-nodes 3

Einrichten eines Clients zur Verwendung der Authentifizierung

  1. Erstellen Sie eine Amazon-EC2-Instance, die als Client-Computer verwendet werden soll. Erstellen Sie diese Instance der Einfachheit halber in derselben VPC, die Sie für den Cluster verwendet haben. Unter Schritt 3: Einen Client-Computer erstellen finden Sie ein Beispiel dafür, wie Sie solch einen Client-Computer erstellen können.

  2. Erstellen eines Themas. Ein Beispiel finden Sie in den Anweisungen unter Schritt 4: Ein Thema erstellen.

  3. Führen Sie auf einem Computer, auf dem Sie das AWS CLI installiert haben, den folgenden Befehl aus, um die Bootstrap-Broker des Clusters abzurufen. Ersetzen Sie Cluster-ARN durch den ARN Ihres Clusters.

    aws kafka get-bootstrap-brokers --cluster-arn Cluster-ARN

    Speichern Sie die Zeichenfolge, die BootstrapBrokerStringTls in der Antwort zugeordnet ist.

  4. Führen Sie auf Ihrem Client-Computer den folgenden Befehl aus, um mithilfe des JVM-Vertrauensspeichers Ihren Client-Vertrauensspeicher zu erstellen. Wenn Ihr JVM-Pfad anders ist, passen Sie den Befehl entsprechend an.

    cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64/jre/lib/security/cacerts kafka.client.truststore.jks
  5. Führen Sie auf Ihrem Client-Computer den folgenden Befehl aus, um einen privaten Schlüssel für Ihren Client zu erstellen. Ersetzen Sie Distinguished-Name, Example-Alias, Your-Store-Pass und Your-Key-Pass durch Zeichenfolgen Ihrer Wahl.

    keytool -genkey -keystore kafka.client.keystore.jks -validity 300 -storepass Your-Store-Pass -keypass Your-Key-Pass -dname "CN=Distinguished-Name" -alias Example-Alias -storetype pkcs12
  6. Führen Sie auf Ihrem Client-Computer den folgenden Befehl aus, um eine Zertifikatsanforderung mit dem privaten Schlüssel zu erstellen, den Sie im vorherigen Schritt erstellt haben.

    keytool -keystore kafka.client.keystore.jks -certreq -file client-cert-sign-request -alias Example-Alias -storepass Your-Store-Pass -keypass Your-Key-Pass
  7. Öffnen Sie die Datei client-cert-sign-request, und stellen Sie sicher, dass sie mit -----BEGIN CERTIFICATE REQUEST----- beginnt und mit -----END CERTIFICATE REQUEST----- endet. Wenn sie mit -----BEGIN NEW CERTIFICATE REQUEST----- beginnt , löschen Sie das Wort NEW (und das einzelne Leerzeichen, das darauf folgt) vom Anfang und vom Ende der Datei.

  8. Führen Sie auf einem Computer, auf dem Sie das AWS CLI installiert haben, den folgenden Befehl aus, um Ihre Zertifikatsanforderung zu signieren. Ersetzen Sie Private-CA-ARN durch den ARN Ihrer PCA. Sie können den Gültigkeitswert ändern, wenn Sie möchten. Hier verwenden wir 300 als Beispiel.

    aws acm-pca issue-certificate --certificate-authority-arn Private-CA-ARN --csr fileb://client-cert-sign-request --signing-algorithm "SHA256WITHRSA" --validity Value=300,Type="DAYS"

    Speichern Sie den in der Antwort angegebenen Zertifikat-ARN.

    Anmerkung

    Um Ihr Client-Zertifikat abzurufen, verwenden Sie den Befehl acm-pca get-certificate und geben Sie Ihren Zertifikat-ARN an. Weitere Informationen finden Sie unter get-certificate in der AWS CLI -Befehlsreferenz.

  9. Führen Sie den folgenden Befehl aus, um das Zertifikat abzurufen, das für Sie AWS Private CA signiert wurde. Ersetzen Sie Certificate-ARN durch den ARN, den Sie in der Antwort auf den vorherigen Befehl erhalten haben.

    aws acm-pca get-certificate --certificate-authority-arn Private-CA-ARN --certificate-arn Certificate-ARN
  10. Kopieren Sie aus dem JSON-Ergebnis der Ausführung des vorherigen Befehls die Zeichenfolgen, die Certificate und CertificateChain zugeordnet sind. Fügen Sie diese beiden Zeichenfolgen in eine neue Datei mit dem Namen ein signed-certificate-from-acm. Fügen Sie die Zeichenfolge, die Certificate zugeordnet ist, zuerst ein, gefolgt von der Zeichenfolge, die CertificateChain zugeordnet ist. Ersetzen Sie die Zeichen \n durch neue Zeilen. Im Folgenden finden Sie die Struktur der Datei, nachdem Sie das Zertifikat und die Zertifikatkette eingefügt haben.

    -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----
  11. Führen Sie den folgenden Befehl auf dem Client-Computer aus, um dieses Zertifikat zu Ihrem Schlüsselspeicher hinzuzufügen, damit Sie es bei der Kommunikation mit den MSK-Brokern bereitstellen können.

    keytool -keystore kafka.client.keystore.jks -import -file signed-certificate-from-acm -alias Example-Alias -storepass Your-Store-Pass -keypass Your-Key-Pass
  12. Erstellen Sie eine Datei mit dem Namen client.properties und dem folgenden Inhalt. Passen Sie die Speicherorte des Vertrauensspeichers und des Schlüsselspeichers an die Pfade an, in denen Sie kafka.client.truststore.jks gespeichert haben. Ersetzen Sie den Platzhalter {YOUR KAFKA VERSION} durch Ihre Kafka-Client-Version.

    security.protocol=SSL ssl.truststore.location=/tmp/kafka_2.12-{YOUR KAFKA VERSION}/kafka.client.truststore.jks ssl.keystore.location=/tmp/kafka_2.12-{YOUR KAFKA VERSION}/kafka.client.keystore.jks ssl.keystore.password=Your-Store-Pass ssl.key.password=Your-Key-Pass

Erstellen und Verwenden von Nachrichten mithilfe der Authentifizierung

  1. Führen Sie den folgenden Befehl aus, um ein Thema zu erstellen. Die Datei namens client.properties ist die Datei, die Sie im vorherigen Verfahren erstellt haben.

    <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --bootstrap-server BootstrapBroker-String --replication-factor 3 --partitions 1 --topic ExampleTopic --command-config client.properties
  2. Führen Sie den folgenden Befehl aus, um einen Konsolenproduzenten zu starten. Die Datei namens client.properties ist die Datei, die Sie im vorherigen Verfahren erstellt haben.

    <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --bootstrap-server BootstrapBroker-String --topic ExampleTopic --producer.config client.properties
  3. Führen Sie auf Ihrem Client-Computer in einem neuen Befehlsfenster den folgenden Befehl aus, um einen Konsolenverbraucher zu starten.

    <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBroker-String --topic ExampleTopic --consumer.config client.properties
  4. Geben Sie Nachrichten in das Produzentenfenster ein und beobachten Sie, wie sie im Verbraucherfenster angezeigt werden.