Configuration des listes de contrôle d'accès Kafka

Les listes de contrôle d'accès (ACL) Kafka sont utilisées pour indiquer les droits d'accès aux ressources de cluster dans Streaming avec Apache Kafka.

Principal
Utilisateur ou application authentifié par le cluster Kafka. Le format du nom du principal dépend du type de mécanisme d'authentification utilisé, tel que SASL/SCRAM ou mTLS.
Opérations
Action exécutée sur une ressource de cluster Kafka, telle que la création, la suppression, la production ou l'utilisation.
Ressources
Ressource de cluster Kafka, telle que le cluster, le broker, le groupe de broker ou le sujet. Si aucune liste de contrôle d'accès n'est associée à une ressource, seul un superutilisateur peut accéder à la ressource.

Les ACL Kafka contrôlent le principal qui peut effectuer des opérations sur les ressources. Si vous créez des listes de contrôle d'accès allow et deny sur une ressource, les listes de contrôle d'accès deny sont prioritaires sur les listes de contrôle d'accès allow.

Pour configurer une liste de contrôle d'accès pour un cluster, procédez comme suit :

  1. Activer l'autorisateur
  2. Création de la liste de contrôle d'accès Kafka
  3. Mise à jour de la configuration du cluster

Activer l'autorisateur

Dans Apache Kafka, l'autorisateur est un composant qui applique les listes de contrôle d'accès (ACL) et s'assure que seuls les utilisateurs ou clients autorisés effectuent les actions définies dans les ACL.

Mettez à jour le fichier de configuration config_name.properties pour le cluster avec les informations suivantes :
authorizer.class.name=kafka.security.authorizer.AclAuthorizer

Création de la liste de contrôle d'accès Kafka

Pour ajouter, enlever ou répertorier des listes de contrôle d'accès dans un cluster, utilisez l'interface de ligne de commande de l'autorisateur Apache Kafka.

Les règles d'accès dans les listes de contrôle d'accès Apache Kafka sont créées au format suivant :

Principal P is [Allowed/Denied] Operation O From Host H on any Resource R matching ResourcePattern RP

Ici,

  • Principal P est l'utilisateur ou le client auquel l'accès est accordé ou refusé.
  • Autorisé/Refusé est le droit d'accès défini sur le principal.
  • Opération O est l'action sur la ressource, telle que la lecture, l'écriture, la création et la suppression.
  • Hôte H est la source de la demande. Le caractère générique * est utilisé pour représenter n'importe quel hôte.
  • Ressource est l'entité Kafka, telle que le sujet ou le cluster.
  • ResourcePattern RP est la façon dont la ressource est mise en correspondance. Par exemple, ResourcePattern RP peut être PREFIXED avec la valeur logs-, ce qui signifie que l'ACL s'applique à tous les sujets dont le nom commence par logs-. Si RP ne correspond pas à une ressource spécifique R, alors R n'a aucune liste de contrôle d'accès associée.
Exécutez la commande suivante pour créer une règle d'ACL qui permet à un utilisateur Alice d'écrire sur tous les sujets à partir de logs- à partir de n'importe quel hôte :
kafka-acls --bootstrap-server <bootstrap-server-url> \
--command-config <config-file-path> \
--add \
--allow-principal User:Alice \
--operation Write \
--topic logs- \
--resource-pattern-type prefixed

Mise à jour de la configuration du cluster

Lorsque vous créez un cluster, un fichier de configuration par défaut est créé pour le cluster. La propriété ACL est définie pour permettre à tous d'accéder aux ressources lorsqu'aucune ACL n'est trouvée pour le cluster.

Remplacez la propriété allow.everyone.if.no.acl.found par false pour appliquer un accès de sécurité deny par défaut. Lorsque vous définissez la valeur de cette propriété sur False, seuls les clients ou utilisateurs autorisés dans l'ACL et les superutilisateurs peuvent accéder aux ressources.
allow.everyone.if.no.acl.found=false
Vous pouvez également conserver la valeur par défaut true pour allow.everyone.if.no.acl.found afin d'autoriser un accès illimité aux ressources sans listes de contrôle d'accès tout en appliquant des listes de contrôle d'accès pour les ressources qui en disposent.