एपीआई में अभिगम नियंत्रण और आरबीएसी
1) एपीआई एक्सेस कंट्रोल क्यों
प्राधिकरण इस सवाल का जवाब है "क्या यह अभिनेता अब इस संसाधन पर यह कार्रवाई कर सकता है? ». त्रुटियां बोला/आईडीओआर लीक, अधिकारों की वृद्धि और नियामक आवश्यकताओं का उल्लंघन करती हैं। लक्ष्य एक बहु-स्तरीय मॉडल का निर्माण करना है: परिधि → सेवा मैश → व्यापार नियम, स्पष्ट नीतियों और वस्तु स्तर पर जाँच के साथ।
2) प्राधिकरण मॉडल: कब चुनें
RBAC (रोल-बेस्ड एक्सेस कंट्रोल) - भूमिकाएँ → अनुमतियाँ। सरल, स्थिर, लेकिन "भूमिका विस्फोट" का खतरा है।
ABAC (गुण-आधारित) - विषय/वस्तु/संदर्भ (देश, KYC स्तर, संसाधन स्वामी, जोखिम) की विशेषताओं पर निर्णय।
ReBAC (रिलेशनशिप-बेस्ड) - रिलेशनशिप ग्राफ (मालिक, टीम के सदस्य, "प्रोजेक्ट मैनेजर"); जटिल पदानुक्रम को हल करता है।
स्कोप्स (OAuth) - "एक्सेस एरिया" (उदाहरण के लिए, 'भुगतान: राइट') के बारे में ग्राहक और संसाधन सर्वर के बीच एक अनुबंध।
अभ्यास: बुनियादी मैट्रिक्स के लिए RBAC, संदर्भ और बाधाओं के लिए ABAC, जटिल पदानुक्रम के लिए ReBAC (फ़ोल्डर, संगठन, सीमा और पोडियाकाउंट)।
3) संसाधनों और कार्यों का वर्गीकरण
पदानुक्रम: 'org → प्रोजेक्ट → वॉलेट → लेनदेन'। संभावित "सीमाओं" के साथ ऊपर से नीचे तक अधिकारों की विरासत।
क्रियाएं: CRUD + डोमेन-विशिष्ट ('अनुमोदन', 'वापसी', 'समझौता')।
संसाधन गुण: मालिक, क्षेत्र, स्थिति, जोखिम टैग (एएमएल/केवाईसी), सीमा।
मल्टी-टेनेंसी: सभी समाधानों में 'किरायेदार _ आईडी' होता है; इनकार-दर-डिफ़ॉल्ट।
4) वास्तुकला: जहां निर्णय लिया जाता है
PEP (नीति प्रवर्तन बिंदु) - सत्यापन स्थल: गेटवे/एपीआई-गेटवे, साइडकार मैश, सेवा स्वयं।
पीडीपी (नीति निर्णय बिंदु) - नीति इंजन: केंद्रीकृत (ओपीए-सेवा, देवदार-इंजन) या अंतर्निहित पुस्तकालय।
PIP (नीति सूचना बिंदु) - विशेषता स्रोत: उपयोगकर्ता/भूमिका निर्देशिका, किरायेदार प्रोफ़ाइल, CCP/जोखिम, संसाधन स्वामित्व मानचित्र।
पीएपी (नीति प्रशासन बिंदु) - नीति संस्करण, प्रकाशन, लेखा परीक्षा।
सिफारिश: पीईपी में केंद्रीकृत पीडीपी + स्थानीय समाधान कैश; डोमेन आक्रमणकारियों की उपस्थिति में सेवा में जटिल वस्तु की जांच।
5) टोकन, टिकट और पहचान
OIDC/OAuth2: 'उप' (विषय पहचानकर्ता), 'aud' (लक्ष्य सेवा), 'स्कोप '/' भूमिकाएं', 'किरायेदार', 'kyc _ level', 'जोखिम _ tier'।
JWT: RS/ES हस्ताक्षर, लघु 'exp', रिफ्रेश द्वारा फिर से रिलीज़। PII मत डालो; निरसन/ट्रैक ऑडिट के लिए 'जेटी' का उपयोग करें।
mTLS/HMAC: सेवा-से-सेवा और भागीदार; टिकटों को 'client _ id' द्वारा निर्देशिका से खींचा जाता है।
उपकरण/संदर्भ: आईपी/एएसएन, जियो, एबीएसी समाधान के लिए दिन का समय - लॉगिन (उदाहरण के लिए, कार्य घंटों के बाहर लिखने पर प्रतिबंध)।
6) ऑब्जेक्ट-स्तरीय प्राधिकरण (BOLA-first)
प्रत्येक ऑपरेशन को प्रतिक्रिया देनी चाहिए "क्या वह विषय है जिसका स्वामी/को इस 'संसाधन _ आईडी' का अधिकार है?"।
स्वामित्व की जाँच: 'संसाधन। owner_id = = विषय। एक भूमिका के साथ 'org' में id 'या सदस्यता।
फ़िल्टर नमूने: हमेशा ओवरले 'जहाँ संसाधन। tenant_id =: किरायेदार और... '(पंक्ति-स्तरीय सुरक्षा)।
संदर्भ कार्यों के लिए (पथ/निकाय में आईडी) - व्यापार तर्क को सामान्य और मान्य करें।
7) आरबीएसी डिजाइन: भूमिकाएँ, अनुमतियाँ, सेट
अनुमतियाँ - परमाणु अधिकार: 'बटुआ। पढ़ें ',' बटुआ। ',' भुगतान लिखें। रिफंड '।
भूमिकाएँ - नामित अनुमति सेट: 'व्यवस्थापक', 'समर्थन। पढ़ें ',' कैशियर ',' धोखाधड़ी। विश्लेषक '।
स्कोप - ग्राहकों के लिए बाहरी अनुबंध (scope→permissions मैपिंग)
विस्फोट भूमिकाओं से बचें:- आधार भूमिकाएं + अनुमति पैक,
- ABAC प्रतिबंध (देश/क्षेत्र/किरायेदार),
- "जस्ट-इन-टाइम एक्सेस"।
8) ABAC/संदर्भ बाधाएं
भू/क्षेत्राधिकार: प्रतिबंधित देशों (प्रतिबंध/नियामक) से प्रतिबंध लिखना।
समय/जोखिम: बड़े ऑपरेशन के लिए 'जोखिम _ स्कोर <दहलीज'।
एसीसी/सीमाएं: पिन> एक्स के लिए 'kyc _ level> = 2'; लेनदेन के बीच "कूलिंग डाउन" का नियंत्रण।
"विश्वसनीय उपकरणों": खतरनाक मार्गों पर भागीदारों के लिए एमटीएलएस की आवश्यकता होती है।
9) ReBAC और अधिकारों का ग्राफ
जटिल व्यवसाय संरचनाओं (समूह, टीम, ब्रांड, शाखाओं) के लिए उपयोगी।
संबंध: 'सदस्य', 'व्यवस्थापक', 'मालिक', 'दर्शक'।
व्युत्पन्न अधिकार: संसाधन का 'दर्शक' परियोजना के 'सदस्य' से विरासत में मिला है जो 'org' से संबंधित है।
ग्राफ भंडारण: एक रिश्ते मैट्रिक्स के साथ एक डेटाबेस, एक विशेष सेवा (ज़ांज़ीबार दृष्टिकोण की भावना में)। Cache 'check (विषय, संबंध, वस्तु)' प्रतिक्रियाएँ।
10) समाधान कैश और प्रदर्शन
PEP स्तर पर PDP कैश (उदाहरण के लिए, गेटवे में) कुंजी के साथ: 'उप' किरायेदार 'संसाधन क्रिया' नीति _ संस्करण।
टीटीएल शॉर्ट (सेकंड-मिनट) + घटना द्वारा विकलांगता: भूमिका/संबंध/किरायेदार परिवर्तन।
सूचियों के लिए बैच चेक (थोक लेख): पीडीपी शुल्क कम करें।
विलंबता समाधान मापना; गिरावट के दौरान - केवल पढ़ ने के लिए सुंदर-गिरावट (लिखने/मौद्रिक के लिए कभी नहीं)।
11) नीतिगत उदाहरण
11. 1 JWT टिकट - किसी न किसी PEP (छद्म प्रवेश द्वार)
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 ओपीए/रेगो (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 क्षेत्राधिकार प्रतिबंध (इनकार-सूची नीति)
rego deny[msg] {
input. action == "withdraw. create"
input. context. country in {"IR","KP","SY"}
msg:= "Jurisdiction not allowed"
}
11. 4 ReBAC नीति (छद्म)
allow(subject, "wallet. write", wallet) --
related(subject, "member", wallet. project) ∧ related(subject, "admin", wallet. org) ∧ wallet. tenant == subject. tenant.
12) नीति और संस्करण प्रबंधन
खतरनाक परिवर्तनों के लिए नीति संस्करण ('नीति _ संस्करण') और कैनरी।
"ड्राई-रन" (ड्राई-रन/शैडो निर्णय) - लॉग 'अनुमति/इनकार' बिना प्रभाव के।
नीति और प्रवासन निर्देशिका: कब और क्यों बदल गया; घटनाओं का मानचित्रण।
नकारात्मक परिदृश्यों (निषिद्ध मामलों) के लिए परीक्षण - सीआई में आवश्यक।
13) अवलोकन और लेखा परीक्षा
निर्णय लॉग: 'ट्रेस _ आईडी', 'विषय', 'किरायेदार', 'क्रिया', 'रिसोर्स _ आईडी', 'परिणाम', 'नीति _ संस्करण', असफलता का कारण.
मेट्रिक्स: 'authz _ devence _ latency', 'authz _ dened _ total {action}', BOLA प्रयासों का हिस्सा, कैश हिट-रेट।
डैशबोर्ड: कार्रवाई/किरायेदारों द्वारा शीर्ष विफलताएं, नीति जारी होने के बाद रुझान।
14) सुरक्षा और स्थिरता
Deny-by-default: कोई स्पष्ट अनुमति = इनकार नहीं।
विफल-बंद: जब पीडीपी अनुपलब्ध है, तो महत्वपूर्ण लेखन - निषिद्ध (या सख्ती से सत्यापित भूमिकाओं के "न्यूनतम सेट" के लिए अपमानित)।
महत्वपूर्ण आक्रमणकारियों के लिए सेवाओं के भीतर स्थानीय "गार्ड-चेक" (उदाहरण के लिए, 'किरायेदार '/' मालिक')।
JWT में हॉलमार्क को कम करना; एक सुरक्षित चैनल पर PIP के माध्यम से संवेदनशील विशेषताओं को लोड करें।
15) आईगेमिंग/वित्त की विशिष्टताएं
भूमिकाएँ: 'कैशियर', 'kyc। एजेंट ',' aml। अधिकारी ',' धोखाधड़ी। विश्लेषक ',' vip। प्रबंधक ',' जोखिम। व्यवस्थापक '।
प्रतिबंध: भुगतान लेनदेन 'kyc _ level', जिम्मेदार भुगतानों की सीमा, एएमएल स्थिति/प्रतिबंधों पर निर्भर करता है।
लॉक रजिस्टर: 'org/brand/device/payne _ instrument' - ABAC फिल्टर ऑन राइट।
केवाईसी/एएमएल/पिन क्रियाओं के लिए अपरिवर्तित लेखा परीक्षा लॉग; नियामक समय सीमा के अनुसार भंडारण।
पार्टनर एपीआई: एमटीएलएस + मार्गों पर 'स्कोप', परिधि पर भू/एएसएन फिल्टर।
16) परीक्षण और सत्यापन
नकारात्मक-मैट्रिक्स: सूची स्पष्ट "निषिद्ध" मामलों और परीक्षणों के साथ ठीक करती है।
Fuzz प्राधिकरण: 'tenant _ id' का प्रतिस्थापन, 'ofsor _ id', paginating/sorting के दौरान फ़िल्टर को दरकिनार करना।
पीडीपी लोड टेस्ट: p95/p99 पर कैश की विलंबता और व्यवहार की जांच करें।
नीति रिलीज: अपेक्षित इनकार/अनुमति के साथ ड्राई-रन + कैनरी + ऑटो-टेस्ट।
घटनाएं: नीतियों के सटीक संस्करण के साथ स्टैंड पर फिर से अनुरोध।
17) एंटीपैटर्न
बिना ऑब्जेक्ट चेक (BOLA) के सिर्फ 'स्कोप' पर भरोसा करें।
बिना केंद्रीकृत मॉडल के प्रत्येक हैंडलर में बिजनेस लॉजिक और राइट्स चेक मिलाएं।
UI में हार्डकोड भूमिकाएँ और क्लाइंट समाधान पर भरोसा करें।
डेटाबेस (लीकी रीड्स) के अनुरोध में 'किरायेदार '/' मालिक' फिल्टर की अनुपस्थिति।
भूमिकाओं/संबंधों को बदलते समय कोई कैश समाधान विकलांगता नहीं है।
रिकॉल/रोटेशन के बिना लंबे समय तक रहने वाले JWT।
18) प्रोड रेडीनेस चेकलिस्ट
- संसाधन/गतिविधियाँ, पदानुक्रम और बहु-किरायेदारी को परिभाषित किया गया है।
- बेसिक RBAC मैट्रिक्स + ABAC लिमिटर, जहां जरूरत है - ReBAC।
- पीडीपी/पीईपी डिजाइन किए गए हैं; एक स्थानीय समाधान कैश और इसकी विकलांगता है।
- नीतियां सीआईआई में नकारात्मक परिदृश्य परीक्षण हैं।
- BOLA प्रत्येक लिखने/पढ़ने में एक विशिष्ट 'संसाधन _ id' की जाँच करता है।
- न्यूनतम टिकटों के साथ JWT, लघु 'exp'; 'जेटीआई' पर ऑडिट/रिकॉल करें।
- मेट्रिक्स/निर्णय लॉग, डैशबोर्ड, इनकार/विलंबता द्वारा अलर्ट।
- महत्वपूर्ण लेखन के लिए असफल-बंद; फॉलबैक मोड प्रलेखित है।
- ग्राहक प्रलेखन: 'स्कोप्स', त्रुटि कोड (401/403/404/409), उदाहरण।
19) टीएल; डीआर
बोला-पहला प्राधिकरण बनाएं: केंद्रीय पीडीपी + समाधान कैश, आरबीएसी आधार के रूप में, संदर्भ के लिए एबीएसी, रिश्तों के लिए आरबीएसी। सभी अनुरोध 'किरायेदार' और एक विशिष्ट 'संसाधन _ आईडी' के संदर्भ में हैं; डेटाबेस में इनकार-दर-डिफ़ॉल्ट, लघु JWT, ऑब्जेक्ट फ़िल्टर। संस्करण और परीक्षण नीतियां, विलंबता/इनकार को मापना, घटनाओं को फिर से करना। आईगेमिंग के लिए - व्यक्तिगत भूमिकाएं (केवाईसी/एएमएल/नकद रजिस्टर), हार्ड एबीएसी लिमिटर और अपरिवर्तनीय ऑडिटिंग।