authentication को authorization से अलग करें, फिर एक मॉडल चुनें: role based access control सादा है और तब चलता है जब permissions गिनी चुनी roles में सिमट जाती हों, जबकि attribute आधारित नियम resource पर लगी शर्तों के लिए ठीक हैं, जैसे owner, टीम या plan। इसे एक ही जगह लागू करें, आदर्श रूप से एक policy layer जिसे handlers कॉल करें, जांच को डेटा के पास रखें ताकि कोई query rows लीक न कर सके, और हर फैसला audit के लिए लॉग करें।
इंटरव्यूअर यह क्यों पूछते हैं
इंटरव्यूअर देख रहे हैं कि आप controllers में जगह जगह if डालेंगे या कुछ ऐसा डिज़ाइन करेंगे जिसकी समीक्षा हो सके। वे policy को एक जगह लाने, डिफ़ॉल्ट से मना करने, और उस क्लासिक broken object level authorization बग की बात सुनना चाहते हैं जहां endpoint यह तो जांचता है कि यूज़र logged in है पर यह नहीं कि रिकॉर्ड उसी का है। multi tenancy इसे और तीखा कर देती है, क्योंकि एक छूटा हुआ filter किसी दूसरे कस्टमर का डेटा लीक कर देता है।
अपना जवाब कैसे स्ट्रक्चर करें
- authentication को authorization से साफ साफ अलग करें।
- एक मॉडल चुनें और इस आधार पर सही ठहराएं कि permissions असल में कैसे सिमटती हैं।
- लागू करने का काम एक ही layer में रखें, डिफ़ॉल्ट मना।
- object level जांच और auditability पर बात करें।
उदाहरण जवाब
authentication बताता है कि आप कौन हैं और edge पर एक बार होता है; authorization बताता है कि आप क्या कर सकते हैं और किसी खास resource के लिए हर request पर होता है। मॉडल के लिए मैं roles से शुरू करता हूं क्योंकि उन्हें समझना और support को समझाना आसान है, फिर वहां attribute शर्तें जोड़ता हूं जहां अकेली roles बात नहीं कह पातीं, जैसे यह यूज़र उस plan पर है जिसमें exports शामिल हैं, या यह रिकॉर्ड उसकी टीम का है। मॉडल से ज़्यादा मायने यह रखता है कि फैसला ठीक एक ही जगह हो। मुझे हर resource type के लिए एक policy function चाहिए जिसे handlers कॉल करें, डिफ़ॉल्ट मना के साथ, ताकि जांच भूल जाने वाला नया endpoint एक दिखने वाली चूक बने, चुपचाप खुला छेद नहीं। जो भी multi tenant है, वहां मैं tenant filter को data layer में धकेल देता हूं ताकि कोई query भौतिक रूप से दूसरे tenant की rows लौटा ही न सके, क्योंकि हर डेवलपर को where clause याद रहेगा, इस भरोसे पर चलना एक दिन नाकाम होता ही है। और हर फैसला subject, resource और नतीजे के साथ लॉग होता है, क्योंकि किसी भी घटना में पहला सवाल यही होता है कि कौन क्या देख सकता था।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- broken object level authorization क्या है, और आप इसकी जांच कैसे करते हैं?
- जिन permissions को कस्टमर का administrator खुद सेट कर सके, उन्हें आप कैसे संभालेंगे?
- authorization के फैसले आप कहां cache करेंगे कि वे बासी न पड़ जाएं?
बैकएंड डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें