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

Les listes de contrôle d'accès Kafka (ACL) sont utilisées pour spécifier les autorisations nécessaires pour clusteriser des ressources dans le service de flux avec Apache Kafka.

Principal
Utilisateur ou application authentifié par la grappe Kafka. Le format du nom principal dépend du type de mécanisme d'authentification utilisé, tel que SASL/SCRAM ou mTLS.
Opérations
Action effectuée sur une ressource de grappe Kafka, par exemple créer, supprimer, produire ou consommer.
Ressources
Ressource de grappe Kafka, telle que la grappe, le courtier, le groupe de courtiers 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 listes de contrôle d'accès Kafka contrôlent quel principal peut effectuer des opérations sur les ressources. Si vous créez à la fois des listes de contrôle d'accès allow et deny sur une ressource, les listes de contrôle d'accès deny ont préséance sur les listes de contrôle d'accès allow.

Effectuez les tâches suivantes pour configurer une liste de contrôle d'accès pour une grappe.

  1. Activer l'approbateur
  2. Créer la liste de contrôle d'accès Kafka
  3. Mettre à jour la configuration de grappe

Activer l'approbateur

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

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

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

Pour ajouter, supprimer ou lister des listes de contrôle d'accès dans une grappe, vous utilisez l'interface de ligne de commande de l'autorisation Apache Kafka.

Les règles d'accès dans les listes de contrôle d'accès Apache Kafka sont créées dans le 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é.
  • Allowed/Denied (Autorisé/Refusé) est l'autorisation définie sur le principal.
  • Opération O est l'action sur la ressource, telle que lire, écrire, créer et supprimer.
  • Hôte H est la source qui fait la demande. Le caractère générique * est utilisé pour représenter tout hôte.
  • Ressource R est l'entité Kafka, par exemple un sujet ou une grappe.
  • ResourcePattern RP indique comment la ressource est mise en correspondance. Par exemple, ResourcePattern RP peut être PREFIXED avec la valeur logs-, ce qui signifie que la liste de contrôle d'accès s'applique à tous les sujets dont le nom commence par logs-. Si RP ne correspond pas à une ressource R spécifique, R n'a aucune liste de contrôle d'accès associée.
Exécutez la commande suivante pour créer une règle de liste de contrôle d'accès qui autorise un utilisateur Alice à écrire sur toutes les rubriques en commençant par 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

Mettre à jour la configuration de grappe

Lorsque vous créez une grappe, un fichier de configuration par défaut est créé pour la grappe. La propriété de liste de contrôle d'accès est définie pour permettre à tous d'accéder aux ressources lorsqu'aucune liste de contrôle d'accès n'est trouvée pour la grappe.

Remplacez la propriété allow.everyone.if.no.acl.found par false pour appliquer un accès de sécurité refuser par défaut. Lorsque vous réglez la valeur de cette propriété à Faux, seuls les clients ou utilisateurs autorisés dans la liste de contrôle d'accès 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 pour autoriser l'accès sans restriction aux ressources sans liste de contrôle d'accès tout en appliquant les listes de contrôle d'accès aux ressources qui en disposent.