Wróć do aktualności
Opublikowano 1 września 2024Zaktualizowano 10 grudnia 20241 min lektury

Jak działa model autoryzacji w Cooperate

W jaki sposób modelujemy role, polityki i rejestry audytu, aby połączyć wgląd w platformę z izolacją najemców.

Diagram przedstawiający połączone tarcze symbolizujące kontrolę dostępu
autoryzacjarbacbezpieczenstwo

Jak działa model autoryzacji w Cooperate

Zaufanie to fundament każdej platformy. Dlatego w Cooperate każde zapytanie zaczynamy od pytania: kto może zobaczyć albo zmienić dany rekord?

Warstwy zabezpieczeń

  • Kontrakty jako źródło prawdy. Każda domena udostępnia schematy Zod w packages/contracts/**, dzięki czemu wszystkie dane mają jasno zdefiniowany kształt.
  • Strażnicy domen. Moduły serwerowe w src/server/domains/** sprawdzają role i zapisują zdarzenia audytowe—komponenty UI nie łączą się bezpośrednio z Supabase.
  • RLS na każdej tabeli. Polityki zawsze weryfikują członkostwo w firmie lub uprawnienia zespołu platformy.

Obsługiwane role

  1. Role firmowe (company_admin, project_manager, member) określają, kto może publikować, akceptować i zarządzać danymi.
  2. Zespół platformy (platform_admin, compliance_reviewer, support) ma wgląd w dane wszystkich najemców, lecz edycje przechodzą przez audytowane ścieżki.
  3. Anonimowi goście widzą jedynie cache'owane strony marketingowe.

Jak dbamy o audyt

Każda uprzywilejowana akcja trafia do logu audytowego z informacją o aktorze, działaniu, celu i uzasadnieniu. Testy SQL w supabase/tests/** pilnują, by polityki RLS trzymały się reguł, a scenariusze Playwright sprawdzają zgodność z interfejsem.

Co planujemy dalej

  • Automatyczne porównywanie polityk w CI, by wychwycić niezamierzone „rozszerzanie” uprawnień.
  • Panel moderacyjny zestawiający zdarzenia audytowe z historią rozmów.
  • Zakresowe klucze API umożliwiające integracje partnerów bez obniżania poziomu zabezpieczeń.

Pytania dotyczące bezpieczeństwa? Napisz na security@cooperate.no.

Podobała Ci się ta aktualizacja? Podziel się nią ze współpracownikami.Masz pytania? Napisz do nas na hello@cooperate.no