GH GambleHub

Rol mühərriki

1) Avtorizasiya modelləri

RBAC (Role-Based Access Control): subyekt rolları alır, rollar hüquqları ilə bağlıdır (permissions). Sadəcə idarə, tipik vəzifələr üçün yaxşı.
ABAC (Attribute-Based Access Control): həll subyektin atributları, resurs, fəaliyyət və mühit (vaxt, IP, region, risk) asılıdır. Çevik və mürəkkəb qaydalara ölçülür.
Hibrid RBAC + ABAC: rollar «əsas» qabiliyyət verir, atributlar onu daraldır (conditions).
(İsteğe bağlı) ReBAC/Relationship-based: əlaqələr qrafiki (sahibi, komanda üzvü, nümayəndə), sənədlər və orqan strukturları üçün faydalıdır.

2) Memarlıq: PDP/PEP və axınlar

PEP (Policy Enforcement Point): həll tətbiq yeri (API-şlyuz, backend metodu, SQL-layer, UI).
PDP (Policy Decision Point): Siyasətlər və atributlar üzrə 'ALLOW/DENY' hesablayan xidmət/kitabxana.
PIP (Policy Information Point): atribut mənbələri (IdP/profil, resurs metadata, risk-skor, geo).
PAP (Policy Administration Point): inzibati interfeys/siyasət anbarı (versiyalar, layihələr, nəşr).

Axın: sorğu → PEP kontekstini formalaşdırır → PDP çatışmayan atributları çəkir (PIP vasitəsilə) → həll hesablayır → PEP tətbiq edir (icazə vermək/qadağan etmək/sahələri kəsmək) → audit.

3) Data modeli

Mahiyyətlər (minimum):
  • `subject` (user/service) с атрибутами: `tenant_id`, `roles`, `departments`, `risk_level`, `mfa_verified`, `scopes`, `claims`.
  • 'resource' növü və atributları ilə: '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 hissəsi:
  • 'roles (id, tenant_id, name, inherits [])' - iyerarxiya və şablonları dəstəkləyin.
  • `permissions(id, resource_type, action, constraint?)`.
  • `role_permissions(role_id, permission_id)`.
  • 'assignments (subject_id, role_id, scope)' - scope: global/layihə/obyekt üzrə.
ABAC hissəsi (siyasət):
  • `policy(id, effect=allow|deny, target: {subject, resource, action}, condition: expr, priority, version, status)`.

4) Qərar qəbul etmə prinsipləri

Deny-overrides: açıq qadağalar icazələrdən daha üstündür.
Least Privilege (PoLP): minimum lazımi giriş verin, şərtlər vasitəsilə genişləndirin.
Duties Separation (SoD): rol/fəaliyyət kombinasiyalarının qadağan edilməsi (məsələn, «ödəniş yaratdı» ≠ «ləğv etdi»).
Context-aware: artan risklə tələbləri artırın (MFA yoxdur, şübhəli IP).
Determinism: eyni kontekst → eyni cavab; siyasətin versiyasını jurnalda qeyd edin.

5) Satış nümunələri

5. 1 hibrid RBAC → ABAC (kondisioner)

Rollar «default hüquq» verir, ABAC şərtləri məhdudlaşdırır:
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 səviyyəsində: RLS siyasəti ('tenant _ id', 'owner _ id').
API səviyyəsində: kolleksiyaları süzün və 'allow: read_sensitive_fields' yoxdursa, sahələri maskalayın.

5. 3 «step-up» həlləri

Autentifikasiya qüvvəsindən asılılıq:

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

5. 4 Müvəqqəti tolerantlar

TTL ilə qrantlar: 'assignment. expires_at', giriş «pəncərələri» (resurs bölgəsinin iş vaxtı).

6) Performans və caching

Cache solutions (decision cache) açar '(subject_hash, resource_key, action, policy_version)' qısa TTL ilə.
Subyekt atributlarının Edge-cache (tokendə claims) + resurs atributlarının lazy-fetch.
Incremental invalidation: hadisələrin əlilliyi (rolların dəyişdirilməsi, siyasətin dəyişdirilməsi, resursların «confidential» -a köçürülməsi).
Batch-check: siyahılar üçün - «filter» (policy-predicate pushdown) ilə PDP-ni xətt üzrə çəkməmək üçün qiymətləndirin.

7) Multi-tenant

Hər cədvəldə - 'tenant _ id'; siyasətlər kirayə daxilində girişi məhdudlaşdırır.
İcarə idarəçiləri yalnız icarə rollarını/hüquqlarını idarə edirlər.
Cross-icarə - yalnız açıq deny-override ilə açıq dəvətlər/paylaşma vasitəsilə.

8) Siyasətlərin idarə edilməsi və həyat dövrü

Versiyası: 'policy. version 'PDP cavabında, auditdə saxlayın.
Mühit: draft → canary (trafik hissələri/kölgə rejimi) → prod.
Test matrix: əsas rollar/atributlar üzrə həqiqət cədvəlləri (müqavilə testləri).
Change management: Təhlükəsizlik/komplayens rəyi ilə siyasətə merj-rekvestlər.

9) Audit və müşahidə

Журнал решений: `decision_id`, `subject`, `action`, `resource_ref`, `result`, `matched_policies`, `policy_version`, `attributes_digest`.
Metriklər: QPS PDP, gecikmə p95, hit-rate cache, deny payı, step-up tezliyi, SoD hadisələri.
İzləmə: PDP çağırışında span; API sorğusu ilə korrelyasiya.
Replay: siyasətin yeni versiyasında (safety check) tarixi həlləri «təkrarlamaq» imkanı.

10) Autentifikasiya və tokenlərlə inteqrasiya

Identity - IdP (OIDC/SAML). Tokenlər minimum atributları daşıyır: 'sub', 'tenant', 'roles', 'auth _ time', 'amr', 'scopes'.
ABAC üçün, tokeni şişirtməmək üçün serverdən (PIP) «ağır» işarələri çəkin.
Imzalanmış resource tokens (capability/dəvətlər) - ciddi məhdudlaşdırılmış nümayəndəliklər üçün.

11) PDP psevdokod (sadələşdirilmiş)

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-nümunələr

«Rol = səhifə» (mövzu sahəsi modeli olmadan yüzlərlə kiçik rol).
Siyasətləri yalnız versiyasız/auditsiz kodda saxlayın.
Deny-override və SoD → saxtakarlıq riskinin artırılması.
Qaydalarda 'user _ id' sərt siyahıları (atributlar/münasibətlər əvəzinə).
Yalnız UI-də filtr olduqda məlumat səviyyəsində (RLS) filtrasiya yoxdur.
Hadisələr və cache əlilliyi olmadan əl skriptləri vasitəsilə rolları sinxronizasiya.

13) Cases və reseptlər

13. 1 Sahə-səviyyə maskası:


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

13. 2 Yalnız MFA ilə məlumat ixracı:


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 Nümayəndəlik (məhdud token):

Capability tokenində' resource _ id', 'actions = [» read»]', 'expires _ at', 'aud' var. PEP imzanı və müddəti yoxlayır.

14) Test

Vahid siyasətçi testləri: əsas kombinasiyalara görə həqiqət cədvəlləri.
Property-based: «deşiklər» axtarmaq üçün təsadüfi atributlar yaratmaq.
Golden-tests: kritik end-pointlər üçün həllər dəsti fiksasiya.
Canary/Shadow: uyğunsuzluqların loginqi ilə siyasətin köhnə və yeni versiyalarının paralel qiymətləndirilməsi.

15) «Memarlıq və Protokollar» bölməsinin əlaqəli qabiliyyətləri

Autentifikasiya və avtorizasiya (OIDC/OAuth2)

Razılığın idarə edilməsi

Tokenizasiya və açar idarəetməsi

Müşahidə: log, metrika, izləmə

Geo-marşrutlaşdırma və lokalizasiya

At Rest/In Transit şifrələmə

16) Memarın yoxlama siyahısı

1. Mövzu rolları və onların iyerarxiyası müəyyən edilmişdir?
2. Hibrid model varmı: rollar + atributlarda şərtlər?
3. Deny-overrides, SoD və step-up ilə PDP həyata?
4. PEP haradadır? (şluz, arxa plan, DD, UI) - hər yerdə vahid?
5. Həllərin keşlərini və hadisələrə görə əlilliyi konfiqurasiya edirsiniz?
6. Siyasətçilər versiya olunur, sınaqdan keçirilir, prosesdə yuvarlanır?
7. Həllərin auditi, metrika və izləmə daxildir?
8. Multi-icarə və RLS/field-masking dəstəklənir?
9. insidentlər və regressiya siyasətçilər runbook var?

Nəticə

RBAC idarə, ABAC - kontekst və dəqiqlik təmin edir. Rolları özəllik şərtləri ilə birləşdirərək, PDP/PEP paylaşaraq, caching, audit və test siyasətlərini tətbiq edərək, platforma qabiliyyəti kimi avtorizasiya qurursunuz: proqnozlaşdırıla bilən, yoxlanıla bilən və məhsul və tənzimləmə tələbləri üçün ölçülə bilən.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

Telegram
@Gamble_GC
İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.