Authentification SCRAM-SHA-512 (login / mot de passe) sur TLS (SASL_SSL). Les ACLs utilisent le principal User:<nom-du-KafkaUser>.
Voir aussi : Authentification et ACLs · Listener mTLS
boa-lab-kafka-bootstrap.kafka.svc:9094
export KUBECONFIG=/Users/modoulobolysow/Downloads/lab-boa-kubeconfig.yaml
kubectl apply -f manifests/examples/kafka-user-scram.yaml
kubectl wait kafkauser/app-scram -n kafka --for=condition=Ready --timeout=120sStrimzi stocke le mot de passe dans le secret app-scram :
kubectl get secret app-scram -n kafka \
-o jsonpath='{.data.password}' | base64 -d && echoLe username SASL est le nom du KafkaUser : app-scram.
Même CA que pour mTLS :
kubectl get secret boa-lab-cluster-ca-cert -n kafka \
-o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crtbootstrap.servers=boa-lab-kafka-bootstrap.kafka.svc:9094
security.protocol=SASL_SSL
sasl.mechanism=SCRAM-SHA-512
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
username="app-scram" \
password="<MOT_DE_PASSE>";
ssl.truststore.type=PEM
ssl.truststore.location=ca.crtconf = {
"bootstrap.servers": "boa-lab-kafka-bootstrap.kafka.svc:9094",
"security.protocol": "SASL_SSL",
"sasl.mechanisms": "SCRAM-SHA-512",
"sasl.username": "app-scram",
"sasl.password": "<MOT_DE_PASSE>",
"ssl.ca.location": "ca.crt",
}export KAFKA_BOOTSTRAP_SERVERS=boa-lab-kafka-bootstrap.kafka.svc:9094
export KAFKA_SECURITY_PROTOCOL=SASL_SSL
export KAFKA_SASL_MECHANISM=SCRAM-SHA-512
export KAFKA_SASL_USERNAME=app-scram
export KAFKA_SASL_PASSWORD="$(kubectl get secret app-scram -n kafka -o jsonpath='{.data.password}' | base64 -d)"
export KAFKA_SSL_CA_LOCATION=ca.crtFichier client-scram.properties :
security.protocol=SASL_SSL
sasl.mechanism=SCRAM-SHA-512
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="app-scram" password="<MOT_DE_PASSE>";
ssl.truststore.type=PEM
ssl.truststore.location=/tmp/ca.crtexport KUBECONFIG=/Users/modoulobolysow/Downloads/lab-boa-kubeconfig.yaml
kubectl cp ca.crt kafka/boa-lab-boa-lab-brokers-0:/tmp/ca.crt
kubectl exec -n kafka boa-lab-boa-lab-brokers-0 -- \
bin/kafka-topics.sh \
--bootstrap-server boa-lab-kafka-bootstrap.kafka.svc:9094 \
--command-config /tmp/client-scram.properties \
--listPrincipal Kafka : User:app-scram. Voir manifests/examples/kafka-user-scram.yaml.
Exemple d’ACL supplémentaire (topic préfixe payments-) :
acls:
- resource:
type: topic
name: payments-
patternType: prefix
operations:
- Read
- Write
- DescribeRegénérer le secret utilisateur via Strimzi :
# Supprimer et recréer le KafkaUser, ou annoter pour forcer selon votre procédure interne
kubectl delete secret app-scram -n kafka # si recréation contrôlée
kubectl apply -f manifests/examples/kafka-user-scram.yamlLes clients doivent prendre le nouveau mot de passe depuis le secret Kubernetes.
| Critère | mTLS (9093) | SCRAM (9094) |
|---|---|---|
| Identité | Certificat X.509 | Login + mot de passe |
| Rotation | Auto (Strimzi) | Mot de passe / secret K8s |
| Intégration apps | Très bien en K8s (mount secret) | Simple pour apps classiques |
| Risque | Gestion des clés privées | Fuites de mot de passe |
| Erreur | Piste |
|---|---|
SaslAuthenticationException |
Mauvais user/password ou listener 9092 au lieu de 9094 |
SSL handshake failed |
ca.crt manquant ou mauvais port |
Authorization failed |
ACL — principal User:app-scram |