Apache Kafka zum Aktivieren der SASL-Authentifizierung konfigurieren

In dieser Task wird beschrieben, wie die SASL-Authentifizierung mit Apache Kafka ohne SSL-Clientauthentifizierung aktiviert wird.

Vorbereitende Schritte

Wenn Sie die SASL-Authentifizierung mit aktivierter Clientauthentifizierung verwenden, lesen Sie die Informationen unter Apache Kafka , um die Clientauthentifizierung zu aktivieren.

  1. Stellen Sie sicher, dass die Ports, die vom Kafka -Server verwendet werden, nicht durch eine Firewall blockiert werden.
  2. Um die Clientauthentifizierung zwischen den Kafka -Konsumenten (QRadar) und einem Kafka -Broker zu aktivieren, muss ein Schlüssel und ein Zertifikat für jeden Broker und Client im Cluster generiert werden. Die Zertifikate müssen auch von der Zertifizierungsstelle signiert werden.

Informationen zu dieser Task

In den folgenden Schritten generieren Sie eine Zertifizierungsstelle, signieren die Client-und Brokerzertifikate mit ihr und fügen sie den Truststores des Brokers hinzu. Sie können die Schlüssel und Zertifikate auch mit dem Java-Keytool und OpenSSLgenerieren. Alternativ kann eine externe Zertifizierungsstelle zusammen mit mehreren Zertifizierungsstellen verwendet werden, eine zum Signieren von Brokerzertifikaten und eine andere für Clientzertifikate.

Vorgehensweise

  1. Generieren Sie den Truststore, den Keystore, den privaten Schlüssel und das CA-Zertifikat.
    Hinweis: Ersetzen Sie PASSWORD, VALIDITY, SERVER_ALIAS und CLIENT_ALIAS in den folgenden Befehlen durch entsprechende Werte.
    1. Server-Keystore generieren
      Hinweis:

      Der allgemeine Name (CN) der Brokerzertifikate muss mit dem vollständig qualifizierten Domänennamen (FQDN) des Servers/Hosts übereinstimmen. Der Kafka -Konsumentenclient, der von QRadar verwendet wird, vergleicht den CN mit dem DNS-Domänennamen, um sicherzustellen, dass er eine Verbindung zum richtigen Broker und nicht zu einem schädlichen Broker herstellt. Stellen Sie sicher, dass Sie den FQDN für den Wert CN/Vor-und Nachname eingeben, wenn Sie den Server-Keystore generieren.

      keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS
       -validity VALIDITY -genkey
      Beispiel
      keytool -keystore kafka.server.keystore.jks -alias server.hostname
       -validity 365 -genkey
    2. CA-Zertifikat generieren.
      Hinweis:

      Dieses CA-Zertifikat kann zum Signieren aller Broker-und Clientzertifikate verwendet werden.

      openssl req -new -x509 -keyout ca-key -out ca-cert -days VALIDITY
      Beispiel
      openssl req -new -x509 -keyout ca-key -out ca-cert -days 365
    3. Server-Truststore erstellen und CA-Zertifikat importieren.
      keytool -keystore kafka.server.truststore.jks -alias CARoot
       -import -file ca-cert
    4. Generieren Sie ein Serverzertifikat und signieren Sie es mithilfe der Zertifizierungsstelle.
      keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS
       -certreq -file cert-file
      openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out
       cert-signed -days VALIDITY -CAcreateserial
      Beispiel
      keytool -keystore kafka.server.keystore.jks -alias server.hostname 
      -certreq -file cert-file 
      openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out
       cert-signed -days 365 -CAcreateserial 
    5. Importieren Sie das CA-Zertifikat in den Server-Keystore.
      keytool -keystore kafka.server.keystore.jks -alias CARoot
       -import -file ca-cert
    6. Importieren Sie das signierte Serverzertifikat in den Server-Keystore.
      keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS -import
       -file cert-signed
      Beispiel
      keytool -keystore kafka.server.keystore.jks -alias server.hostname
       -import -file cert-signed
    7. Exportieren Sie das Serverzertifikat in die binäre DER-Datei.
      Hinweis: Der keytool -exportcert -Befehl verwendet das DER-Format standardmäßig. Stellen Sie das Zertifikat in das Verzeichnis trusted_certificates/ eines beliebigen Ereignisprozessors, der mit Kafkakommuniziert. Sie benötigen das Serverzertifikat für jeden Bootstrap-Server, den Sie in der Konfiguration verwenden. Andernfalls weist QRadar den TLS-Handshake mit dem Server zurück.
      keytool -exportcert -keystore kafka.server.keystore.jks -alias
       SERVER_ALIAS -file SEVER_ALIAS.der
      Beispiel
      keytool -exportcert -keystore kafka.server.keystore.jks -alias
       server.hostname -file server.hostname.der
  2. Konfigurieren Sie Kafka -Broker für die Clientauthentifizierung.
    1. Suchen Sie den Abschnitt Einstellungen für Socket-Server und ändern Sie dann listeners=PLAINTEXT://:<port> in listeners=SSL://:<PORT>.
    2. Fügen Sie die folgenden Eigenschaften hinzu, um die verschlüsselte Kommunikation zwischen Brokern und zwischen Brokern und Clients zu erzwingen. Passen Sie die Pfade, Dateinamen und Kennwörter nach Bedarf an. Die folgenden Eigenschaften sind der Truststore und Keystore des -Servers:

      security.inter.broker.protocol=SASL_SSL

      ssl.client.auth=none

      ssl.keystore.location=/somefolder/kafka.server.keystore.jks

      ssl.keystore.password=test1234

      ssl.key.password=test1234

      ssl.truststore.location=/somefolder/kafka.server.truststore.jks

      ssl.truststore.password=test1234

      Hinweis:

      Da die Kennwörter im server.propertiesals Klartext gespeichert werden, wird empfohlen, den Zugriff auf die Datei über Dateisystemberechtigungen einzuschränken.

    3. Starten Sie die Kafka -Broker erneut, deren server.properties geändert wurde.