MVP

tg-reconciler

Narzędzie do bezpiecznego uzgadniania członkostwa (reconciliation): dry-run, diff, audit log oraz tryby add-only / full reconcile.

IAM • Membership Sync Dry-run • Diff • Audit Safety • Idempotent ops

W skrócie

  • Tryby: add-only oraz full reconcile (usuwanie nadmiarowych członków).
  • Dry-run (plan) i diff przed wykonaniem zmian.
  • Audit log: co, kiedy, kto, jaki plan i rezultat.
  • Projekt pod operacje: retry/backoff, limity, bezpieczne scope tokenów.

Zastosowania

  • Synchronizacja członków z AD/IdP do kanału komunikacji / narzędzia.
  • Porządkowanie dostępu w modelu “source of truth” (grupa → system docelowy).
  • Bezpieczne cykliczne reconcile (cron) bez ryzyka “masakry uprawnień”.
  • Audyt: raport “kto był dodany/usunięty i dlaczego”.

Case study

Problem Ręczne utrzymanie członkostwa w wielu systemach jest wolne, podatne na błędy i trudne do audytu.
Rozwiązanie Reconcile oparty o “source of truth”: desired vs actual → diff → plan → (opcjonalnie) apply.
Stack Python CLI • API client • JSON plan/diff • audit logs
Efekt Przewidywalne zmiany (plan), mniejsze ryzyko (dry-run) i audytowalność operacji.

Bezpieczeństwo (by design)

  • Dry-run first — plan/diff jest pierwszorzędnym artefaktem.
  • Idempotencja — ponowne uruchomienie nie robi “drugiego razu” tego samego.
  • Rate limits + backoff/retry na błędy sieciowe/API.
  • Least privilege — token tylko na konkretne operacje / zasoby.

Kluczowe funkcje

  • Tryby: add-only / full reconcile
  • Plan JSON + czytelne podsumowanie
  • Diff: added/removed/unchanged
  • Audit: timestamp, target, counts, status

Example run

Poniżej przykładowe komendy (dopasuj do swoich nazw i konfiguracji). Najpierw generujesz plan, potem dopiero apply.

# 1) Dry-run: wygeneruj plan + diff
tg-reconciler plan \
  --source ad_group:AD_ADFS_JIRA_Users \
  --target slack_channel:security-ops \
  --mode add-only \
  --out plan.json

# 2) Apply: wykonaj plan (po review)
tg-reconciler apply --in plan.json

# 3) Full reconcile (uwaga: usuwa nadmiarowych)
tg-reconciler plan --mode full --out plan.json
tg-reconciler apply --in plan.json
Tip: jeśli robisz to cyklicznie (cron), trzymaj artefakty plan/audit w repo/log store (np. S3 / R2) dla historii zmian.

Roadmap