monedula-gitops
GitOps pour Apache Kafka : topics, accès, quotas, schémas, utilisateurs SCRAM et RBAC Confluent, depuis une CLI ou un opérateur Kubernetes.
Cette page a été traduite automatiquement depuis l’anglais. Lire l’original
monedula-acl-rbac-converter v0.10.0, AGPL-3.0
monedula-acl-rbac-converter lit vos ACL Kafka là où elles se trouvent, planifie les bindings de rôles RBAC Confluent équivalents, les applique, puis demande à MDS si chaque permission d'origine est toujours valable. Ce n'est qu'ensuite qu'il écrit le script qui supprime les anciennes ACL.
go install github.com/monedula-dev/monedula-acl-rbac-converter/cmd/monedula-acl-rbac@latest {
"schema_version": "1",
"bindings": [
{
"id": "rb-b6fac2ae9aa0",
"action": "CREATE",
"principal": "User:svc-analytics",
"role": "DeveloperRead",
"scope": { "kafka_cluster": "lkc-demo-1" },
"resource_patterns": [
{ "resource_type": "Topic", "name": "events.", "pattern_type": "PREFIXED" }
],
"source_acl_ids": [11, 12]
}
]
} RUN=runs/2026-05-21T10-00-00Zmonedula-acl-rbac extract --from text --input acls.txt --out $RUN/acls.jsonmonedula-acl-rbac plan --acls $RUN/acls.json --rules rules.yaml --principals principals.yaml --scopes scopes.yaml --out $RUN/plan.jsonmonedula-acl-rbac auth login --mds-url https://mds.example.commonedula-acl-rbac apply --plan $RUN/plan.json --mds-url https://mds.example.com --confirmmonedula-acl-rbac verify --plan $RUN/plan.json --mds-url https://mds.example.com# exit 0: every source ACL is still allowed; exit 5: some access is missing or unknown
Extrait de plan.json tiré de examples/text-dump/expected/ dans le dépôt.
Les ACL et le RBAC ne se mappent pas un pour un.
Passer un cluster existant au RBAC Confluent implique de transformer chaque ACL en binding de rôle. Certaines ACL, comme les règles DENY, ne doivent pas être converties du tout, d'autres ne correspondent à aucune règle de mapping, et un binding peut s'appliquer sans erreur et pourtant ne rien accorder. À la main, chacun de ces cas échoue en silence.
extractLire les ACL depuis l'une des neuf sources vers un fichier canonique acls.json.
planLes mapper vers des bindings de rôles avec des règles par défaut que vous pouvez surcharger ; lire report.txt.
applyCréer les bindings dans MDS. Rien ne change sans --confirm.
verifyDemander à MDS si chaque permission d'origine est toujours autorisée.
delete-aclsGénérer le script de suppression, avec son script de rollback, et l'exécuter vous-même.
verify demande à MDS, pour chaque ACL source, si le principal, l'opération et la ressource d'origine sont réellement autorisés maintenant, et pas seulement si une ligne de binding existe. Un ID de cluster erroné produit des bindings qui s'appliquent sans erreur et n'accordent rien ; c'est cette vérification qui le détecte.
monedula-acl-rbac verify \
--plan runs/2026-05-21T10-00-00Z/plan.json \
--mds-url https://mds.example.com \
--mds-token-file ~/.confluent/token La portée n'est jamais élargie : une ACL préfixée sur Topic:foo* devient un binding sur Topic:foo*, jamais une autorisation sur tout le cluster. Les plans sont protégés par checksum, et un plan périmé ou modifié est refusé tant que vous ne l'avez pas revalidé.
bindingsunmappedrejectedDonnez à l'outil un accès à MDS, et il applique et vérifie les bindings lui-même. Ou laissez les identifiants MDS là où ils sont : émettez le plan sous forme de script Confluent CLI, de manifestes CFK ConfluentRolebinding ou de commandes curl MDS, laissez votre pipeline les appliquer, puis lancez verify plus tard depuis un hôte qui a accès à MDS. Pour un aperçu rapide, convert exécute extract, plan et emit en un seul appel.
Choisir un chemin (en anglais)
monedula-acl-rbac convert \
--from yaml \
--input acls.yaml \
--scopes scopes.yaml \
--rules rules.yaml \
--principals principals.yaml \
> bindings.sh Chaque exécution conserve l'instantané d'entrée, les règles effectives, le plan, les logs et les scripts de rollback dans un seul répertoire, avec une trace de la source d'identifiants utilisée. Deux exécutions d'apply ne peuvent pas entrer en concurrence sur le même répertoire.
runs/2026-05-21T10-00-00Z/ acls.json source ACL snapshot plan.json checksummed plan report.txt what maps to what, and why would-apply.log dry-run calls apply.log what was created verify.json effective-access results delete-acls.sh generated, run by you
go install github.com/monedula-dev/monedula-acl-rbac-converter/cmd/monedula-acl-rbac@latest Les archives de release pour Linux, macOS et Windows, avec un fichier de checksums signé par cosign et un SBOM, sont sur la page des releases. Voir installer et vérifier une release (en anglais).
apply ne supprime jamais les ACL sources, et delete-acls écrit un script kafka-acls --remove, avec son rollback, que vous inspectez et exécutez. Le script ne couvre que les ACL validées par verify ; si aucune ne l'est, delete-acls s'arrête sur une erreur. Voir supprimer les ACL converties (en anglais).delete-deny-acls génère un script qui revérifie les permissions effectives de chaque ACL au moment de son exécution, et les ACL DENY à principal wildcard ne peuvent jamais être supprimées par l'outil. Voir retirer les ACL DENY (en anglais).Nous pouvons vous aider à mettre en œuvre monedula-acl-rbac-converter sur un parc étendu, de la conception à l’exploitation au quotidien.
D’autres outils gratuits pour Apache Kafka, par la même équipe. À propos de Flock
GitOps pour Apache Kafka : topics, accès, quotas, schémas, utilisateurs SCRAM et RBAC Confluent, depuis une CLI ou un opérateur Kubernetes.
Un plugin Kafka MetricsReporter qui envoie les métriques broker, JVM et client KIP-714 via OTLP ; une panne du collector ne bloque jamais Kafka.
Une CLI Go en lecture seule qui transforme un vrai cluster Kafka en lien Kafka Simulator partageable, avec un serveur MCP pour les agents IA.
Un simulateur Apache Kafka interactif et déterministe dans le navigateur : cassez un cluster, parcourez la chronologie et lisez pourquoi il a réagi.