monedula-gitops
GitOps para Apache Kafka: topics, acceso, cuotas, esquemas, usuarios SCRAM y RBAC de Confluent, desde una CLI o un operador de Kubernetes.
Esta página se tradujo automáticamente del inglés. Leer el original
monedula-acl-rbac-converter v0.10.0, AGPL-3.0
monedula-acl-rbac-converter lee tus ACL de Kafka estén donde estén, planifica los role bindings RBAC de Confluent equivalentes, los aplica y pregunta a MDS si cada permiso original sigue vigente. Solo entonces escribe el script que elimina las ACL antiguas.
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
Extracto de plan.json de examples/text-dump/expected/ en el repositorio.
Las ACL y el RBAC no se mapean uno a uno.
Pasar un clúster existente al RBAC de Confluent significa convertir cada ACL en un role binding. Algunas ACL, como las reglas DENY, no deberían convertirse en absoluto, otras no coinciden con ninguna regla de mapeo, y un binding puede aplicarse sin errores y aun así no conceder nada. Hecho a mano, cada uno de estos casos falla en silencio.
extractLee las ACL de cualquiera de las nueve fuentes y vuélcalas en un acls.json canónico.
planMapéalas a role bindings con reglas por defecto que puedes sobrescribir; lee report.txt.
applyCrea los bindings en MDS. Nada cambia sin --confirm.
verifyPregunta a MDS si cada permiso original sigue permitido.
delete-aclsGenera el script de eliminación, con su script de rollback, y ejecútalo tú mismo.
verify pregunta a MDS, para cada ACL de origen, si el principal, la operación y el recurso originales están realmente permitidos ahora, no solo si existe una fila de binding. Un ID de clúster que no coincide produce bindings que se aplican sin errores y no conceden nada; esta es la comprobación que lo detecta.
monedula-acl-rbac verify \
--plan runs/2026-05-21T10-00-00Z/plan.json \
--mds-url https://mds.example.com \
--mds-token-file ~/.confluent/token El alcance nunca se amplía: una ACL con prefijo sobre Topic:foo* se convierte en un binding sobre Topic:foo*, nunca en un permiso para todo el clúster. Los planes llevan checksum, y un plan obsoleto o editado se rechaza hasta que lo vuelvas a validar.
bindingsunmappedrejectedDa acceso a MDS a la herramienta y aplicará y verificará los bindings por sí misma. O deja las credenciales de MDS donde están: emite el plan como un script de Confluent CLI, manifiestos CFK ConfluentRolebinding o comandos curl a MDS, deja que tu pipeline los aplique y ejecuta verify más tarde desde un host con acceso a MDS. Para echar un vistazo rápido, convert ejecuta extract, plan y emit en una sola llamada.
Elegir un camino (en inglés)
monedula-acl-rbac convert \
--from yaml \
--input acls.yaml \
--scopes scopes.yaml \
--rules rules.yaml \
--principals principals.yaml \
> bindings.sh Cada ejecución guarda la instantánea de entrada, las reglas efectivas, el plan, los logs y los scripts de rollback en un solo directorio, con constancia de qué fuente de credenciales se usó. Dos ejecuciones de apply no pueden pisarse en el mismo directorio.
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 Los paquetes de release para Linux, macOS y Windows, con un archivo de checksums firmado con cosign y un SBOM, están en la página de releases. Consulta instalar y verificar una release (en inglés).
apply nunca elimina las ACL de origen, y delete-acls escribe un script kafka-acls --remove, con su rollback, para que lo inspecciones y lo ejecutes tú. El script solo incluye las ACL que superaron verify; si ninguna lo superó, delete-acls se detiene con un error. Consulta eliminar las ACL convertidas (en inglés).delete-deny-acls genera un script que vuelve a comprobar los permisos efectivos de cada ACL al ejecutarse, y las ACL DENY con principal comodín nunca pueden eliminarse mediante la herramienta. Consulta quitar las ACL DENY (en inglés).Podemos ayudarte a usar monedula-acl-rbac-converter en una infraestructura grande, desde el diseño hasta la operación diaria.
Más herramientas gratuitas para Apache Kafka del mismo equipo. Acerca de Flock
GitOps para Apache Kafka: topics, acceso, cuotas, esquemas, usuarios SCRAM y RBAC de Confluent, desde una CLI o un operador de Kubernetes.
Plugin MetricsReporter de Kafka que envía métricas de broker, JVM y clientes KIP-714 por OTLP; una caída del collector nunca bloquea Kafka.
CLI en Go de solo lectura que convierte un clúster de Kafka real en un enlace compartible de Kafka Simulator, con un servidor MCP para agentes de IA.
Simulador de Apache Kafka interactivo y determinista en el navegador: rompe un clúster, recorre la línea de tiempo y lee por qué reaccionó.