monedula-gitops
GitOps per Apache Kafka: topic, accessi, quote, schemi, utenti SCRAM e RBAC di Confluent, da una CLI o da un operator Kubernetes.
Questa pagina è stata tradotta automaticamente dall'inglese. Leggi l'originale
monedula-acl-rbac-converter v0.10.0, AGPL-3.0
monedula-acl-rbac-converter legge le tue ACL di Kafka ovunque si trovino, pianifica i role binding RBAC di Confluent equivalenti, li applica e chiede a MDS se ogni permesso originale è ancora valido. Solo allora scrive lo script che elimina le vecchie 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
Estratto di plan.json da examples/text-dump/expected/ nel repository.
ACL e RBAC non si mappano uno a uno.
Portare un cluster esistente su RBAC di Confluent significa trasformare ogni ACL in un role binding. Alcune ACL, come le regole DENY, non vanno convertite affatto, altre non corrispondono a nessuna regola di mappatura, e un binding può applicarsi senza errori e comunque non concedere nulla. Fatto a mano, ognuno di questi casi fallisce in silenzio.
extractLeggi le ACL da una qualsiasi delle nove sorgenti e raccoglile in un acls.json canonico.
planMappale su role binding con regole predefinite che puoi sovrascrivere; leggi report.txt.
applyCrea i binding in MDS. Nulla cambia senza --confirm.
verifyChiedi a MDS se ogni permesso originale è ancora concesso.
delete-aclsGenera lo script di eliminazione, con il relativo rollback, ed eseguilo tu stesso.
verify chiede a MDS, per ogni ACL di origine, se il principal, l'operazione e la risorsa originali sono davvero consentiti ora, non solo se esiste una riga di binding. Un cluster ID non corrispondente produce binding che si applicano senza errori e non concedono nulla; è questo il controllo che lo intercetta.
monedula-acl-rbac verify \
--plan runs/2026-05-21T10-00-00Z/plan.json \
--mds-url https://mds.example.com \
--mds-token-file ~/.confluent/token L'ambito non viene mai allargato: un'ACL con prefisso su Topic:foo* diventa un binding su Topic:foo*, mai un permesso su tutto il cluster. I piani sono protetti da checksum, e un piano obsoleto o modificato viene rifiutato finché non lo convalidi di nuovo.
bindingsunmappedrejectedDai allo strumento l'accesso a MDS e applicherà e verificherà i binding da solo. Oppure lascia le credenziali MDS dove sono: emetti il piano come script della Confluent CLI, manifest CFK ConfluentRolebinding o comandi curl verso MDS, lascia che sia la tua pipeline ad applicarli e poi esegui verify da un host che ha accesso a MDS. Per un'occhiata veloce, convert esegue extract, plan ed emit in una sola chiamata.
Scegliere un percorso (in inglese)
monedula-acl-rbac convert \
--from yaml \
--input acls.yaml \
--scopes scopes.yaml \
--rules rules.yaml \
--principals principals.yaml \
> bindings.sh Ogni esecuzione conserva lo snapshot di input, le regole effettive, il piano, i log e gli script di rollback in un'unica directory, annotando quale sorgente di credenziali è stata usata. Due esecuzioni di apply non possono contendersi la stessa directory.
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 Gli archivi di release per Linux, macOS e Windows, con un file di checksum firmato con cosign e un SBOM, sono nella pagina delle release. Vedi installare e verificare una release (in inglese).
apply non elimina mai le ACL di origine, e delete-acls scrive uno script kafka-acls --remove, con il relativo rollback, che ispezioni ed esegui tu. Lo script include solo le ACL che hanno superato verify; se nessuna lo ha superato, delete-acls si ferma con un errore. Vedi eliminare le ACL convertite (in inglese).delete-deny-acls genera uno script che, quando viene eseguito, ricontrolla i permessi effettivi per ogni ACL, e le DENY con principal wildcard non possono mai essere rimosse dallo strumento. Vedi rimuovere le ACL DENY (in inglese).Possiamo aiutarti a gestire monedula-acl-rbac-converter su un'infrastruttura estesa, dalla progettazione all'operatività quotidiana.
Altri strumenti gratuiti per Apache Kafka, dallo stesso team. Informazioni su Flock
GitOps per Apache Kafka: topic, accessi, quote, schemi, utenti SCRAM e RBAC di Confluent, da una CLI o da un operator Kubernetes.
Plugin MetricsReporter per Kafka che invia metriche di broker, JVM e client KIP-714 via OTLP; un collector non disponibile non blocca mai Kafka.
CLI Go in sola lettura che trasforma un cluster Kafka reale in un link condivisibile a Kafka Simulator, con un server MCP per agenti IA.
Simulatore di Apache Kafka interattivo e deterministico nel browser: rompi un cluster, scorri la timeline e leggi perché ha reagito.
Pagina del prodotto (in inglese) Documentazione (in inglese)