Agent की पहचान: non-human identities और least privilege
हर agent को अपनी खुद की पहचान से लॉग इन करना चाहिए, short-lived credentials के साथ और सिर्फ़ उतनी ही permissions के साथ जितनी उसके काम के लिए ज़रूरी हों। इंसानों के शेयर्ड अकाउंट्स और हमेशा चलने वाली keys (forever-keys) हर गलती को एक रहस्य बना देती हैं।
60 सेकंड में
Agent की पहचान: non-human identities और least privilege
हर agent को अपनी खुद की पहचान से लॉग इन करना चाहिए, short-lived credentials के साथ और सिर्फ़ उतनी ही permissions के साथ जितनी उसके काम के लिए ज़रूरी हों। इंसानों के शेयर्ड…
आम गलत तरीके (anti-patterns)
- Agent किसी असली कर्मचारी के अकाउंट से लॉग इन करता है
- टीम के हर agent द्वारा शेयर की गई एक ही API key
- Keys जो कभी expire नहीं होतीं, config फ़ाइलों में पेस्ट की हुई
- Admin अधिकार "क्योंकि सेटअप करना आसान था"
- कोई owner दर्ज नहीं; किसी को नहीं पता कि इसकी अब भी ज़रूरत है या नहीं
- हर agent के लिए, हर environment में अलग पहचान (test और production अलग-अलग)
- Run time पर जारी किए जाने वाले short-lived credentials
- Secrets manager में रखे गए secrets, जिन्हें tool code फ़ेच करता है, मॉडल को कभी नहीं दिखाए जाते
- एक ऐसा role जिसमें ठीक वही permissions दर्ज हों जिनकी काम के लिए ज़रूरत है
- हर पहचान के लिए एक तय owner और एक expiry या रिव्यू की तारीख
कम समय वाले (short-lived) हमेशा बेहतर होते हैं
- 1
Agent काम शुरू करता है
मॉडल नहीं, बल्कि runtime identity service से credential मांगता है। - 2
प्लेटफ़ॉर्म workload को साबित करता है
यह पुष्टि करता है कि यह वाकई environment Y में agent X ही है। - 3
Short-lived token जारी किया गया
Agent X के रोल तक सीमित। जल्द ही expire हो जाता है। - 4
Tool code टोकन का इस्तेमाल करता है
मॉडल किसी टूल को कॉल करता है; टूल टोकन रखता है। मॉडल इसे कभी नहीं देखता। - 5
टोकन expire हो जाता है
हाथ से rotate करने की कोई ज़रूरत नहीं। लीक हुई कॉपी जल्द ही बेकार हो जाती है।
Least privilege, स्पष्ट रूप से तय
| Agent | ज़रूरत है | ज़रूरत नहीं है |
|---|---|---|
| Invoice पढ़ने वाला agent | Invoices फ़ोल्डर पढ़ना; review queue में लिखना | Invoices का भुगतान करना; HR फ़ाइलें पढ़ना; कुछ भी डिलीट करना |
| IT helpdesk agent | टिकट पढ़ना; जांच के बाद non-admin यूज़र्स के पासवर्ड रीसेट करना | Admin अकाउंट्स में बदलाव करना; सुरक्षा सेटिंग्स बदलना |
| रिपोर्ट लिखने वाला agent | रिपोर्टिंग डेटाबेस व्यू का read-only एक्सेस | Production टेबल्स का write एक्सेस |
जीवनचक्र: joiners, movers, leavers
- Joiner: पहचान केवल मंज़ूरी प्रक्रिया (approval process) के ज़रिए बनाई जाती है, जिसमें owner और role तय होते हैं।
- Mover: जब agent का काम बदलता है, तो उसके रोल की समीक्षा की जाती है; पुरानी permissions हटाई जाती हैं, न कि सिर्फ़ नई जोड़ी जाती हैं।
- Leaver: जब agent को हटा दिया जाता है (retire किया जाता है) या उसका owner छोड़ देता है, तो पहचान को disable कर दिया जाता है और credentials रद्द (revoke) कर दिए जाते हैं। लावारिस पड़ी agent identities हमलावरों के घुसने का एक आम ज़रिया होती हैं।
- Rotation: बाकी बचे किसी भी लंबे समय वाले secrets (ऐसे सिस्टम्स के लिए जो short-lived secrets जारी नहीं कर सकते) को एक तय शेड्यूल पर और किसी भी संदिग्ध लीक के बाद rotate किया जाता है।
और देखें और पढ़ें
लैब
तीन agents के लिए पहचान की योजना: identity, permissions, credential का प्रकार, owner और off-switch।
समस्या
आप identity lead हैं। तीन agents लाइव होने वाले हैं: एक invoice-reading agent, एक IT helpdesk agent जो पासवर्ड रीसेट कर सकता है, और एक sales report agent जो डेटाबेस को क्वेरी करता है।
- हर agent के लिए, शुरुआती टेबल भरें।
- Permissions को खास रिसोर्स पर खास एक्शन के तौर पर लिस्ट करें, न कि सिर्फ़ "फाइनेंस का एक्सेस" लिखकर।
- दर्ज करें कि कौन सा credential short-lived है और इसे कैसे जारी किया जाता है। अगर आपको कहीं भी static key का इस्तेमाल करना ही पड़े, तो बताएं कि इसे कैसे स्टोर और rotate किया जाता है।
- हर agent के लिए, वह एक एक्शन लिखें जो आपातकालीन स्थिति में इसे बंद कर दे।
- हर agent के लिए एक "must never" (कभी नहीं करना है) नियम जोड़ें और बताएं कि इसे कहाँ लागू किया गया है (कोड में, identity system में, या टारगेट ऐप में, लेकिन केवल प्रॉम्प्ट में नहीं)।
agent | identity name | environment | permissions (action:resource) | credential type & lifetime | owner | off-switch | must never (enforced where?)
invoice-reader | agent-invoice-read-prod | prod | | | | |
helpdesk-agent | | | | | | |
sales-report | | | | | | |आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1Helpdesk agent को पासवर्ड रीसेट करने होंगे, लेकिन एडमिनिस्ट्रेटर के लिए कभी नहीं। आप इसे कहाँ लागू करेंगे, और प्रॉम्प्ट में क्यों नहीं?दिखाएं
इसे identity system में या रीसेट टूल के कोड में लागू करें: agent के रोल के पास एडमिन अकाउंट्स के लिए permissions ही न हों, या टूल टारगेट के ग्रुप की जांच करे और इनकार कर दे। प्रॉम्प्ट में लिखे नियम को किसी चालाकी भरे टिकट से झांसे में लिया जा सकता है। कोड में की गई permission जांच को फुसलाया नहीं जा सकता।
Q2Short-lived tokens मिनटों में expire हो जाते हैं, लेकिन जो हमलावर agent के runtime को कंट्रोल करता है वह लगातार नए टोकन मांग सकता है। क्या short-lived अब भी मददगार है?दिखाएं
हाँ, लेकिन सिर्फ यह अपने आप में काफी नहीं है। यह लीक हुई कॉपियों (logs, prompts, screenshots में) से बचाता है और attacker को runtime के अंदर ही रहने पर मजबूर करता है। किसी active attacker को रोकने के लिए, आपको agent की नए tokens पाने की क्षमता को भी बंद करना होगा (identity को disable करना होगा), यही वजह है कि एक one-step off-switch और token requests की monitoring बहुत मायने रखती है।
अक्सर पूछे जाने वाले सवाल
क्या हमारे सभी agents के लिए एक ही service account होना ज़्यादा आसान नहीं है?
सेटअप करने में आसान है, लेकिन चलाना बहुत मुश्किल। एक शेयर्ड अकाउंट के साथ आप यह नहीं बता सकते कि किस agent ने क्या किया, आप हर agent को सिर्फ़ उसकी ज़रूरत की permissions नहीं दे सकते, और किसी गड़बड़ी के दौरान इसे रद्द करने से सभी agents एक साथ बंद हो जाएंगे।
अगर कोई सिस्टम सिर्फ़ static API keys को ही सपोर्ट करता हो तो क्या करें?
Key को secrets manager में रखें, उसे सिस्टम द्वारा अनुमत सबसे सीमित अधिकार दें, सिर्फ़ tool code को इसे फ़ेच करने दें, इसे तय शेड्यूल पर rotate करें, और इसके इस्तेमाल पर नज़र रखें। बाद में किसी बेहतर विकल्प के लिए उस सिस्टम को लिस्ट में डाल दें।
क्या इसे ठीक से करने के लिए मुझे SPIFFE की ज़रूरत है?
नहीं। SPIFFE workload identity के लिए केवल एक खुला मानक है। Cloud platforms के अपने workload identity फ़ीचर्स होते हैं। जो बात मायने रखती है वह है यह पैटर्न: रनिंग workload पर आधारित पहचान, short-lived credentials, और कॉपी किए गए secrets से बचाव।
क्या मॉडल को कभी कोई credential देखना चाहिए?
नहीं। मॉडल के context में मौजूद कोई भी चीज़ आउटपुट, लॉग या URL में जा सकती है। मॉडल किसी काम के लिए कहता है; tool code credential रखता है और उस काम को पूरा करता है।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।