Agent सुरक्षामध्यमपाठ 185 मिनट का पाठ

Sandboxing: बिना खिड़कियों वाला कमरा

आप एजेंट को बेवकूफ़ बनने से नहीं रोक सकते। लेकिन जब ऐसा हो, तो वह किस कमरे में खड़ा है, यह आप तय कर सकते हैं।

पाठ वीडियो में

60 सेकंड में

Sandboxing: बिना खिड़कियों वाला कमरा

आप एजेंट को बेवकूफ़ बनने से नहीं रोक सकते। लेकिन जब ऐसा हो, तो वह किस कमरे में खड़ा है, यह आप तय कर सकते हैं।

1/5
आसान शब्दों में
रोबोट को ऐसे कमरे में खेलने दें जिसकी दीवारों पर गद्दे लगे हों और उसमें कोई कीमती चीज़ न हो। अगर वह बेकाबू भी हो जाए, तो आपके टेलीविज़न की जगह सिर्फ़ एक कुशन टूटेगा।
एक sandbox एक सीमित वातावरण (restricted environment) होता है जहाँ एजेंट काम कर सकता है। इसे इस तरह चुना जाता है कि सबसे बुरा नतीजा भी स्वीकार्य हो। यह वह सुरक्षा कवच है जो तब भी काम करता रहता है जब बाकी सब फ़ेल हो चुके हों। यही वजह है कि यह आपके स्टैक में सबसे नीचे रहकर हर चीज़ को संभाले रखता है।

चार दीवारें

  1. 1

    Filesystem

    इसकी अपनी डायरेक्टरी या कंटेनर। कोई होस्ट माउंट नहीं। ~/.ssh, ~/.aws, ब्राउज़र प्रोफ़ाइल या क्रेडेंशियल स्टोर तक कोई पहुँच नहीं। सिर्फ़ उतनी ही चीज़ों की कॉपी जितनी इसे ज़रूरत है, उससे ज़्यादा कुछ नहीं।
  2. 2

    Network

    डिफ़ॉल्ट रूप से सब ब्लॉक रखें (Deny by default), केवल ज़रूरी अपवादों को अनुमति दें। इंटरनल रेंज और क्लाउड मेटाडेटा एंडपॉइंट्स को ब्लॉक करें। DNS को न भूलें — कनेक्शन रिजेक्ट होने पर भी DNS लुकअप से डेटा लीक हो सकता है।
  3. 3

    Credentials

    वातावरण में कोई भी खुला सीक्रेट न छोड़ें। हर रन के लिए कम समय तक चलने वाले और सीमित काम वाले टोकन दें, जिन्हें एक ही झटके में रद्द किया जा सके।
  4. 4

    Resources

    CPU, मेमोरी, समय की सीमा, खर्च। बेकाबू एजेंट कुछ ही सेकंड में रुक जाना चाहिए, न कि महीने के भारी-भरकम बिल पर जाकर।
THE SANDBOXThe agentScratch filesTemp tokenAllowed: api.yourco.com onlyblockedProduction databaseYour SSH keysInternal admin panelThe open internetworst case stays inside the dashed line
डैश वाली रेखा एक वादा है। जिस एजेंट पर हमला हुआ है, वह जो कुछ भी छू सकता है, वह सब इसी के अंदर है — और इसके अंदर की किसी भी चीज़ का खोना आपको भारी नहीं पड़ेगा।

अलगाव (Isolation) के स्तर

स्तरयह क्या हैकिसके ख़िलाफ़ कारगर हैकहाँ कमज़ोर है
Processकम अधिकारों वाले यूज़र के रूप में चलाएंग़लती से होने वाले फ़ाइल एक्सेसजानबूझकर बाहर निकलने की कोशिश
ContainerDocker या इसके जैसा कुछज़्यादातर आम हमलेकर्नल-लेवल के एस्केप, शेयर किया गया नेटवर्क
VMएक पूरी वर्चुअल मशीनलगभग हर तकनीकी हमलालागत और शुरू होने में लगने वाला समय
अलग मशीनशारीरिक रूप से अलग किया गया होस्टआपके नेटवर्क पर होने वाला असरजटिलता
Ephemeral (अल्पकालिक)हर रन के बाद मिटा दिया जाता हैकिसी भी तरह का डेटा बचे रहनाकिसी भी चीज़ के ख़िलाफ़ नहीं — यह इस लिस्ट की सबसे अच्छी आदत है
यह करें
Ephemeral यहाँ सबसे कीमती शब्द है। हर रन के लिए एकदम नया वातावरण होने का मतलब है कि हमलावर ने जो कुछ भी स्थापित किया था — कोई फ़ाइल, कोई cron एंट्री, या बदला हुआ कॉन्फ़िगरेशन — वह कुछ ही मिनटों में मिट जाता है और अगले यूज़र तक नहीं पहुँच सकता।

एक sandbox क्या नहीं करता

  • यह एजेंट को बेवकूफ़ बनने से नहीं रोकता। यह सिर्फ़ इस बात को सीमित करता है कि बेवकूफ़ बना एजेंट कहाँ तक पहुँच सकता है।
  • यह उस डेटा की रक्षा नहीं करता जिसे आपने जानबूझकर इसके अंदर रखा है। अगर आपने कस्टमर डेटाबेस को ही माउंट कर दिया है, तो सैंडबॉक्स बस एक खाली कमरे की रखवाली कर रहा है।
  • यह आपके दिए गए टूल्स को कवर नहीं करता। पूरी तरह से सैंडबॉक्स किया गया एजेंट भी, अगर उसके पास चालू send_email टूल है, तो वह आपके सीक्रेट्स पूरी दुनिया को ईमेल कर सकता है।
सावधान रहें
Sandboxing का मतलब वातावरण से है। Least privilege का मतलब टूल्स से है। आपको दोनों की ज़रूरत है, और जो टीमें एक को चुनकर दूसरे को छोड़ देती हैं, वे आमतौर पर टूल्स वाला हिस्सा छोड़ देती हैं — जबकि यही वह हिस्सा है जो असल में बाहरी दुनिया तक पहुँचता है।

और देखें और पढ़ें

लैब

एक ऐसा सैंडबॉक्स जिससे आपने खुद बाहर निकलने की कोशिश की हो।

~20 min

समस्या

एजेंट द्वारा बनाए गए कोड को मॉड्यूल 66 के सुरक्षा फ़्लैग्स के साथ एक कंटेनर में चलाएं। फिर अपने ही सैंडबॉक्स पर हमला करें: किसी होस्ट फ़ाइल को पढ़ें, एक नेटवर्क कॉल करें, मेमोरी पूरी ख़त्म कर दें, फ़ॉर्क-बॉम्ब चलाएं, और कोई ऐसी चीज़ पीछे छोड़ें जो अगले रन में भी बची रहे। आप जिसमें भी कामयाब होंगे, वह एक छूटा हुआ फ़्लैग है।
शुरुआती कोडbash
docker run --rm \
  --network none --memory 256m --cpus 0.5 --pids-limit 64 \
  --read-only --tmpfs /tmp:size=16m \
  --cap-drop ALL --security-opt no-new-privileges \
  --user 65534:65534 \
  -v "$PWD/work:/work:ro" -w /work \
  python:3.12-slim timeout 10 python main.py

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q1आपका कंटेनर पूरी तरह सुरक्षित है। आपके एजेंट के पास काम करने वाला send_email टूल है। सैंडबॉक्स से आपको क्या फ़ायदा हुआ?दिखाएं
सिर्फ़ होस्ट की सुरक्षा, और कुछ नहीं। सैंडबॉक्स वातावरण को बांधता है; टूल एक अधिकृत रास्ता है जिसे अनुमति देने के लिए ही सैंडबॉक्स को खास तौर पर कॉन्फ़िगर किया गया है। एक बेहतरीन कंटेनर के अंदर मौजूद इंजेक्टेड एजेंट भी आपका डेटा ईमेल से बाहर भेज सकता है, क्योंकि आपने उसे दरवाज़ा दे दिया और फिर खिड़कियाँ बंद कर दीं। Sandboxing और least privilege दो अलग-अलग सुरक्षा उपाय हैं और कोई भी एक-दूसरे की जगह नहीं ले सकता।
Q2कंटेनर कब नाकाफ़ी होता है, और इसका ठोस निर्णय नियम क्या है?दिखाएं
कंटेनर होस्ट कर्नल को शेयर करते हैं, इसलिए कर्नल में कोई गड़बड़ी (bug) होने पर उससे पूरी तरह बाहर निकला जा सकता है। नियम यह है: यदि काम को किसी ऐसे व्यक्ति द्वारा प्रभावित किया जा सकता है जो ऑपरेटर नहीं है — जैसे कोई सार्वजनिक प्रोडक्ट, यूज़र द्वारा सबमिट किए गए लक्ष्य, या खुले वेब को पढ़ने वाले एजेंट्स — तो आपको एक syscall या वर्चुअलाइज़ेशन बाउंड्री (gVisor, Kata, Firecracker) या Wasm रनटाइम की ज़रूरत होगी। यदि लक्ष्य केवल आपकी अपनी टीम से ही आते हैं, तो एक सुरक्षित कंटेनर इस खतरे के मॉडल के लिए सही है, जहाँ खतरा किसी बड़े हमलावर से नहीं बल्कि सिर्फ़ किसी ग़लती से होता है।

जारी रखने के लिए कृपया साइन इन करें।

अक्सर पूछे जाने वाले सवाल

क्या एक Docker कंटेनर काफ़ी है?

ज़्यादातर बिज़नेस ऐप्लिकेशन्स के लिए, हाँ, बशर्ते इसे ठीक से कॉन्फ़िगर किया गया हो: कोई प्रिविलेज्ड मोड नहीं, कोई होस्ट माउंट नहीं, सीमित नेटवर्क, जहाँ मुमकिन हो वहाँ रीड-ओनली रूट फ़ाइलसिस्टम, और नॉन-रूट यूज़र। पूरी तरह से गैर-भरोसेमंद कोड चलाने के लिए, VM या खास तौर पर इसी काम के लिए बने आइसोलेशन रनटाइम का इस्तेमाल करें।

क्या कोडिंग एजेंट्स को सैंडबॉक्स में चलाना चाहिए?

बिल्कुल, और इसे लागू करने की यह सबसे महत्वपूर्ण जगह है। एक कोडिंग एजेंट हमलावर द्वारा लिखे जा सकने वाले टेक्स्ट (इशूज़, PRs, डिपेंडेंसी डॉक्स) को पढ़ता है और कमांड्स चलाता है। इसे सैंडबॉक्स में रखें, और नेटवर्क एक्सेस व क्रेडेंशियल के इस्तेमाल के लिए साफ़ तौर पर मंज़ूरी लेना ज़रूरी बनाएं।

मैं एजेंट को सुरक्षित रूप से असली डेटा कैसे दूँ?

इसे सीमित दायरे वाली कॉपी दें, या इससे भी बेहतर, एक ऐसा टूल दें जो डेटा सौंपे बिना उसके बारे में सवालों के जवाब दे सके। "पिछले हफ़्ते कितने ऑर्डर आए?" का जवाब सिर्फ़ एक नंबर होता है। इसे पूरे टेबल की कभी ज़रूरत नहीं होती।

क्या सैंडबॉक्सिंग चीज़ों को धीमा कर देती है?

कंटेनर शुरू होने में एक या दो सेकंड का समय लगता है, और आप पहले से तैयार (warm) पूल रख सकते हैं। इसकी तुलना किसी एक सुरक्षा घटना के नुकसान से करके देखें। यह पूरी गाइड में सबसे सस्ता बीमा है।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें