Kafka - Security
Alasta 15 Février 2025 kafka kafka opensource
Description : Description de la sécurisation dans un cluster Kafka
Sécurité par défaut
Dans un cluster Kafka par défaut il n’y a aucune sécurité :
- Tous les clients ont accès au cluster Kafka
- Les clients peuvent publier/supprimer et consommer les données d’un topic
- Toutes les données sont visibles sur le réseau
La sécurisation, demande environ 30% de performances
Authentification dans Kafka
- SSL Authentication : l’authentification des clients à Kafka utilisent des certificats SSL
- SASL/PLAINTEXT:
- L’authentification cliente utilise un user/password
- Il faut activer le chiffrement SSL sur le Broker
- Changer le password requière un reboot du broker
- SASL/SCRAM :
- User/Password avec un challenge (salt)
- Il faut activer le chiffrement SSL sur le Broker
- L’authentification des données est dans Zookeeper
- SASL/GSSAPI (Kerberos):
- Kerberos: comme avec un Microsoft AD
- Trés sécurisé et adapté à l’entreprise
- SASL/OAuthBearer: utilisation de jetons OAUTH2 pour l’authentification
SSL
1-way Authentication (Encryption)
- C’est uniquement le client qui valide le serveur, le serveur ne vérifie pas le client
- Le serveur partage son certificat public avec les clients
2-way Authentification (Authentification)
- Le client a aussi un certificat SSL qu’il utilise pour s’authentifier
- Les 2 partagent leur certificat public
Kafka gère les 2 cas.
Key Store: fait un CSR à la CA qui lui renvoie le certificat signé pour le broker.
Trust Store: Trust la/les CA Root, le broker aura un trust store.
SASL-SSL
C’est une authentification, le client fournisse son identité au cluster Kafka, similaire à un user/password.
Authorisation dans Kafka
Aprés avoir authentifier un client, il faut ensuite lui donner des autorisations, cela se fait au travers des ACL.
ACL
Qui fait quoi sur quoi, une ACL contient 4 parties:
- Un principal
- Une opération
- Une permission
- Une ressource
User:Bob has Allow permission for Write to Topic:Finance
Un Deny est supérieure à un Allow (en cas “d’overlap” de droit).
Les ACL sont stockées dans Zookeeper puis dans la mémoire cache de chaque Broker pour accélérer les requêtes lors des demandes d’autorisation.
Attention au : allow.everyone.if.no.acl.found=true