Monedula
monedula-acl-rbac-converter docs menu

monedula-acl-rbac delete-deny-acls

Generate the DENY-ACL deletion script. Usage and flags for monedula-acl-rbac delete-deny-acls.

Reference 12 of 29

Reference for monedula-acl-rbac-converter v0.10.0

Updated 2 October 2026

On this page
usage
monedula-acl-rbac delete-deny-acls [flags]

Remove DENY ACLs that 'apply' converted, after 'verify' has confirmed the corresponding bindings are EFFECTIVE_OK. Highly destructive - DENY ACLs are safety-net rules; removing one without confirming the access shouldn't flow through it can grant access to a principal that previously had none.

Emits a 'delete-deny-acls.sh' script in the run directory. The script does NOT contain bare 'kafka-acls --remove' calls; instead each line invokes 'monedula-acl-rbac delete-deny-one' which re-checks effective permission at script-execution time, per-ACL. The script is safe to inspect, reorder, or partially run by hand.

Guardrails (all enforced): - 'verify' must be present (--verify) - --principal (or --principal-file) is REQUIRED - no untargeted sweep - wildcard-principal DENYs ('Deny User:* ...', bare '*', any '<Type>:*') are classified UNKNOWN (unbounded blast radius) and CANNOT be removed by this tool - remove them manually with kafka-acls if you are certain - --confirm AND --i-understand-this-may-grant-access required either way - DENY analysis must classify each ACL as SAFE_TO_REMOVE in plan.json

Unlike apply/verify, this command does NOT accept cache-only auth: pass --mds-token-file, or --mds-user + --mds-password-file. The credentials are baked into runtime.env so the generated script's delete-deny-one calls can authenticate non-interactively at execution time, when a cached token may have expired.

Example: monedula-acl-rbac delete-deny-acls \ --plan runs/.../plan.json --verify runs/.../verify.json \ --bootstrap-server kafka.example.com:9093 \ --command-config admin.properties \ --mds-url https://mds.example.com \ --mds-token-file ~/.confluent/token \ --principal User:alice \ --confirm --i-understand-this-may-grant-access

Outputs: delete-deny-acls.sh, rollback-deny.sh, deleted-deny-acls.json, delete-deny.log, runtime.env (0o600, removed on script exit).

Emits a script; does not delete anything itself.

Read-only: this command does not change the cluster.

Flags

FlagTypeDefaultDescription
--planstring Path to plan.json
--verifystring Path to verify.json
--principalstringSlice Principal filter (REQUIRED; repeatable; alias: --principal-filter)
--principal-filterstringSlice Alias for --principal (same semantics; matches extract / mds list-bindings)
--principal-filestring Path to a file with one principal per line (alternative or supplement to --principal)
--i-understand-this-may-grant-accessbool Required acknowledgement
--confirmbool Confirm the operation
--mds-urlstring MDS base URL (required)
--mds-ca-certstring Path to a PEM CA bundle for MDS TLS
--mds-client-certstring Path to a PEM client certificate for mTLS to MDS
--mds-client-keystring Path to a PEM client key for mTLS to MDS
--mds-insecure-skip-verifybool Skip TLS certificate verification
--mds-userstring MDS username
--mds-password-filestring Path to a file containing the MDS password
--mds-token-filestring Path to a pre-fetched MDS bearer token file
--cache-tokenbool Persist the resolved token to the user config dir
--mds-max-retriesint 3 Retry transient MDS failures (5xx, 429, connection reset) up to N additional times after the initial call; pass 0 to disable retries
--bootstrap-serverstring Kafka bootstrap server(s) (comma-separated)
--bootstrapstring Alias for --bootstrap-server
--command-configstring Path to a Kafka client properties file
--run-dirstring Explicit run directory
--outstring Output path; parent dir becomes the run dir

Global flags

FlagTypeDefaultDescription
--log-formatstringtextLog output format (text|json); set MONEDULA_ACL_RBAC_LOG_FORMAT to override the default.
--log-levelstringinfoLog level (debug|info|warn|error); set MONEDULA_ACL_RBAC_LOG_LEVEL to override the default.

Examples

examples
monedula-acl-rbac delete-deny-acls --plan runs/2026-05-21T10-00-00Z/plan.json --verify runs/2026-05-21T10-00-00Z/verify.json --bootstrap-server kafka.example.com:9093 --command-config admin.properties --mds-url https://mds.example.com --mds-token-file ~/.confluent/token --principal User:alice --confirm --i-understand-this-may-grant-access

Exit codes

CodeMeaning
0Success.
1Usage error: missing required flag, malformed argument, or unknown subcommand.
2Input error: unparseable ACLs or missing/malformed config (rules, principals, scopes, or vars files).
4Any other error: failures the CLI does not classify (for example verify.json has unresolved EFFECTIVE_MISSING/UNKNOWN results, or no DENY ACLs are eligible for removal) fall back to exit code 4.
5Destructive operation refused by a guardrail, or a guardrail check reports unhealthy state.