Configurazione di Apache Kafka per abilitare l'autenticazione del client

In questa attività viene illustrato come abilitare l'autenticazione del client con Apache Kafka.

Prima di iniziare

  1. Assicurarsi che le porte utilizzate dal server Kafka non siano bloccate da un firewall.
  2. Per abilitare l'autenticazione client tra gli utenti Kafka (QRadar) e i broker Kafka , è necessario generare una chiave e un certificato per ciascun broker e client nel cluster. I certificati devono inoltre essere firmati da un'autorità di certificazione (CA).

Informazioni su questa attività

Nei seguenti passaggi, si genera una CA, firma i certificati client e broker con esso, e lo aggiungi al client e broker truststore. Puoi anche generare le chiavi e i certificati utilizzando il keytool Java e OpenSSL. In alternativa, una CA esterna può essere utilizzata insieme a più CAs, una per la firma dei certificati broker e un'altra per i certificati client.

Procedura

  1. Genera il truststore, il memorizzazione chiave, la chiave privata e il certificato CA.
    Nota: Sostituire PASSWORD, VALIDITÀ, SERVER_ALIAS e CLIENT_ALIAS nei seguenti comandi con valori appropriati.
    1. Genera il memorizzazione chiave del server.
      Nota:

      Il nome comune (CN) dei certificati broker deve corrispondere al nome del dominio completamente qualificato (FQDN) del server / host. Il client consumer Kafka utilizzato da QRadar confronta il CN con il nome dominio DNS per garantire che si stia collegando al broker corretto invece che a un broker doloso. Assicurarsi di immettere l'FQDN per il valore CN/Nome e cognome quando si genera il keystore del server.

      keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS
       -validity VALIDITY -genkey
      Esempio
      keytool -keystore kafka.server.keystore.jks -alias server.hostname
       -validity 365 -genkey
    2. Genera certificato CA.
      Nota:

      Questo certificato CA può essere utilizzato per firmare tutti i certificati broker e client.

      openssl req -new -x509 -keyout ca-key -out ca-cert -days VALIDITY
      Esempio
      openssl req -new -x509 -keyout ca-key -out ca-cert -days 365
    3. Crea truststore di server e importazione certificato CA.
      keytool -keystore kafka.server.truststore.jks -alias CARoot
       -import -file ca-cert
    4. Crea truststore Client e importazione certificato CA.
      keytool -keystore kafka.client.truststore.jks -alias CARoot
       -import -file ca-cert
    5. Generare un Certificato Server e firmarlo utilizzando la CA.
      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
      Esempio
      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 
    6. Importa certificato CA nel Keystore Server.
      keytool -keystore kafka.server.keystore.jks -alias CARoot
       -import -file ca-cert
    7. Import Signed Server Certificate al server di memorizzazione del server.
      keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS -import
       -file cert-signed
      Esempio
      keytool -keystore kafka.server.keystore.jks -alias server.hostname
       -import -file cert-signed
    8. Esporta il Certificato Server nel file binario DER.
      Nota: Il comando keytool -exportcert utilizza il formato DER per impostazione predefinita. Inserire il certificato nella directory trusted_certificates/ di qualsiasi EP che comunica con Kafka. È necessario il certificato server per ogni server bootstrap che si utilizza nella configurazione. Altrimenti, QRadar rifiuta l'handshake TLS con il server.
      keytool -exportcert -keystore kafka.server.keystore.jks -alias
       SERVER_ALIAS -file SEVER_ALIAS.der
      Esempio
      keytool -exportcert -keystore kafka.server.keystore.jks -alias
       server.hostname -file server.hostname.der
    9. Generare un archivio di chiavi Client.
      keytool -keystore kafka.client.keystore.jks -alias CLIENT_ALIAS
       -validity VALIDITY -genkey
      Esempio
      keytool -keystore kafka.client.keystore.jks -alias client.hostname
       -validity 365 -genkey
    10. Generare un Certificato Client e firmarlo utilizzando la CA.
      keytool -keystore kafka.client.keystore.jks -alias CLIENT_ALIAS
       -certreq -file client-cert-file
      openssl x509 -req -CA ca-cert -CAkey ca-key -in client-cert-file -out
       client-cert-signed -days VALIDITY -CAcreateserial 
      Esempio
      keytool -keystore kafka.client.keystore.jks -alias client.hostname
       -certreq -file client-cert-file 
      openssl x509 -req -CA ca-cert -CAkey ca-key -in client-cert-file
       -out client-cert-signed -days 365 -CAcreateserial
    11. Importa certificato CA nel Keystore del Client.
      keytool -keystore kafka.client.keystore.jks -alias CARoot
       -import -file ca-cert
    12. Import Signed Client Certificate al client di memorizzazione del client.
      keytool -keystore kafka.client.keystore.jks -alias CLIENT_ALIAS
       -import -file client-cert-signed
      Esempio
      keytool -keystore kafka.client.keystore.jks -alias client.hostname
       -import -file client-cert-signed
    13. Copia keystore e truststore client e in QRadar.
      1. Copiare kafka.client.keystore.jks e kafka.client.truststore.jks in /opt/qradar/conf/trusted_certificates/kafka/ su ciascun processore eventi per cui è configurata l'origine log.
      2. Copiare i certificati server <filename>.der generati per ogni broker in /opt/qradar/conf/trusted_certificates/.
  2. Configura Kafka broker per l'autenticazione del client.
    1. Trova la sezione Impostazioni socket server .
    2. Completa 1 delle seguenti opzioni:
      • Se non si utilizza SASL Authentication, modificare listeners=PLAINTEXT://:<port> a listeners=SSL://:<PORT> e aggiungere security.inter.broker.protocol=SSL.
      • Se si utilizza l'autenticazione SASL, cambiare listeners=PLAINTEXT://:<port> a listeners=SASL_SSL://:<PORT> e aggiungere security.inter.broker.protocol=SASL_SSL.
    3. Aggiungere le seguenti proprietà per forzare la comunicazione crittografata tra i broker e tra i broker e i client. Regolare i percorsi, i nomi dei file e le password come servono. Queste proprietà sono il truststore e il memorizzazione chiave del server:

      security.inter.broker.protocol=SSL

      ssl.client.auth=required

      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
      Importante: poiché le password sono memorizzate in testo semplice in server.properties, si consiglia di limitare l'accesso al file tramite le autorizzazioni del filesystem.
    4. Riavviare i broker Kafka che hanno server.properties modificato.