GH GambleHub

Rol hereketlendirijisi

1) Ygtyýarlylandyrmagyň modelleri

RBAC (Role-Based Access Control): subýekt rollary alýar, rollar hukuklar (permissions) bilen baglanyşykly. Diňe dolandyrmak, adaty borçlar üçin gowy.
ABAC (Attribute-Based Access Control): çözgüt subýektiň atributlaryna, çeşmesine, hereketine we gurşawyna (wagt, IP, sebit, töwekgelçilik) baglydyr. Çeýe we çylşyrymly düzgünlere esaslanýar.
Gibrid RBAC + ABAC: rollar "esasy" ukyby berýär, atributlar ony daraldýar (conditions).
(Goşmaça) ReBAC/Relationship-based: gatnaşyk grafasy (eýesi, toparyň agzasy, delegat), resminamalar we org-gurluşlar üçin peýdalydyr.

2) Arhitektura: PDP/PEP we akymlar

PEP (Policy Enforcement Point): çözgüdiň ulanylýan ýeri (API-şlýuz, arka usul, SQL-gatlak, UI).
PDP (Policy Decision Point): syýasatlar we atributlar boýunça 'ALLOW/DENY' hasaplaýan hyzmat/kitaphana.
PIP (Policy Information Point): atributlaryň çeşmeleri (IdP/profil, çeşme meta-maglumatlary, töwekgelçilik-skor, geo).
PAP (Policy Administration Point): dolandyryş interfeýsi/syýasatçylaryň ammary (wersiýalar, taslamalar, neşir).

Akym: haýyş → PEP kontekstini emele getirýär → PDP ýitirilen atributlary çekýär (PIP arkaly) → çözgüdi hasaplaýar → PEP ulanýar (rugsat/gadagan/meýdançalary kesmek) → audit.

3) Maglumatlaryň nusgasy

Mazmuny (iň az):
  • `subject` (user/service) с атрибутами: `tenant_id`, `roles`, `departments`, `risk_level`, `mfa_verified`, `scopes`, `claims`.
  • 'resource': 'type', 'owner _ id', 'tenant _ id', 'classification' (public/confidential), 'region', 'tags'.
  • `action`: `read`, `write`, `delete`, `export`, `approve`, `impersonate` и т. п.
  • `environment`: `time`, `ip`, `device`, `geo`, `auth_strength`, `business_context` (канал, тариф).
RBAC bölegi:
  • 'roles (id, tenant_id, name, inherits [])' - iýerarhiýalary we şablonlary goldaýar.
  • `permissions(id, resource_type, action, constraint?)`.
  • `role_permissions(role_id, permission_id)`.
  • 'assignments (subject_id, role_id, skope)' - scope: global/taslama/obýekt.
ABAC-bölüm (syýasat):
  • `policy(id, effect=allow|deny, target: {subject, resource, action}, condition: expr, priority, version, status)`.

4) Çözgütleri kabul etmegiň ýörelgeleri

Deny-overrides: aç-açan gadaganlyklar rugsatlardan ileri tutulýar.
Least Privilege (PoLP): iň az zerur elýeterliligi beriň, şertleriň üsti bilen giňeldiň.
Separation of Duties (SoD): rollaryň/hereketleriň kombinasiýalaryny gadagan etmek (mysal üçin, "töleg döretdi" ≠ "ýatyrdy").
Context-aware: ýokary töwekgelçilikde talaplary güýçlendiriň (MFA ýok, şübheli IP).
Determinism: birmeňzeş kontekst → birmeňzeş jogap; syýasatyň wersiýasyny journalurnalda ýazyň.

5) Satuw patternleri

5. 1 gibrid RBAC → ABAC (kondisioner)

Rollar "adaty hukuk" berýär, ABAC şertleri:
yaml
Declarative Policy Example
- id: doc_read_own effect: allow target: { action: read, resource. type: document, subject. roles: ["editor","owner"] }
condition: resource. owner_id == subject. id

- id: doc_read_team effect: allow target: { action: read, resource. type: document, subject. roles: ["editor","viewer"] }
condition: subject. team_id in resource. shared_team_ids

- id: doc_read_confidential_external effect: deny target: { action: read, resource. type: document }
condition: resource. classification == "confidential" and subject. tenant_id!= resource. tenant_id priority: 100 # deny high priority

5. 2 Row/Field-Level Security

DB derejesinde: RLS syýasaty ('tenant _ id', 'owner _ id').
API derejesinde: kolleksiýalary süzüň we 'allow: read_sensitive_fields' ýok bolsa, meýdanlary gizläň.

5. 3 "step-up" çözgütleri

Tassyklama güýjüne garaşlylyk:

allow if action == "export" and subject. mfa_verified == true else deny

5. 4 Wagtlaýyn rugsat

TTL grantlary: 'assignment. expires_at', giriş "penjireleri" (resurs sebitiniň iş wagty).

6) Öndürijilik we kesmek

Gysga TTL bilen '(subject_hash, resource_key, action, policy_version)' açary boýunça çözgütler keşi (decision cache).
Subýektiň atributlarynyň edge-keşi (tokende claims) + resurs atributlarynyň lazy-fetch.
Incremental invalidation: wakalar boýunça maýyplyk (rollaryň üýtgemegi, syýasatyň üýtgemegi, çeşmäniň "confidential" -a geçirilmegi).
Batch-barlaglar: sanawlar üçin - PDP-ni setirde çekmezlik üçin "süzgüç" (policy-predicate pushdown) bilen baha beriň.

7) Köp kärende (Multi-tenant)

Her tablisada - 'tenant _ id'; Syýasatlar kärendäniň içinde girişi çäklendirýär.
Kärende dolandyryjylary diňe öz kärende rollaryny/hukuklaryny dolandyrýarlar.
Kärende elýeterliligi - diňe açyk çakylyklar/açyk deny-override bilen şering arkaly.

8) Dolandyryş we syýasatlaryň durmuş sikli

Wersiýa: 'policy. PDP jogapynda version ', auditde saklaň.
Gurşaw: draft → canary (traffigiň/kölegäniň bölekleri) → prod.
Test matrix: esasy rollar/atributlar boýunça hakykat tablisalary (şertnama synaglary).
Change management: Howpsuzlyk/Komplayans syny bilen syýasata serjer-rekvestler.

9) Audit we gözegçilik etmek

Журнал решений: `decision_id`, `subject`, `action`, `resource_ref`, `result`, `matched_policies`, `policy_version`, `attributes_digest`.
Metrikler: QPS PDP, gizlinlik p95, hit-rate kesiş, deny paýy, step-up ýygylygy, SoD hadysalary.
Yzarlamalar: PDP çagyryşyna span; API soragy bilen baglanyşyk.
Replay: syýasatyň täze wersiýasynda taryhy çözgütleri "täzeden oýnamak" ukyby (safety check).

10) Autentifikasiýa we bellikler bilen integrasiýa

Identity - IdP (OIDC/SAML). Bellikler iň az atributlary göterýär: 'sub', 'tenant', 'roles', 'auth _ time', 'amr', 'scopes'.
ABAC üçin belligi çişirmezlik üçin serwer tarapdan (PIP) "agyr" alamatlary çekiň.
Gol çekilen resource tokens (capability/çakylyk) - berk çäklendirilen tabşyryklar üçin.

11) PDP psevdocode (ýönekeýleşdirilen)

python def decide(subject, resource, action, env, policies):
matched = []
effect = "deny"
Explicit DENYs with priority for p in sorted (policies, key = lambda x: x.priority, reverse = True):
if target_matches(p. target, subject, resource, action):
if eval_condition(p. condition, subject, resource, env):
matched. append(p. id)
if p. effect == "deny":
return Decision("deny", matched, p. version)
Looking for ALLOW for p in policies:
if target_matches(p. target, subject, resource, action):
if eval_condition(p. condition, subject, resource, env):
matched. append(p. id)
effect = "allow"
break return Decision(effect, matched, max_version(matched, policies))

12) Anti-patternler

"Rol = sahypa" (mowzuk meýdanynyň modeli bolmadyk ýüzlerçe kiçi rol).
Syýasatlary diňe wersiýalarsyz/auditsiz kodda saklamak.
Deny-override we SoD → galplyk töwekgelçiliginiň ýokarlanmagy.
Düzgünlerdäki 'user _ id' gaty sanawlary (atributlaryň/gatnaşyklaryň ýerine).
Diňe UI-de süzgüç bar bolsa, maglumat derejesinde (RLS) süzgüçiň ýoklugy.
Rollary el skriptleri arkaly senkronlaşdyrmak.

13) Wakalar we reseptler

13. 1 Dereje örtügi:


allow read invoice when subject. roles includes "support"
mask fields ["card_last4", "billing_email"] unless subject. role == "finance"

13. 2 Diňe MFA-dan maglumatlary eksport etmek:


allow export if subject. mfa_verified and env. ip in cidr("203. 0. 113. 0/24")

13. 3 SoD:


deny approve_payment if subject. performed_actions includes ("create_payment" within last 24h)

13. 4 Ygtyýarnama (çäklendirilen belgi):

Capability-tokeninde' resource _ id', 'actions = [" read"]', 'expires _ at', 'aud' bar. PEP goly we möhleti barlaýar.

14) Synag

Syýasatçylaryň bitewi synaglary: esasy kombinasiýalar boýunça hakykat tablisalary.
Property-based: "deşikleri" tapmak üçin tötänleýin atributlary döretmek.
Golden-tests: Möhüm endpointler üçin çözgütler toplumyny düzetmek.
Canary/Shadow: gapma-garşylyklary logirlemek bilen syýasatlaryň köne we täze wersiýalaryna paralel baha bermek.

15) "Binagärlik we teswirnamalar" bölüminiň baglanyşykly ukyplary

Tassyklamak we ygtyýarlandyrmak (OIDC/OAuth2)

Ylalaşyklary dolandyrmak

Açarlary bellemek we dolandyrmak

Syn edilişi: loglar, metrikler, yzarlamalar

Geo-marşrut we lokalizasiýa

At Rest/In Transit şifrlemek

16) Arhitektoryň çek-sanawy

1. Mowzuk rollary we olaryň iýerarhiýalary kesgitlenýärmi?
2. Gibrid model barmy: rollar + atributlarda şertler?
3. PDP deny-overrides, SoD we step-up bilen amala aşyryldymy?
4. PEP nirede? (şlýuz, arka, DB, UI) - hemme ýerde birmeňzeşmi?
5. Çözgütler keş we wakalar boýunça maýyplyk sazlandyňyzmy?
6. Syýasatçylar wersiýa edilýärmi, synagdan geçirilýärmi?
7. Çözgütleriň, metrikalaryň we yzarlamalaryň barlagy girizilýärmi?
8. Köp kärende we RLS/field-masking goldanýarmy?
9. Wakalar we syýasatçylaryň regressiýasy üçin runbook barmy?

Netije

RBAC dolandyrylmagyny üpjün edýär, ABAC - kontekst we takyklyk. Rollary häsiýetli şertler bilen birleşdirmek, PDP/PEP-i bölmek, syýasatlary kesmek, audit we synagdan geçirmek arkaly, platforma ukyby hökmünde ygtyýarlylygy gurýarsyňyz: azyk we kadalaşdyryjy talaplar üçin öňünden aýdyp boljak, barlanylýan we ulaldylýan.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.