Cette tâche explique comment activer l'authentification SASL avec Apache Kafka sans authentification de client SSL.
Avant de commencer
Si vous utilisez l'authentification SASL avec l'authentification de client activée, voir Configuration d' Apache Kafka pour activer l'authentification de client.
- Vérifiez que les ports utilisés par le serveur Kafka ne sont pas bloqués par un pare-feu.
- 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 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
- 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.
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Configurez les courtiers Kafka pour l'authentification client.
- Recherchez la section Paramètres du serveur socket , puis remplacez
listeners=PLAINTEXT://:<port>
par listeners=SSL://:<PORT>
.
- 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=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
Remarque :Etant donné que les mots de passe sont stockés en texte en clair dans server.properties, il est conseillé que l'accès au fichier soit restreint par le biais de droits d'accès de système de fichiers.
- Redémarrez les courtiers Kafka dont le server.properties a été modifié.