Configuration d'Apache Kafka pour activer l'authentification client

Cette tâche explique comment activer l'authentification client avec Apache Kafka.

Avant de commencer

  1. Vérifiez que les ports utilisés par le serveur Kafka ne sont pas bloqués par un pare-feu.
  2. Pour activer l'authentification client entre les consommateurs Kafka (QRadar) et les courtiers Kafka, une clé et un certificat pour chaque courtier et chaque client du cluster doivent être générés. Les certificats doivent également être signés par une autorité de certification (CA).

A propos de cette tâche

Dans les étapes ci-dessous, vous générez une autorité de certification, vous signez les certificats client et courtier à l'aide de cette autorité de certification, puis vous l'ajoutez dans les fichiers de clés certifiées du client et du courtier. Vous générez également les clés et les certificats à l'aide de l'utilitaire Java keytool et d'OpenSSL. En outre, une autorité de certification externe peut être utilisée ainsi que plusieurs autorités de certification, l'une pour la signature des certificats de courtier et l'autre pour les certificats client.

Procédure

  1. Générez le fichier de clés certifiées, le magasin de clés, la clé privée et le certificat d'autorité de certification.
    Remarque: Remplacez PASSWORD, VALIDITE, SERVER_ALIAS et CLIENT_ALIAS dans les commandes suivantes par des valeurs appropriées.
    1. Générer le magasin de clés du serveur.
      Remarque :

      Le nom usuel (CN) des certificats de courtier doit correspondre au nom de domaine complet (FQDN) du serveur/hôte. Le client consommateur Kafka utilisé par QRadar compare le nom usuel au nom de domaine DNS pour s'assurer qu'il se connecte au courtier approprié et non à un courtier malveillant. Veillez à entrer le nom de domaine complet (FQDN) pour la valeur CN/Prénom et nom lorsque vous générez le magasin de clés du serveur.

      keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS
       -validity VALIDITY -genkey
      Exemple
      keytool -keystore kafka.server.keystore.jks -alias server.hostname
       -validity 365 -genkey
    2. Générez un certificat d'autorité de certification.
      Remarque :

      Ce certificat d'autorité de certification peut être utilisé pour signer tous les certificats de courtier et de client.

      openssl req -new -x509 -keyout ca-key -out ca-cert -days VALIDITY
      Exemple
      openssl req -new -x509 -keyout ca-key -out ca-cert -days 365
    3. Créez le fichier de clés certifiées du serveur et importez le certificat de l'autorité de certification.
      keytool -keystore kafka.server.truststore.jks -alias CARoot
       -import -file ca-cert
    4. Créez le fichier de clés certifiées du client et importez le certificat de l'autorité de certification.
      keytool -keystore kafka.client.truststore.jks -alias CARoot
       -import -file ca-cert
    5. Générez un certificat serveur et signez-le à l'aide de l'autorité de certification.
      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
      Exemple
      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. Importez le certificat de l'autorité de certification dans le magasin de clés du serveur.
      keytool -keystore kafka.server.keystore.jks -alias CARoot
       -import -file ca-cert
    7. Importez le certificat de serveur signé dans le magasin de clés du serveur.
      keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS -import
       -file cert-signed
      Exemple
      keytool -keystore kafka.server.keystore.jks -alias server.hostname
       -import -file cert-signed
    8. Exportez le certificat serveur dans le fichier DER binaire.
      Remarque: La commande keytool -exportcert utilise le format DER par défaut. Placez le certificat dans le répertoire trusted_certificates/ de tout processeur d'événement qui communique avec Kafka. Vous avez besoin du certificat serveur pour chaque serveur d'amorçage que vous utilisez dans la configuration. Sinon, QRadar rejette l'établissement de liaison TLS avec le serveur.
      keytool -exportcert -keystore kafka.server.keystore.jks -alias
       SERVER_ALIAS -file SEVER_ALIAS.der
      Exemple
      keytool -exportcert -keystore kafka.server.keystore.jks -alias
       server.hostname -file server.hostname.der
    9. Générez un magasin de clés client.
      keytool -keystore kafka.client.keystore.jks -alias CLIENT_ALIAS
       -validity VALIDITY -genkey
      Exemple
      keytool -keystore kafka.client.keystore.jks -alias client.hostname
       -validity 365 -genkey
    10. Générez un certificat client et signez-le à l'aide de l'autorité de certification.
      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 
      Exemple
      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. Importez le certificat de l'autorité de certification dans le magasin de clés du client.
      keytool -keystore kafka.client.keystore.jks -alias CARoot
       -import -file ca-cert
    12. Importez le certificat client signé dans le magasin de clés du client.
      keytool -keystore kafka.client.keystore.jks -alias CLIENT_ALIAS
       -import -file client-cert-signed
      Exemple
      keytool -keystore kafka.client.keystore.jks -alias client.hostname
       -import -file client-cert-signed
    13. Copiez le magasin de clés et le magasin de clés de confiance du client et dans QRadar.
      1. Copiez kafka.client.keystore.jks et kafka.client.truststore.jks dans /opt/qradar/conf/trusted_certificates/kafka/ sur chacun des processeurs d'événement pour lesquels la source de journal est configurée.
      2. Copiez les certificats serveur <filename>.der qui ont été générés pour chaque courtier dans /opt/qradar/conf/trusted_certificates/.
  2. Configurez les courtiers Kafka pour l'authentification client.
    1. Recherchez la section Paramètres du serveur socket .
    2. Sélectionnez l'une des options suivantes :
      • Si vous n'utilisez pas l'authentification SASL, remplacez listeners=PLAINTEXT://:<port> par listeners=SSL://:<PORT> et ajoutez security.inter.broker.protocol=SSL.
      • Si vous utilisez l'authentification SASL, remplacez listeners=PLAINTEXT://:<port> par listeners=SASL_SSL://:<PORT> et ajoutez security.inter.broker.protocol=SASL_SSL.
    3. Ajoutez les propriétés ci-dessous pour forcer la communication chiffrée entre les courtiers et entre les courtiers et les clients. Ajustez les chemins, les noms de fichier et les mots de passe selon vos besoins. Les propriétés suivantes correspondent au fichier de clés certifiées et au magasin de clés du serveur :

      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
      Important: Etant donné que les mots de passe sont stockés en texte en clair dans le server.properties, il est conseillé de limiter l'accès au fichier en utilisant les droits du système de fichiers.
    4. Redémarrez les courtiers Kafka dont le server.properties a été modifié.