GH GambleHub

Kontrola dostępu i RBAC w API

1) Dlaczego kontrola dostępu API

Autoryzacja jest odpowiedzią na pytanie "czy ten aktor może wykonać tę akcję na tym zasobie teraz? ». Błędy prowadzą do wycieków BOLA/IDOR, eskalacji praw i naruszenia wymogów regulacyjnych. Celem jest zbudowanie modelu wielopoziomowego: obwód → serwis mash → zasady biznesowe, z wyraźnymi zasadami i kontrolami na poziomie obiektu.

2) Modele autoryzacji: kiedy wybrać co

RBAC (Role-Based Access Control) - role → permissions. Prosty, stabilny, ale podatny na „eksplozję roli”.
ABAC (Atrybut-Based) - decyzja w sprawie atrybutów przedmiotu/obiektu/kontekstu (kraj, poziom KYC, właściciel zasobów, ryzyko).
ReBAC (Relationship-Based) - wykres relacji (właściciel, członek zespołu, „project manager”); rozwiązuje złożone hierarchie.
Scopes (OAuth) - umowa między klientem a serwerem zasobów o „obszarze dostępu” (na przykład, 'płatności: write').
Praktyka: RBAC dla macierzy podstawowej, ABAC dla kontekstu i ograniczeń, ReBAC dla hierarchii złożonych (foldery, organizacje, limity i podakonty).

3) Taksonomia zasobów i działań

Hierarchie: 'org → projekt → portfel → transakcja'. Dziedziczenie praw od góry do dołu z możliwymi „ograniczeniami”.
Działania: CRUD + specyficzne dla domeny („zatwierdzać”, „refundować”, „rozliczać”).
Właściwości zasobów: właściciel, region, status, znaczniki ryzyka (AML/KYC), limity.
Wielopoziomowość: wszystkie rozwiązania zawierają "najemca _ id'; odmówić domyślnie.

4) Architektura: w przypadku podjęcia decyzji

PEP (Policy Enforcement Point) - strona weryfikacyjna: gateway/API-gateway, side decar mash, service itself.
PDP (Policy Decision Point) - silnik polityczny: scentralizowany (OPA-service, Cedar-engine) lub wbudowana biblioteka.
PIP (Policy Information Point) - źródła atrybutów: użytkownik/katalog ról, profil najemcy, CCP/risk, mapa własności zasobów.
PAP (Policy Administration Point) - weryfikacja polityki, wydawnictwo, audyt.

Zalecenie: scentralizowany PDP + lokalny pamięć podręczna rozwiązania w PEP; złożone kontrole obiektów w usłudze w obecności niezmienników domeny.

5) Żetony, znaczki i tożsamość

OIDC/OAuth2: "sub" (identyfikator przedmiotu), "aud' (usługa docelowa)," zakres "/" role "," lokator "," kyc _ level "," risk _ tier ".
JWT: podpis RS/ES, krótki 'exp', ponowne zwolnienie przez odświeżenie. Nie umieszczaj PII; używać „jti” do odwołania/audytu ścieżki.
mTLS/HMAC: usługi i partnerzy; znaczki są pobierane z katalogu przez 'client _ id'.
Urządzenie/Kontekst: IP/ASN, geo, pora dnia - zaloguj się do rozwiązania ABAC (na przykład zabraniaj pisania poza godzinami pracy).

6) Autoryzacja poziomu obiektu (BOLA-first)

Każda operacja musi odpowiedzieć na pytanie „czy właściciel/ma prawo do tego 'resource _ id'?”.

Kontrola własności: 'resource. owner_id = = przedmiot. id' lub członkostwo w „org” z rolą.
Próbki filtrowania: zawsze nakładaj zasób 'WHERE'. tenant_id =: najemca AND... '(zabezpieczenie na poziomie wiersza).
Dla operacji referencyjnych (ID w ścieżce/korpusie) - normalizacja i walidacja logiki biznesowej.

7) RBAC Design: Role, uprawnienia, zestawy

Uprawnienia - prawa atomowe: "portfel. czytać „,” portfel. napisz ',' płatność. zwrot ".
Role - nazywane zestawy uprawnień: 'admin', 'support. czytać „,” kasjer „,” oszustwo. analityk '.

Zakresy - umowa zewnętrzna dla klientów (zakres → mapowanie uprawnień)

Unikaj eksplodujących ról:
  • role bazowe + pakiety zezwoleń,
  • ograniczenia ABAC (kraj/region/najemca),
  • „Dostęp w czasie”.

8) ABAC/ograniczenia kontekstowe

Geo/jurysdykcja: zakaz pisania z krajów objętych zakazem (sankcje/przepisy).
Czas/ryzyko: "risk _ score <threshold' dla dużych operacji.
ACC/wartości graniczne: 'kyc _ level> = 2' dla szpilek> X; kontrola „chłodzenia” między transakcjami.
„Zaufane urządzenia”: wymagają mTLS dla partnerów na niebezpiecznych trasach.

9) ReBAC i wykres praw

Przydatne dla złożonych struktur biznesowych (grupy, zespoły, marki, oddziały).

Relacje: 'członek', 'administrator', 'właściciel', 'widza'.
Prawa pochodne: „widza” zasobu odziedziczonego po „członku” projektu należącego do „org”.
Przechowywanie wykresu: baza danych z matrycą relacji, usługą specjalistyczną (w duchu podejścia Zanzibar). Odpowiedzi Cache 'check (temat, relacja, obiekt)'.

10) Pamięć podręczna rozwiązania i wydajność

Pamięć podręczna PDP na poziomie PEP (na przykład w bramce) z kluczem: „sub” najemca „zasobów” action „policy _ version”.
TTL krótki (sekundy-minuty) + niepełnosprawność według zdarzeń: rola/relacja/zmiana lokatora.
Kontrole partii (luzem autz) dla list: zmniejszyć opłaty PDP.
Pomiar rozwiązań dotyczących opóźnień; podczas degradacji - wdzięku-degradacji tylko do odczytu (nigdy do pisania/pieniężnego).

11) Przykłady polityk

11. 1 znaczki JWT → szorstki PEP (pseudo-brama)

yaml
- match: { prefix: "/api/v1/wallets" }
authz:
require:
- claim: "aud"
equals: "wallet-service"
- claim: "scope"
includes_any: ["wallet. read", "wallet. write"]
context:
tenant_from: "claim:tenant"

11. 2 OPA/Rego (ABAC + BOLA)

rego package authz

default allow = false

allow {
input. action == "wallet. read"
input. subject. tenant == input. resource. tenant some role role:= input. subject. roles[_]
role == "support. read"
}

allow {
input. action == "payment. refund"
input. subject. tenant == input. resource. tenant input. subject. kyc_level >= 2 input. subject. risk_tier <= 2 input. subject. id == input. resource. owner_id # BOLA
}

11. 3 Ograniczenie jurysdykcji (polityka odmowy listy)

rego deny[msg] {
input. action == "withdraw. create"
input. context. country in {"IR","KP","SY"}
msg:= "Jurisdiction not allowed"
}

11. 4 Polityka ReBAC (pseudo)


allow(subject, "wallet. write", wallet) --
related(subject, "member", wallet. project) ∧ related(subject, "admin", wallet. org)   ∧ wallet. tenant == subject. tenant.

12) Zarządzanie polityką i wersją

Weryfikacja polityki („policy _ version”) i kanaryjska dla niebezpiecznych zmian.
„Suchy bieg” (decyzje dotyczące suchego biegu/cienia) - dziennik „zezwalać/zaprzeczać” bez wpływu.
Katalog zasad i migracji: Kto zmienił kiedy i dlaczego; mapowanie zdarzeń.
Testy na negatywne scenariusze (przypadki zabronione) - wymagane w CI.

13) Obserwowalność i audyt

Dzienniki decyzji: 'trace _ id',' subject ',' lokator ',' action ',' resource _ id', 'result', 'policy _ version', powód niepowodzenia.
Metryki: 'authz _ decision _ latency', 'authz _ denied _ total {action}', udział prób BOLA, cache hit-rate.
Deski rozdzielcze: najlepsze awarie przez akcje/najemców, trendy po zwolnieniach polityki.

14) Bezpieczeństwo i zrównoważony rozwój

Odmowa domyślna: brak wyraźnego uprawnienia = odmowa.
Fail-closed: gdy plik PDP jest niedostępny, krytyczny zapis → zabroniony (lub zdegradowany do „minimalnego zestawu” ściśle zweryfikowanych ról).
Lokalne „kontrole strażnicze” w ramach usług dla stałych krytyków (na przykład „najemca ”/„ właściciel”).
Minimalizacja znaków charakterystycznych w JWT; ładowanie wrażliwych atrybutów za pośrednictwem PIP przez bezpieczny kanał.

15) Szczegóły dotyczące iGaming/Finance

Role: "kasjer", "kyc. agent ',' aml. oficer „,” oszustwo. analityk ',' vip. kierownik „,” ryzyko. admin '.
Ograniczenia: transakcje płatnicze zależą od „kyc _ level”, limitów odpowiedzialnych płatności, statusu AML/sankcji.
Rejestry blokad: 'org/brand/device/payment _ instrument' - filtry ABAC na zapisie.
dzienniki audytu niezmienione dla działań KYC/AML/pin; przechowywanie zgodnie z terminami regulacyjnymi.
Partnerskie interfejsy API: mTLS + kontrakt „zakresy” na trasach, filtry geo/ASN na obwodzie.

16) Badanie i weryfikacja

Matryca negatywna: wyświetl wyraźne „zakazane” przypadki i naprawić za pomocą testów.
Autoryzacja Fuzz: zastąpienie 'lokator _ id',' owner _ id', omijanie filtrów podczas paginowania/sortowania.
Test obciążenia PDP: Sprawdź opóźnienie i zachowanie pamięci podręcznej w p95/p99.
Wydanie polityki: dry-run + canary + auto-test z oczekiwaną odmową/zezwoleniem.
Incydenty: powtórzyć żądania na stoisku z dokładną wersją zasad.

17) Antypattery

Polegać tylko na „zakresie” bez kontroli przedmiotów (BOLA).
Łączenie logiki biznesowej i kontroli praw w każdym obsługującym bez scentralizowanego modelu.
Role hardcode w UI i zaufanie rozwiązań klienta.
Brak filtrów 'najemcy '/' właściciela' w żądaniach do bazy danych (wyciek odczytuje).
Nie ma rozwiązania pamięci podręcznej niepełnosprawność podczas zmiany ról/relacji.
Długotrwałe JWT bez pamięci/rotacji.

18) Lista kontrolna gotowości Prod

  • Zdefiniowano zasoby/działania, hierarchie i wielopoziomowość.
  • Podstawowa matryca RBAC + ograniczniki ABAC, w razie potrzeby - ReBAC.
  • PDP/PEP zostały zaprojektowane; istnieje lokalny pamięć podręczna rozwiązania i jego niepełnosprawność.
  • Polityki są wersjonowane, negatywne testy scenariusza w CI.
  • Kontrole BOLA w każdym zapisie/odczytaniu do określonego "resource _ id'.
  • JWT z minimalnymi znaczkami, krótkie „exp”; audyt/przypomnienie o „jti”.
  • Mierniki/dzienniki decyzji, deski rozdzielcze, wpisy w drodze odmowy/opóźnienia.
  • Nieudane dla pisma krytycznego; tryb awaryjny jest udokumentowany.
  • Dokumentacja klienta: „zakresy”, kody błędów (401/403/404/409), przykłady.

19) TL; DR

Budowa autoryzacji BOLA-first: centralna pamięć podręczna PDP +, RBAC jako podstawa, ABAC dla kontekstu, ReBAC dla relacji. Wszystkie wnioski są w kontekście "najemcy" i konkretnego "resource _ id'; odmowa domyślnie, krótki JWT, filtry obiektów w bazie danych. Zasady wersji i testów, pomiar opóźnienia/zaprzeczenia, powtórki incydentów. iGaming - indywidualne role (KYC/AML/kasa), twarde ograniczenia ABAC i niezmienny audyt.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.