Մուտքի վերահսկումը և RBAC API
1) Ինչո՞ ւ է API մուտքի վերահսկումը AP
Հեղինակային իրավունքը պատասխանն է այն հարցին, թե արդյոք այս դերասանը կարող է կատարել այս գործողությունը հիմա այս ռեսուրսի վրա։ ». Սխալները հանգեցնում են BOLA/IDOR արտանետումների, իրավունքների սրման և կարգավորողների պահանջների խախտման։ Նպատակը բազմաշերտ մոդել կառուցելն է 'պարիմետրը բացատրում է բիզնես կանոնները, ակնհայտ քաղաքական գործիչներին և ստուգումներին օբյեկտի մակարդակում։
2) Հեղինակային իրավունքի մոդելներ. Երբ ինչ-որ բան ընտրել
RBAC (Role-Based Systel Systel) - ռուսական լուծման դերերը։ Պարզ, կայուն, բայց հակված է «դերերի պայթյունի»։
ABAC (Attribast-Based) - լուծումը սուբյեկտի/օբյեկտի/կոնտեքստի (երկիրը, KYC մակարդակը, ռեսուրսների սեփականատերը, ռիսկը)։
ReBAC (Relenship-Based) - հարաբերությունների հաշվարկը (սեփականատերը, թիմի անդամը, «նախագծի ղեկավարը»); լուծում է բարդ հիերարխիաները։
Scopes (OAuth) - հաճախորդի և ռեսուրս-տեղեկատվության միջև «մուտքի գոտի» (օրինակ ՝ «payments: write»)։
Պրակտիկա 'RBAC-ը մատրիցի, ABAC-ի համար համատեքստում և սահմանափակումների համար, ReBAC բարդ հիերարխիաների համար (թղթապանակներ, կազմակերպություններ, լիմիտներ և պոդկաունտներ)։
3) Ռեսուրսների և գործողությունների տաքսոնոմիա
Հիերարխիաներ ՝ «org project project wallet pro transaction»։ Վերևից ներքև իրավունքների ժառանգությունը հնարավոր «սահմանափակողների» հետ։
Գործողությունները ՝ CRUD + domain-հատուկ («approve», «refund», «settle»)։
Ռեսուրսների հատկությունները 'սեփականատերը, տարածաշրջանը, կարգավիճակը, ռիսկի թեգերը (AML/KYC), սահմանները։
Բազմապատկություն 'բոլոր լուծումները պարունակում են «tenium _ id»; խաչաձև-տենանտային հարցումների արգելքը լռելյայն (deny-by-international)։
4) Ճարտարապետություն 'որտե՞ ղ է որոշում կայացվում
PEP (Policy Enforcium Point) - ստուգման տեղը 'դարպաս/API-gatway, sidecar Masha, ծառայություն։
PDP (Policy Decision Point) - քաղաքական շարժիչ, կենտրոնացված (OPA-ծառայություն, Cedar-շարժիչ) կամ ներկառուցված գրադարան։
PIP (Policy Information Point) - ատրիբուտների աղբյուրներ 'օգտագործողների/դերերի կատալոգը, tenault պրոֆիլը, KUS/ռիսկը, ռեսուրսների քարտեզը։
PAP (Policy Administration Point) - քաղաքական, հրապարակման, աուդիտի տարբերակների կառավարումը։
Առաջարկություն 'կենտրոնացված PDP + տեղական լուծումների քեշը PEP-ում; ծառայության բարդ օբյեկտի ստուգումներ, եթե առկա են հիբրիդային ինվարանտներ։
5) Տոկենները, կլեյմաները և ինքնությունը
OIDC/OAuth2: «sub» (ռուսական սուբյեկտ), «aud» (ռուսական ծառայություն), «scope »/« roles», «tenae», «kyc _ level», «risk _ tier»։
JWT: RS/ES ստորագրություն, կարճ «exp», որը թարգմանվել է refresh-ով։ Մի դրեք PII; օգտագործեք 'jti' հետ կանչելու/trak-2019։
MTSA/HMAC 'ծառայություն-ծառայություն և գործընկերներ; կլեյմերը ձգվում են կոդից «client _ id»։
Device/Exprest: IP/ASN, geo, օրվա ժամանակը - ABAC լուծումը (օրինակ, write արգելքը աշխատանքային ժամերից դուրս)։
6) Օբյեկտի մակարդակների հեղինակային իրավունքը (BOLA-first) (BOLA-first)
Յուրաքանչյուր վիրահատություն պետք է պատասխանի "արդյո՞ ք սուբյեկտը սեփականատեր է/արդյոք իրավունք ունի այս" resource _ id "։
Սեփականության ստուգումը 'resource։ owner_id == subject. id 'կամ «org» -ի անդամակցությունը դերի հետ։
Ֆիլտրային ընտրություն. Միշտ պարտադրեք «WHMS resource»։ tenant_id =:tenant AND...` (row-level security).
Հղման վիրահատությունների համար (ID ճանապարհին/մարմնում) - նորմալիզացրեք և վալիդիզացրեք բիզնես տրամաբանությունը։
7) RBAC նախագծումը 'դերեր, լուծումներ, հավաքածուներ
Թույլտվությունները (permissions) ատոմային իրավունքներ են ՝ «wallet»։ read`, `wallet. write`, `payment. refund`.
Դերերը 'անվանված կոմպոզիցիաների հավաքածուներ' "admin", "supert. read`, `cashier`, `fraud. analyst`.
Scopes-ը հաճախորդների համար արտաքին պայմանագիր է (meping scope permissions)։
Խուսափեք դերերի պայթյունից
հիմնական դերերը + «գերակայություններ» (permission packs),
Սահմանափակումներ ABAC (երկիր/տարածաշրջան/տենանտ),
«Ժամանակավոր կոմպոզիցիաները» (Just-In-Time), գործողության ժամանակահատվածը)։
8) AVAS/համատեքստային սահմանափակումներ
Գեո/միգրացիա. Արգելված երկրներից write արգելքը (սանկցիաներ/կարգավորող)։
Ժամանակը/ռիսկը '«risk _ score KUS/limits: «kyc _ level> = 2» եզրակացության համար> X; գործարքների միջև «կենտրոնացման» վերահսկումը։ «Վստահելի սարքեր» 'պահանջել mTRK գործընկերների համար վտանգավոր երթուղիներում։ 9) ReBAC-ը և ճիշտ գրաֆիկը Օգտակար է բարդ բիզնեսի կառուցվածքների համար (խմբեր, թիմեր, բրենդեր, ֆիլալներ)։ Հարաբերությունները '«mem.ru», «admin», «owner», «viewer»։ Արտադրական իրավունքները '«viewer» ռեսուրսը ժառանգվում է «mem.ru» նախագծից, որը պատկանում է «org»։ Գրաֆիկի պահեստ 'BD հարաբերությունների մատրիցայի հետ, հատուկ ծառայություն (Zanzibar-մոտեցման ոգով)։ Cashirurek 'kt (wwww.ject, relation, object) "։ 10) Որոշումներ և արտադրողականություն Kash PDP-ը PEP-ի մակարդակում (օրինակ, դարպասի մեջ) բանալին '«sub' tenault 'resource' action 'policy _ version»։ TTL-ը կարճ է (վայրկյան-րոպե) + հաշմանդամություն 'դերերի/հարաբերությունների/թենիսի փոփոխություն։ Batch-ստուգումները (bulk authz) ցուցակների համար 'նվազեցնում են PDP աղյուսակները։ Չափեք latency լուծումները։ քայքայման դեպքում 'graceful-degradation միայն read-ի համար (երբեք write/փողի համար)։ 11) Քաղաքական օրինակներ 11. 1 JWT-cleims - կոպիտ PEP (կեղծ-գեյթվեյ) 11. 2 OPA/Rego (ABAC + BOLA) 11. 3 Իրավասության սահմանափակումը (քաղաքականությունը deny-list) 11. 4 ReBAC քաղաքականություն (կեղծ) 12) Քաղաքական կառավարումը և տարբերակները Քաղաքական տարբերակումը («policy _ version») և կանարեթը վտանգավոր փոփոխությունների համար։ «Չոր եղջյուրները» (wwww.y-run/shadow decisions) նյութափոխանակությունն է 'allow/deny' առանց ազդեցության։ Քաղաքական և միգրացիաների կատալոգը 'ով, երբ և ինչու փոխեց։ համեմատություն միջադեպերի հետ։ Բացասական սցենարների թեստերը (արգելված քեյսները) պարտադիր են CI-ում։ 13) Դիտողությունն ու աուդիտը Որոշումների լոգները ՝ «trace _ id», «www.ject», «ten.ru», «resource _ id», «resorts», «policy _ version», մերժման պատճառը։ Մետրիկները ՝ «authz _ decision _ latency», «authz _ denied _ total + action +», BOLA-փորձարկումների մասը, քեշ-hit-rate։ Դաշբորդները 'գործողությունների լավագույն մերժումները/տենանտները, օրինագծից հետո միտումները։ 14) Անվտանգություն և կայունություն Deny-by-international-ը 'ակնհայտ լուծման բացակայությունը = արգելքը։ Fail-closed: PDP-ի անհասանելիության դեպքում կրիտիկական write-ը բացատրում է արգելքը (կամ «նվազագույն հավաքածուի» դեգրադացիան խստորեն ստուգված դերերի)։ Տեղական «guard-ստուգումներ» ծառայությունների ներսում կրիտիկական ինվարանտների համար (օրինակ ՝ «tenault »/« owner»)։ JWT-ում կլեյմների նվազեցումը։ զգայուն ատրիբուտներ ընկերանալ PIP-ի միջոցով պաշտպանված պայմանագրով։ 15) iGaming/ֆինանսական առանձնահատկությունները Դերերը ՝ "cashier", "kyc. agent`, `aml. officer`, `fraud. analyst`, `vip. manager`, `risk. admin`. Սահմանափակումներ. Վճարման վիրահատությունները կախված են «kyc _ level» -ից, վճարումների սահմաններից, AML/2019 կարգավիճակից։ Բլոկների տրամագծերը ՝ «org/brand/device/payment _ instrument» - ABAC ֆիլտրերը write-ում։ Աուդիտ ամսագրերը անփոփոխ են KYC/AML/եզրակացության համար։ պահեստավորում համաձայն կարգավորող ժամկետների։ Գործընկեր API: mTSA + պայմանագրային «scopes» երթուղիներով, geo/ASN ֆիլտրերով պարագծի վրա։ 16) Փորձարկում և հավատարմագրում Negative-մատրիցը 'թվարկել ակնհայտ «արգելված» դեպքեր և ամրագրել թեստերը։ Հեղինակային իրավունքի ֆուզը 'փոխարինումը' «tenium _ id», «owner _ id», շրջանցելով ֆիլտրերը պագինացիայի/տեսակավորման ժամանակ։ Load-թեստ PDP: Ռուսական լատենտ և քեշի վարքագիծը p95/p99։ Քաղաքական ռելիզը 'www.y-run + canary + մեքենան սպասվող deny/allow-ից։ Միջադեպերը 'ստենդում հարցումների հավաքումը քաղաքական գործչի ճշգրիտ տարբերակով։ 17) Անտիպատերնի Ապավինել միայն «scope» -ի վրա առանց օբյեկտի ստուգումների (BOLA)։ Խառնել բիզնես տրամաբանությունը և ստուգել իրավունքները յուրաքանչյուր հենդլերում առանց կենտրոնացված մոդելի։ Hardocoding դերերը UI-ում և վստահել հաճախորդների որոշումներին։ "Tenault '/" owner" ֆիլտրերի բացակայությունը BD-ի պահանջների մեջ (leaky reads)։ Չկա քեշի լուծումների հաշմանդամություն, երբ փոխում են դերերը/հարաբերությունները։ Երկար գոյատևող JWT-ն առանց հետ կանչելու/ռոտացիայի։ 18) Չեկ-թուղթ պատրաստակամության համար 19) TL; DR Կառուցեք BOLA-first-ի հեղինակային իրավունքը 'կենտրոնական PDP + լուծումներ, RBAC որպես հիմք, ABAC ենթատեքստի համար, ReBAC հարաբերությունների համար։ Բոլոր հարցումները '«tenault» և կոնկրետ «resource _ id» համատեքստում։ deny-by-international, կարճ JWT, օբյեկտի ֆիլտրեր BD-ում։ Տարբերակեք և փորձարկեք քաղաքական գործիչները, չափեք latency/deny, միջադեպերը վերարտադրեք։ IGaming-ի համար առանձնահատուկ դերեր են (KYC/AML/ձայներիզը), կոշտ ABAC սահմանափակիչները և անփոփոխ աուդիտը։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"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
}rego deny[msg] {
input. action == "withdraw. create"
input. context. country in {"IR","KP","SY"}
msg:= "Jurisdiction not allowed"
}
allow(subject, "wallet. write", wallet) --
related(subject, "member", wallet. project) ∧ related(subject, "admin", wallet. org) ∧ wallet. tenant == subject. tenant.