सीक्रेट्स, पहचान और एजेंट असल में कौन है
हर एजेंट एक्शन किसी न किसी के तौर पर होता है। उस "किसी" को सही तय करना एक ऑडिट ट्रेल और बस कंधे उचका देने के बीच का फ़र्क है।
60 सेकंड में
सीक्रेट्स, पहचान और एजेंट असल में कौन है
हर एजेंट एक्शन किसी न किसी के तौर पर होता है। उस "किसी" को सही तय करना एक ऑडिट ट्रेल और बस कंधे उचका देने के बीच का फ़र्क है।
नियम एक: मॉडल कभी कोई सीक्रेट नहीं देखता
- "यह रही API key: sk-... सर्विस को कॉल करने के लिए इसका इस्तेमाल करें।"
- सिस्टम प्रॉम्प्ट में पेस्ट किए गए सीक्रेट्स।
- एनवायरनमेंट वैरिएबल्स जिन्हें एजेंट का कोड पढ़ और प्रिंट कर सकता है।
- लंबे समय तक चलने वाली एक ही key जिसे हर एजेंट शेयर करता है।
- मॉडल
send_invoice(id)को कॉल करता है; टूल के पास key होती है। - सीक्रेट्स वॉल्ट में रहते हैं, जिन्हें कॉल के समय टूल कोड फेच करता है।
- कम समय के लिए बने टोकन, जो हर रन पर बनते हैं और कुछ ही मिनटों में एक्सपायर हो जाते हैं।
- हर एजेंट और हर एनवायरनमेंट के लिए एक अलग पहचान।
नियम दो: एजेंट पहचान होते हैं, अकाउंट नहीं
| सवाल | खराब जवाब | अच्छा जवाब |
|---|---|---|
| यह किसने किया? | svc-ai-prod | user:4471 की तरफ से agent:support-triage |
| यह क्या कर सकता है? | जो कुछ भी सर्विस अकाउंट कर सकता है | सटीक permissions की लिस्ट वाला एक स्कोप्ड रोल |
| कब तक? | हमेशा के लिए | 15 मिनट, फिर दोबारा जारी किया गया |
| हम इसे कैसे रोकें? | शेयर्ड key को रोटेट करें और सब कुछ ठप कर दें | एक ही एक्शन में किसी एक पहचान को रिवोक करें |
| किस वर्शन ने काम किया? | पता नहीं | रिकॉर्ड किया गया: एजेंट वर्शन, मॉडल, प्रॉम्प्ट हैश |
नियम तीन: हर एक्शन के साथ एंड यूज़र जुड़ा होता है
सीक्रेट्स की एक प्रैक्टिकल चेकलिस्ट
- प्रॉम्प्ट में कभी कोई सीक्रेट नहीं। आज ही अपने प्रॉम्प्ट टेम्प्लेट्स में
key,token,passwordके लिए grep करें। - एजेंट के एनवायरनमेंट में लंबे समय तक चलने वाले क्रेडेंशियल्स नहीं होने चाहिए।
- हर एजेंट और हर एनवायरनमेंट के लिए एक पहचान; dev और prod के बीच कभी शेयर न करें।
- कम समय की एक्सपायरी, ऑटोमैटिक रोटेशन, एक क्लिक में रिवोकेशन।
- मॉडल आउटपुट और लॉग्स पर सीक्रेट स्कैनिंग, क्योंकि लॉग्स भी लीक होते हैं।
- एजेंट जिन भी क्रेडेंशियल्स का इस्तेमाल कर सकता है, उनमें से हर एक के लिए एक तय ओनर।
और देखें और पढ़ें
लैब
ऐसा सीक्रेट जिसे आपका मॉडल सचमुच लीक नहीं कर सकता, क्योंकि वह इसे कभी देखता ही नहीं।
समस्या
send_invoice(order_id) को कॉल करे और टूल कम समय का क्रेडेंशियल फेच करके कॉल करे। फिर एजेंट से वह key उगलवाने की कोशिश करें।# BEFORE — the key is in the prompt, one injection from a query string
SYSTEM = f"You are an assistant. Use API key {API_KEY} to call the billing service."
# AFTER — the model names an action; the tool holds the credential
def send_invoice(order_id: str) -> str:
token = vault.issue("billing", ttl_seconds=300) # minted per call
return billing.post(f"/invoices/{order_id}", token=token)आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1बिलिंग सर्विस से आने वाले एक एरर मैसेज में टोकन शामिल है। यह कहाँ पहुँचता है, और आप क्या बदलते हैं?दिखाएं
Q2कई यूज़र्स के लिए काम करने वाले एजेंट के लिए ऐसा आइडेंटिटी मॉडल डिज़ाइन करें, ताकि एक के कॉम्प्रोमाइज़ होने से हर कोई एक्सपोज़ न हो।दिखाएं
अक्सर पूछे जाने वाले सवाल
क्या हो अगर किसी टूल को सचमुच यूज़र के अपने क्रेडेंशियल्स की ज़रूरत हो?
डेलिगेटेड ऑथराइजेशन (OAuth-स्टाइल) का इस्तेमाल करें — ताकि यूज़र एक स्कोप्ड टोकन दे जिसे आपका कोड संभालता है और मॉडल कभी नहीं पढ़ता। मॉडल एक्शन को ट्रिगर करता है; टोकन कॉन्टेक्स्ट से बाहर रहता है।
क्या हर सिस्टम में एजेंटों के अपने अकाउंट होने चाहिए?
हाँ, सबसे सीमित रोल के साथ जो काम कर सके। इसमें थोड़े सेटअप की ज़रूरत होती है और इसी वजह से आपका ऑडिट लॉग सवाल खड़े करने के बजाय सवालों के जवाब देता है।
टोकन कितने कम समय के होने चाहिए?
एक रन से भी छोटे। मिनटों में, दिनों में नहीं। अगर टोकन टास्क खत्म होने के बाद भी बचा रहता है, तो लीक भी टास्क खत्म होने के बाद तक बनी रहेगी।
उन एजेंटों का क्या जिन्हें तब काम करना होता है जब कोई लॉग इन नहीं होता?
तब एजेंट की अपनी पहचान ही कर्ता (actor) होती है, और उसकी permissions को यह मानकर सीमित किया जाना चाहिए कि घंटों तक किसी इंसान का ध्यान इस पर नहीं जाएगा। रात भर की आज़ादी और ढेरों permissions — यही वह मेल है जो सुबह-सुबह बुरे सरप्राइज़ देता है।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।