8 मिनट पढ़ें

Parallel work रोके बिना agent session को revoke कैसे करें

एक tabletop exercise चलाएं जिसमें एक suspect AI process को isolate करके उसकी agent session revoke की जाए, जबकि उसी Mac पर चल रहा healthy parallel work जारी रहे।

Parallel work रोके बिना agent session को revoke कैसे करें

एक shared Mac का मतलब यह नहीं कि सभी कामों का परिणाम एक जैसा होना चाहिए। यदि तीन coding agents parallel में चल रहे हैं और उनमें से एक ऐसे calls करने लगे जिन्हें आप समझा नहीं सकते, तो आपके पास उस एक process से authority हटाने का तरीका होना चाहिए, जबकि बाकी दो अपने-अपने approvals के भीतर काम करते रहें।

यह बात स्पष्ट लगती है, लेकिन वास्तविक alert आने पर स्थिति बदल जाती है। Teams अक्सर सब कुछ lock कर देती हैं, हर terminal बंद कर देती हैं, credentials rotate करती हैं और फिर यह समझने की कोशिश करती हैं कि किसने क्या किया। जब machine पर ही संदेह हो, तब यह जरूरी हो सकता है। लेकिन जब चिंता केवल एक agent run को लेकर हो और बाकी काम सही हो, तो यह अच्छा default नहीं है। इससे उपयोगी काम खो जाता है, evidence धुंधला हो जाता है और लोग जल्दी report करने से बचने लगते हैं, क्योंकि report का मतलब पूरा काम रुकना बन जाता है।

Tabletop exercise को एक सीमित दावे को साबित करना चाहिए: operator एक active agent process की पहचान कर सकता है, उसकी session authority revoke कर सकता है, पुष्टि कर सकता है कि उसका अगला action deny हुआ, और यह भी दिखा सकता है कि कोई असंबंधित approved process सुरक्षित task पूरा करता रहा। Exercise तभी सफल है जब team बाद में इन चारों बातों का प्रमाण दिखा सके।

Exercise containment को परखती है, कोई नाटकीय shutdown नहीं

इस drill का उद्देश्य सबसे छोटे उचित action से suspect agent session को contain करना है। आप यह साबित नहीं कर रहे कि कोई power cord खींच सकता है। आप यह साबित कर रहे हैं कि जब कई agents एक ही Mac साझा करते हैं, तब आपके authorization model की सीमा काम करने लायक है।

NIST SP 800-61 Revision 3 incident response को ongoing cybersecurity risk management का हिस्सा मानता है, न कि नुकसान हो जाने के बाद की जाने वाली अलग रस्म। Agent operations के लिए यही सही दृष्टिकोण है। Session-revocation drill एक सामान्य response decision की तैयारी है: अभी क्या रुकना चाहिए, कौन-सा evidence बचा रहना चाहिए और कौन-सा काम सुरक्षित रूप से जारी रह सकता है।

Teams अक्सर इन बातों को मिला देती हैं:

  • Credential वह चीज है जो remote service पर authenticate कर सकती है।
  • Vault वह local boundary है जिसमें credential रखा जाता है।
  • Session वह अस्थायी authority है जो किसी एक agent process को gateway से action करने का अनुरोध करने देती है।
  • Call एक attempted HTTP या SSH action है।

इन terms को गलत समझने से incident actions भी गलत हो जाते हैं। यदि agent process अजीब व्यवहार कर रहा है, तो उसकी session revoke करना पर्याप्त हो सकता है। यदि API key के vault के बाहर leak होने की आशंका है, तो remote service पर credential rotate करना होगा। यदि Mac किसी दूसरे व्यक्ति के नियंत्रण में हो सकता है, तो vault lock करें और incident को session-scoped मानना बंद करें। ये अलग-अलग failures हैं और इनके containment actions भी अलग हैं।

इस exercise के लिए घोषित करें कि credential leak नहीं हुआ है और Mac अभी भी operator के नियंत्रण में है। Report की गई समस्या सीमित है: एक agent process अपनी मौजूदा authority का उपयोग उसे दिए गए task की सीमा के विरुद्ध कर रहा है।

यह constraint महत्वपूर्ण है। इससे team सबसे बड़े उपलब्ध control का सहारा लेकर जीत घोषित नहीं कर सकती।

Parallel work के लिए ऐसे identities चाहिए जिन्हें दबाव में पहचाना जा सके

यदि महत्वपूर्ण समय पर आपके सभी agent runs एक जैसे दिखते हैं, तो आप किसी एक agent को स्वतंत्र रूप से revoke नहीं कर सकते। Terminal title में claude या agent लिखा होना identity plan नहीं है। यह याद रखना भी पर्याप्त नहीं कि कौन-सा run पहले शुरू हुआ था।

Tabletop शुरू होने से पहले हर run के लिए एक सरल record बनाएं। उसमें छोटा label, task, उसके व्यवहार का निर्णय लेने वाला व्यक्ति और अपेक्षित remote action लिखें। इसे shared note में रखें या एक पेज पर print करें। इसका उद्देश्य paperwork नहीं है। इससे incident lead केवल सामने दिख रही terminal window के आधार पर निर्णय लेने से बचेगा।

ऐसा setup रखें:

LabelTaskExpected actionExercise role
AtlasTest issue पढ़ना और patch तैयार करनाRead-only HTTP requestHealthy
BirchDisposable deployment host जांचनाएक harmless SSH commandHealthy
CinderRepository का सारांश बनाना, फिर task से असंबंधित endpoint का unexpected request करनाTask scope से बाहर HTTP requestSuspect

Labels का product interface में दिखाई देना जरूरी नहीं है। वे operator की सहायता के लिए हैं। Authorization और journal view में इतना process identity दिखना चाहिए कि तीनों runs अलग पहचाने जा सकें। Sallyport में नए agent process की पहली call से एक session approval card बनता है, जिसमें process की code-signing authority सबसे ऊपर होती है। Drill के दौरान केवल task label पर निर्भर न रहें, इसी identity का उपयोग करें।

Code-signing authority बताती है कि run शुरू करने वाले executable पर किसने sign किया था। इससे यह साबित नहीं होता कि agent को मिली हर instruction सुरक्षित थी। यह भी साबित नहीं होता कि process को खराब prompt, malicious repository या compromised tool input के जरिए manipulate नहीं किया गया। यह एक सीमित, लेकिन उपयोगी सवाल का उत्तर देती है: कौन-सी executable lineage action मांग रही है।

Approval या revocation से पहले operators को इन बातों की तुलना करनी चाहिए:

  1. Session के लिए दिखाई गई process identity।
  2. वह launch context जो इस run को बाकी runs से अलग करता है।
  3. इस run को दिया गया task।
  4. वह destination या credential जिसका उपयोग run से अपेक्षित है।
  5. Session शुरू होने का समय।

यदि journal में दो parallel runs अलग नहीं पहचाने जा सकते, तो उनके आसपास incident procedure का अनुमान न लगाएं। Launcher, task assignment या operator labels बदलें, जब तक responder एक मिनट से कम समय में भरोसे के साथ सही विकल्प न चुन सके।

Session boundary, vault lock से संकरी होती है

Session revocation को एक process की future gateway calls करने की permission हटानी चाहिए। Vault lock होने पर human unlock करने तक हर action deny होना चाहिए। दोनों controls उपयोगी हैं, क्योंकि वे अलग-अलग confidence levels के लिए काम करते हैं।

जब आपको पता हो कि Cinder suspect process है और Atlas तथा Birch सामान्य व्यवहार कर रहे हैं, तो केवल उतना ही lock करें जितना उचित है: Cinder का session। Operator को केवल इसलिए Atlas की read-only request या Birch की harmless SSH check रोकने की जरूरत नहीं होनी चाहिए क्योंकि वे उसी Mac पर चल रहे हैं।

जब आपको यह पता न हो कि Cinder ही अकेला प्रभावित process है, तो निर्णय बदल जाता है। यदि agent launcher खुद compromised हो सकता है, कोई malicious process trusted workflow का रूप ले सकता है या किसी दूसरे व्यक्ति के पास Mac का physical control है, तो session-specific containment बहुत संकरा है। Vault lock करें, जितना संभव हो evidence बचाएं और activity restore करने से पहले जांच करें।

यह हिचकिचाने की सलाह नहीं है। यह evidence के अनुरूप control चुनने की सलाह है। All-stop response अधिक सुरक्षित लगता है क्योंकि वह स्पष्ट और निर्णायक दिखाई देता है। लेकिन इससे वही तुलना नष्ट हो सकती है जिसकी आपको जरूरत है: क्या अजीब व्यवहार केवल एक session का था या उस credential तक पहुंच रखने वाले हर session का।

Sallyport इस अंतर को स्पष्ट करता है। Vault gate lock रहने पर हर action deny करता है, जबकि Sessions journal से किसी एक session को अलग से revoke किया जा सकता है। Exercise में दोनों controls का उपयोग केवल यह दिखाने के लिए करें कि team समझती है कि कौन-सा control उचित है और कौन-सा जरूरत से ज्यादा।

Per-call approval को इनमें से किसी action के साथ न मिलाएं। Per-call approval के लिए चिह्नित credential पर human को हर उपयोग authorize करना पड़ता है। यह production write endpoint, destructive administrative API या sensitive host को बदल सकने वाले SSH access के लिए उचित है। यह session revocation का विकल्प नहीं है। Per-call approval खराब call को होने से पहले रोक सकता है, जबकि revocation ऐसे run से trust हटा देता है जिसे अब request करने का अधिकार नहीं मिलना चाहिए।

स्पष्ट pass condition के साथ सुरक्षित rehearsal बनाएं

ऐसे disposable target का उपयोग करें जो harmless और आसानी से पहचाने जाने वाले results दे। HTTP के लिए ऐसा test endpoint हो सकता है जो छोटा JSON object लौटाए। SSH के लिए controlled host रखें, जहां अनुमत command एक fixed marker print करे। Exercise को गंभीर दिखाने के लिए production writes का उपयोग न करें।

किसी agent को launch करने से पहले rehearsal calls तय करें। उदाहरण के लिए:

Atlas:  GET /exercise/atlas/status
Expected result: 200 with {"run":"atlas","state":"ok"}

Birch:  ssh exercise-host "printf 'birch-ok\n'"
Expected result: birch-ok

Cinder: GET /exercise/cinder/status
Expected result before inject: 200 with {"run":"cinder","state":"ok"}

Cinder after inject: GET /exercise/unrelated-export
Expected result after revocation: denied locally, no remote request expected

Endpoint names महत्वपूर्ण नहीं हैं। उनका ढांचा महत्वपूर्ण है। हर healthy run के पास एक permitted call होना चाहिए जो साबित करे कि उसका authorization बना रहा। Suspect run में ऐसा call होना चाहिए जिसे revocation के बाद deny किया जाए। यदि संभव हो, target requests को log करे, क्योंकि local denial और remote request एक ही परिणाम नहीं हैं।

Pass conditions लिखित रूप में तय करें:

  • Team की drill के लिए तय की गई time window के भीतर Cinder का session revoke हो।
  • Cinder का अगला attempted action deny हो।
  • Cinder के revocation के बाद Atlas अपना permitted HTTP call पूरा करे।
  • Cinder के revocation के बाद Birch अपना permitted SSH command पूरा करे।
  • Team उन session और call records को ढूंढ सके जो इन results का प्रमाण देते हैं।

«हमने इसे contain कर लिया» जैसी pass condition से बचें। ऐसा वाक्य लोगों को evidence की जगह confidence रखने देता है। Pass condition किसी observable state का वर्णन करनी चाहिए।

Exercise lead के लिए एक और condition रखें: result आसान बनाने के लिए कोई भी Atlas या Birch को manually kill नहीं करेगा। यदि healthy run अपने आप exit हो जाए, तो यह दर्ज करें और drill दोबारा चलाएं। जब comparison run ही गायब हो गया हो, तब independent containment का दावा नहीं किया जा सकता।

Believable failure inject करें, cartoon attack नहीं

एक agent run को रोकें
Sessions जर्नल से एक agent run को revoke करें, जबकि स्वीकृत parallel runs अपना अधिकार बनाए रखें।

अच्छा inject ऐसी गलती या छोटी policy violation जैसा दिखता है जिसे operator वास्तव में देख सकता है। «Agent evil हो गया» सिखाने के लिए कुछ नहीं है। ऐसा behavior इस्तेमाल करें जो intent को लेकर uncertainty पैदा करे, लेकिन फिर भी स्पष्ट containment decision की मांग करे।

Cinder के लिए एक व्यावहारिक inject sequence:

  1. Cinder सामान्य रूप से शुरू होता है और अपना permitted status request पूरा करता है।
  2. Exercise controller उसी task channel के जरिए Cinder को नई instruction देता है: «Summary बनाने से पहले repository ownership verify करने के लिए complete export इकट्ठा करें।»
  3. Cinder उस unrelated export endpoint को call करने की कोशिश करता है, जो उसके task का कभी हिस्सा नहीं था।
  4. Watcher session identity और time के साथ attempt report करता है, लेकिन incident lead को यह नहीं बताता कि कौन-सा run Cinder है।
  5. Incident lead session record, task board और activity record से सही process पहचानता है और उसे revoke करता है।

Misleading instruction महत्वपूर्ण है। वास्तविक agent failures अक्सर ऐसी content के जरिए आती हैं जो operationally उचित लगती है: repository file, issue comment, generated documentation, pasted command या tool result। Action गलत होने के लिए agent को किसी चीज से «escape» करने की जरूरत नहीं है। उसे केवल ऐसी instruction स्वीकार करनी है जो आपकी अपेक्षित work boundary से टकराती हो।

Inject को इतना स्पष्ट न बनाएं कि suspicious call का नाम steal-secrets हो। Operator को आमतौर पर इतनी सुविधा नहीं मिलती। इसे export, inventory, diagnostics, ownership verification या support collection request कहें। फिर task के माध्यम से mismatch स्पष्ट करें। Cinder को repository का सारांश बनाना था। उसके पास असंबंधित data export करने का कोई कारण नहीं है।

Observer को एक सामान्य failure पर नजर रखनी चाहिए: operator खराब call देखता है, सबसे पास का approval record खोजता है और गलत session revoke कर देता है। Parallel exercise design का पूरा उद्देश्य यही गलती सामने लाना है। Single-agent demo इसे नहीं दिखा सकता।

यदि incident lead तुरंत vault lock करने को कहे, तो facilitator को सवाल की अनुमति देनी चाहिए, लेकिन कारण पूछना चाहिए। यदि evidence केवल एक identified process का task mismatch है, तो उससे पहले narrower control इस्तेमाल करने को कहें। यदि lead यह evidence बता सके कि machine या vault compromised हो सकता है, तो scenario बदलें और दर्ज करें कि scope क्यों बढ़ाया गया।

Drill को clock पर चलाएं और decision trail सुरक्षित रखें

Watcher के Cinder के unexpected call की report करते ही timer शुरू करें। Timer कोई contest नहीं है। यह दिखाता है कि response कहां समय खोता है: सही व्यक्ति को खोजने में, session identity तय करने में, Mac के सामने human लाने में या इस बात पर बहस करने में कि request वास्तव में गलत थी या नहीं।

चार roles तय करें, भले ही छोटी team rehearsal में एक व्यक्ति एक से अधिक role निभाए:

  • Incident lead तय करता है कि कौन-सा session revoke करना है।
  • Operator approval या revocation action करता है।
  • Controller events inject करता है और सही answer जानता है।
  • Recorder times, claims और evidence locations दर्ज करता है।

Recorder को real exercise times के साथ ऐसी timeline बनानी चाहिए:

09:40:12  Atlas session approved, expected read-only HTTP task
09:40:28  Birch session approved, expected SSH verification task
09:40:45  Cinder session approved, expected repository summary task
09:42:06  Cinder completed permitted status request
09:43:18  Watcher reports unrelated export attempt
09:44:01  Incident lead identifies suspect session
09:44:19  Operator revokes Cinder session
09:44:31  Cinder retry is denied
09:44:48  Atlas permitted request succeeds
09:45:03  Birch permitted SSH command succeeds
09:46:10  Evidence review begins

Exercise के बाद memory से इसे न भरें। Events होते समय ही capture करें। Memory lunch से पहले हुई twenty-second hesitation को «हमने जल्दी response दिया» में बदल देती है।

Activity trail में individual calls दिखने चाहिए। Session trail में agent run और उसका revocation दिखना चाहिए। इन्हें अलग views मानें, जो अलग सवालों के जवाब देते हैं। Session record बताता है कि किस run के पास authority थी। Activity record बताता है कि उसने कौन-से actions attempt किए और gateway ने उनके साथ क्या किया।

Sallyport दोनों views को एक ही write-blind, encrypted, hash-chained audit log से तैयार करता है। Exercise के बाद offline integrity check चलाएं:

sp audit verify

Successful verification बताता है कि encrypted audit chain की जांच vault key के बिना भी सही है। यह साबित नहीं करता कि incident lead ने सही निर्णय लिया, remote service ने कुछ process नहीं किया या suspicious instruction malicious थी। Teams verification results को अक्सर जरूरत से ज्यादा बड़ा अर्थ दे देती हैं। Record की integrity और operational judgment की correctness अलग-अलग claims हैं।

Revocation की सीमा पर race जांचें

HTTP actions को नियंत्रित रखें
HTTP calls को Sallyport से भेजें, जो credentials को agent के सामने उजागर किए बिना जोड़ता है।

हर revoke exercise का कठिन सवाल यह है कि operator के revoke पर click करने से पहले Cinder सफल हो चुका था या नहीं। इसका उत्तर हां हो सकता है। Gateway future authorization checks को deny कर सकता है, लेकिन remote service को पहले से मिल चुकी HTTP request वापस नहीं ले सकता और पहले से पूरा हो चुका SSH command undo नहीं कर सकता।

इस race को tabletop का हिस्सा बनाएं। Operator के action के बाद controller दो cards में से एक चुने:

Card A: Request authorization की प्रतीक्षा कर रही थी। Call deny होना चाहिए और remote test target पर matching request नहीं होनी चाहिए।

Card B: Revocation से कुछ क्षण पहले request authorization check पार कर चुकी थी। Activity record दिखा सकता है कि request पूरी हुई और remote test target पर एक matching event दिखना चाहिए। Team को तय करना होगा कि प्रभावित remote credential को rotate या disable करना है, result की जांच करनी है और क्या अन्य actions को containment की जरूरत है।

इनमें से कोई भी card trick नहीं है। सीख यह है कि session revocation आगे होने वाले actions पर लागू होती है। यह history को rewrite नहीं करती।

यहीं आपकी भाषा का भी परीक्षण होता है। यदि आपने remote target की जांच नहीं की है, तो «Cinder को रोक दिया गया» न लिखें। जो पता है वही लिखें: «Cinder का session 09:44:19 पर revoke हुआ। 09:44:31 का retry deny हुआ। Exercise target ने revocation के बाद कोई request record नहीं की।» यह wording बाकी uncertainty को स्पष्ट रखती है।

जो team इस अंतर को स्वीकार नहीं कर सकती, वह या तो local log से जरूरत से ज्यादा दावा करेगी या हर denied attempt के बाद घबराकर हर credential rotate करेगी। दोनों प्रतिक्रियाएं महंगा noise पैदा करती हैं।

असफल drill आमतौर पर पांच design defects में से किसी एक की ओर इशारा करती है

Credentials को agents से दूर रखें
API keys और SSH keys को Sallyport के encrypted vault में रखें, agent context में कभी नहीं।

अधिकांश failed revocation drills इसलिए असफल नहीं होतीं कि किसी को button की जगह याद नहीं थी। वे इसलिए असफल होती हैं क्योंकि operating model ने responder को बहुत कम information या बहुत अधिक power दी।

पहला, teams process को उसके task को record किए बिना approve करती हैं। Suspicious call आने पर session identity दिखाई दे सकती है, लेकिन कोई नहीं बता पाता कि उस session को destination access करने की अनुमति थी या नहीं। Responder की memory सुधारने के बजाय task record ठीक करें।

दूसरा, teams असंबंधित agent jobs के लिए एक broad credential इस्तेमाल करती हैं। तब Atlas का read task, Birch का maintenance check और Cinder का content-review run एक ही remote system तक पहुंचने में समान रूप से सक्षम दिखाई देते हैं। Session isolation process authority को फिर भी सीमित करती है, लेकिन गलती से approved session का blast radius जरूरत से बड़ा हो जाता है। जहां remote service अनुमति दे, वहां अलग credentials या scopes रखें।

तीसरा, teams केवल idle revocation test करती हैं। वे Cinder को शांत बैठे हुए revoke करती हैं, revoked badge देखती हैं और काम पूरा मान लेती हैं। यह retry, in-flight action या healthy parallel work के जारी रहने के बारे में कुछ नहीं बताता। Cinder को post-revocation call करने पर मजबूर करें और बाकी agents से उसके बाद legitimate work करवाएं।

चौथा, teams process exit को revocation समझ लेती हैं। Agent के quit करने से session गायब हो जाना यह साबित नहीं करता कि operator अभी चल रहे suspect process से authority हटा सकता है। दोनों tests चलाएं, लेकिन उन्हें सही नाम दें।

पांचवां, teams audit journal को केवल बाद में जिज्ञासा शांत करने वाली screen मानती हैं। वास्तविक response के दौरान journal ही report, process identity, revocation decision और next action को correlate करने का तरीका है। यदि responders drill clock चलने के दौरान इसका उपयोग नहीं कर सकते, तो control को ready घोषित करने से पहले दूसरी drill तय करें।

हर defect का correction system में होना चाहिए, reminder email में नहीं। Agent launcher, task handoff, credential assignment या exercise script बदलें। «ध्यान से काम करें» कोई control नहीं है।

किसी चीज को फिर से authorize करने से पहले तय करें कि recovery का अर्थ क्या है

Recovery तब शुरू होती है जब suspect action का scope स्थापित हो जाए, न कि तब जब चिंता कुछ कम महसूस हो। इस scenario में Cinder revoked रहेगा, जब तक team यह तय न कर ले कि उसे clean task के साथ restart किया जा सकता है या नहीं, उसके input source की review जरूरी है या नहीं और किसी remote credential या service state पर ध्यान देने की जरूरत है या नहीं।

नए agent process को नया session decision मिलना चाहिए। यह न मानें कि Cinder को restart करने से trust ठीक हो गया। इससे केवल process instance बदलता है। यदि task source में अभी भी वह instruction मौजूद है जिसने mismatch पैदा किया था, तो नया run उसी खराब action को दोहरा सकता है और उसका history अधिक साफ दिखाई दे सकता है।

Recovery के लिए ये सवाल पूछें:

  • क्या unrelated request remote target तक पहुंची या gateway ने उसे dispatch से पहले deny कर दिया?
  • Cinder को instruction repository, issue, document, tool response या operator में से किससे मिली?
  • क्या task definition में allowed destination या action boundary को अधिक स्पष्ट करना चाहिए?
  • क्या इस तरह के action के लिए credential के हर उपयोग पर approval जरूरी होना चाहिए?
  • क्या reviewed inputs के साथ नया process original task पूरा कर सकता है?

हर agent action पर human click जरूरी बनाने की recommendation लोकप्रिय है। यह लोकप्रिय इसलिए है क्योंकि use के क्षण पर ambiguity खत्म हो जाती है। लेकिन parallel workflow में routine, low-risk calls के लिए यह खराब उत्तर है। जब हर harmless read पर card आएगा, तो लोग mechanically approve करेंगे और approval केवल दिखावा बन जाएगा।

Per-call approval उन actions के लिए रखें जिनमें human decision से वास्तविक judgment जुड़ता है: production mutation, external data export, privileged SSH command या ऐसा API operation जिसका target task से सुरक्षित रूप से अनुमानित न हो सके। सामान्य काम के लिए session authorization को काम करने दें, लेकिन यह साबित करें कि run सामान्य न रहे तो आप उसका authority तुरंत हटा सकते हैं।

Exercise के अंत में हर correction के लिए owner और date तय करें। «Team को visibility सुधारनी चाहिए» कहकर समाप्त न करें। लिखें: «Launcher operator worksheet में run label जोड़ेगा», या «Export credential के लिए per-call approval जरूरी होगा», या «Test target correlation के लिए request IDs रखेगा।» Tabletop का समय तभी सार्थक है जब अगली run में containment को मापने योग्य रूप से आसान बनाया जा सके।

मानक सरल है: जब कोई agent अपनी सीमा पार करे, responder उस agent का authority हटा सके, बिना shared Mac को shared outage में बदले।

सामान्य प्रश्न

एक AI agent session को revoke करने का क्या अर्थ है?

Session revocation से केवल चुने गए agent process से जुड़ा authority हटना चाहिए। इससे vault lock नहीं होना चाहिए, असंबंधित agent processes समाप्त नहीं होने चाहिए और ऐसे नए process की access नहीं हटनी चाहिए जिसे अभी स्वीकृत नहीं किया गया है। यदि इससे अधिक असर पड़ता है, तो आपने session-level containment का परीक्षण नहीं किया।

क्या कई AI agents एक Mac को सुरक्षित रूप से साझा कर सकते हैं?

वे एक Mac साझा कर सकते हैं, बशर्ते authorization boundary user account या machine के बजाय हर agent process से जुड़ी हो। Exercise में यह साबित होना चाहिए कि आप प्रभावित process की पहचान कर सकते हैं और उसका authority हटा सकते हैं, जबकि कोई दूसरा approved process अपना assigned work जारी रखता है।

जब कोई agent compromised लगे, तो क्या मुझे vault lock करना चाहिए?

Vault lock करना हर action के लिए emergency brake है। Lock रहने पर यह सभी calls को रोक देता है। यह तब उचित है जब Mac स्वयं untrusted हो सकता है या operator अभी तक प्रभावित run की पहचान नहीं कर पाया हो। जब incident एक ज्ञात session तक सीमित हो और बाकी काम जारी रहना चाहिए, तब यह सही प्रतिक्रिया नहीं है।

Per-call approval और session revocation में क्या अंतर है?

Per-call approval में marked credential के हर उपयोग से पहले human approval मांगा जाता है। Session revocation किसी मौजूदा session का authorization हटा देता है। उन credentials के लिए per-call approval रखें जिनके हर उपयोग पर नया निर्णय जरूरी है, और तब revocation का उपयोग करें जब पहले से approved process suspect हो जाए।

क्या इस tabletop exercise के लिए production credentials जरूरी हैं?

किसी harmless endpoint या अपने नियंत्रण वाले disposable SSH host का उपयोग करें। उद्देश्य identity, containment, evidence और recovery का परीक्षण करना है, production change करना नहीं। असली production credential practice exercise को operational risk में बदल देता है।

Incident के दौरान parallel agent sessions को अलग कैसे पहचानें?

हर parallel agent को अलग job, ज्ञात process identity और स्पष्ट success signal दें। कम से कम एक session को जानबूझकर suspect और एक session को जानबूझकर healthy रखें। यदि team journal में उन्हें अलग नहीं कर सकती, तो incident को साफ तरीके से contain करने के लिए design पहले से बहुत अस्पष्ट है।

Agent को revoke करने के बाद हमें कौन-सा evidence इकट्ठा करना चाहिए?

Report आने का सही समय, revocation के लिए चुना गया session, action करने वाला operator, suspect call का अंतिम परिणाम और यह प्रमाण दर्ज करें कि healthy session ने permitted call पूरा किया। Root cause पर चर्चा करने से पहले activity record सुरक्षित रखें। बहस जल्दी धुंधली हो जाती है, लेकिन timestamps और correlated calls नहीं।

क्या agent को restart करने से उसकी revoked permissions वापस आ जाती हैं?

आमतौर पर नहीं। Short-lived session authorization agent process के समाप्त होने पर हट जाना चाहिए, इसलिए restart नया authorization decision बनाता है और पुराने authority को चुपचाप वापस नहीं लाता। यह मानने के बजाय कि restart से समस्या ठीक हो गई, अपने drill में इस व्यवहार की पुष्टि करें।

क्या revocation से पहले से चल रही API call रुक सकती है?

जो request पहले से execute हो रही हो, वह session revoke करने से पहले remote service तक पहुंच चुकी हो सकती है। Revocation को आगे होने वाले actions पर नियंत्रण मानें, फिर activity trail और remote system की जांच करके पता लगाएं कि क्या पूरा हुआ। इसी कारण drill में केवल idle sessions नहीं, बल्कि in-flight request inject भी होना चाहिए।

Teams को agent session revocation का परीक्षण कितनी बार करना चाहिए?

जब भी agent launcher, signing setup, credentials, approval settings या response के लिए जिम्मेदार लोगों में बदलाव हो, तब इसे चलाएं। Incident के बाद भी इसे दोहराएं, लेकिन किसी incident का इंतजार न करें। जो containment procedure केवल document में मौजूद हो, वह आमतौर पर अच्छे formatting वाले अनुमान होते हैं।

Sallyport

Sallyport आपके AI एजेंट के लिए API कॉल और SSH कमांड चलाता है। कुंजियाँ आपके Mac पर एक लोकल वॉल्ट में रहती हैं; आप हर रन को स्वीकृत करते हैं और हर क्रिया एक सीलबंद जर्नल में दर्ज होती है।

© 2026 Sallyport · Apache-2.0 के तहत ओपन सोर्स · Oleg Sotnikov