Monedula
Teksty i open source

Ta strona została przetłumaczona maszynowo z języka angielskiego. Przeczytaj oryginał

monedula-acl-rbac-converter v0.10.0, AGPL-3.0

Przenieś ACL Kafki do RBAC i zweryfikuj dostęp

monedula-acl-rbac-converter odczytuje twoje ACL Kafki, gdziekolwiek się znajdują, planuje równoważne powiązania ról Confluent RBAC, stosuje je i pyta MDS, czy każde pierwotne uprawnienie nadal obowiązuje. Dopiero wtedy zapisuje skrypt, który usuwa stare ACL.

go install github.com/monedula-dev/monedula-acl-rbac-converter/cmd/monedula-acl-rbac@latest
runs/<timestamp>/plan.json (fragment)
{
  "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]
    }
  ]
}
terminal
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

Fragment plan.json z examples/text-dump/expected/ w repozytorium.

9
źródeł ACL, od działającego klastra po manifesty Strimzi i CFK
3
sposoby przekazania powiązań: skrypt powłoki, manifest CFK, curl do MDS
~10k
ACL na jeden przebieg, trzymanych w pamięci

Problem

ACL i RBAC nie odwzorowują się jeden do jednego.

Przeniesienie istniejącego klastra na Confluent RBAC oznacza zamianę każdego ACL na powiązanie roli. Niektórych ACL, na przykład reguł DENY, w ogóle nie należy konwertować, inne nie pasują do żadnej reguły mapowania, a powiązanie może zostać zastosowane bez błędów i mimo to niczego nie przyznawać. Przy pracy ręcznej każdy z tych przypadków kończy się cichym błędem.

Jak to działa

  1. 01 extract

    Wyodrębnij

    Odczytaj ACL z dowolnego z dziewięciu źródeł do kanonicznego pliku acls.json.

  2. 02 plan

    Zaplanuj

    Zmapuj je na powiązania ról regułami domyślnymi, które możesz nadpisać; przeczytaj report.txt.

  3. 03 apply

    Zastosuj

    Utwórz powiązania w MDS. Bez --confirm nic się nie zmienia.

  4. 04 verify

    Zweryfikuj

    Zapytaj MDS, czy każde pierwotne uprawnienie jest nadal dozwolone.

  5. 05 delete-acls

    Posprzątaj

    Wygeneruj skrypt usuwania wraz ze skryptem wycofania i uruchom go samodzielnie.

  1. Źródłowe ACL działający klaster; zrzut kafka-acls; JSON, YAML, CSV; Strimzi; CFK; Kubernetes
  2. plan.json każdy ACL zmapowany, niezmapowany lub odrzucony; z sumą kontrolną
  3. Ścieżka A: apply do MDS, potem weryfikacja efektywnego dostępu
    Ścieżka B: emit skrypt, manifest CFK, curl do MDS dla twojego pipeline'u
  4. Usunięcie starych ACL skrypt usuwania, który przeglądasz i uruchamiasz
Źródłowe ACL stają się jednym planem z sumą kontrolną, który zostaje zastosowany w MDS albo wyemitowany dla twojego pipeline'u, zanim stare ACL zostaną usunięte.

Efektywny dostęp, zweryfikowany

verify pyta MDS dla każdego źródłowego ACL, czy pierwotny principal, operacja i zasób są teraz rzeczywiście dozwolone, a nie tylko, czy istnieje wiersz powiązania. Niezgodny identyfikator klastra daje powiązania, które stosują się bez błędów i nie przyznają niczego. Właśnie to wyłapuje ta kontrola.

terminal
monedula-acl-rbac verify \
  --plan runs/2026-05-21T10-00-00Z/plan.json \
  --mds-url https://mds.example.com \
  --mds-token-file ~/.confluent/token

Każdy ACL trafia na jedną z trzech list

Zakres nigdy nie jest poszerzany: ACL z prefiksem na Topic:foo* staje się powiązaniem na Topic:foo*, nigdy uprawnieniem na cały klaster. Plany mają sumy kontrolne, a nieaktualny lub edytowany plan jest odrzucany, dopóki nie zwalidujesz go ponownie.

bindings
powiązania ról do utworzenia, każde z listą identyfikatorów źródłowych ACL, które zastępuje
unmapped
ACL, których nie przetłumaczyła żadna reguła; ty decydujesz, co z nimi zrobić
rejected
ACL, których narzędzie nie skonwertuje, na przykład reguły DENY

Z dostępem do MDS albo bez niego

Daj narzędziu dostęp do MDS, a samo zastosuje i zweryfikuje powiązania. Albo zostaw poświadczenia MDS tam, gdzie są: wyemituj plan jako skrypt Confluent CLI, manifesty CFK ConfluentRolebinding lub polecenia curl do MDS i pozwól, by zastosował je twój pipeline, a później uruchom verify z hosta z dostępem do MDS. Na szybki rzut oka convert wykonuje extract, plan i emit w jednym wywołaniu.

Wybór ścieżki (po angielsku)

konwersja jednorazowa
monedula-acl-rbac convert \
  --from yaml \
  --input acls.yaml \
  --scopes scopes.yaml \
  --rules rules.yaml \
  --principals principals.yaml \
  > bindings.sh

Katalog przebiegu, który możesz pokazać audytorowi

Każdy przebieg trzyma w jednym katalogu migawkę wejścia, efektywne reguły, plan, logi i skrypty wycofania, wraz z zapisem, z jakiego źródła poświadczeń skorzystano. Dwa przebiegi apply nie mogą wejść sobie w drogę w tym samym katalogu.

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

Instalacja

Go
go install github.com/monedula-dev/monedula-acl-rbac-converter/cmd/monedula-acl-rbac@latest

Archiwa wydań dla Linuksa, macOS i Windows, z plikiem sum kontrolnych podpisanym przez cosign i z SBOM, są na stronie wydań. Więcej: instalacja i weryfikacja wydania (po angielsku).

Pytania

Czy monedula-acl-rbac-converter jest darmowy i czy mogę go używać w pracy?
Tak. Jest na licencji AGPL-3.0, bez płatnej edycji, a uruchamianie go we własnej infrastrukturze nie zobowiązuje cię do udostępnienia twojego kodu ani konfiguracji: obowiązki wynikające z AGPL powstają, gdy go rozpowszechniasz, zmodyfikowanego lub nie, albo gdy pozwalasz innym korzystać przez sieć ze zmodyfikowanej wersji.
Czy usunie moje ACL?
Nie samo z siebie: apply nigdy nie usuwa źródłowych ACL, a delete-acls zapisuje skrypt kafka-acls --remove wraz ze skryptem wycofania, które sam przeglądasz i uruchamiasz. Skrypt obejmuje tylko ACL, które przeszły verify; jeśli żaden nie przeszedł, delete-acls kończy się błędem. Więcej: usuwanie skonwertowanych ACL (po angielsku).
Co dzieje się z ACL typu DENY?
Nigdy nie są konwertowane automatycznie; plan wymienia je jako odrzucone. delete-deny-acls generuje skrypt, który przy uruchomieniu ponownie sprawdza efektywne uprawnienia dla każdego ACL, a reguł DENY z principalem wieloznacznym narzędzie nigdy nie usunie. Więcej: usuwanie ACL typu DENY (po angielsku).
Ile ACL potrafi obsłużyć?
Do około 10 000 ACL na jeden przebieg, trzymanych w pamięci. Przy większej liczbie podziel je według principala, z jednym katalogiem przebiegu na partię.

Wsparcie

Pomoc od twórców narzędzia

Możemy pomóc ci korzystać z monedula-acl-rbac-converter w dużym środowisku, od projektu po codzienną eksploatację.

Porozmawiajmy

Część
Monedula Flock

Więcej darmowych narzędzi dla Apache Kafki od tego samego zespołu. Czym jest Flock