فاز 15 · درس 14

کلید قطع اضطراری، مدارشکن و توکن قناری در ایجنت‌ها

نوع
مفهومی
زمان
حدود 60 دقیقه
زبان‌ها
Python (stdlib, three-detector simulator: kill switch, circuit breaker, canary)
پیش‌نیاز
فاز 15 · 13 (حاکم‌های هزینه)، فاز 15 · 10 (حالت‌های دسترسی)
یک سوپاپ ایمنی صنعتی فلزی قرمز رنگ با فیوز قطع مدار و یک پرنده‌ی قناری مینیاتوری در کنار آن
فهرست مطالب
  1. صورت مسئله
  2. مفاهیم کلیدی
  3. کلیدهای قطع اضطراری
  4. مدارشکن‌ها
  5. توکن‌های قناری
  6. چرایی لایه‌بندی آشکارسازهای آماری و محدودیت‌های سفت‌وسخت
  7. قرنطینه از طریق تغییر مسیر داده در eBPF
  8. مواردی که هیچ آشکارسازی به دام نمی‌اندازد
  9. اجرای عملی
  10. تحویل پروژه
  11. تمرین‌ها
  12. اصطلاحات کلیدی
  13. برای مطالعه‌ی بیشتر

بسیاری از تیم‌ها تصور می‌کنند با تعیین سقف بودجه‌ی دلاری یا محدودسازی توکن‌های مصرفی، ایجنت‌های هوش مصنوعی کاملاً مهار شده‌اند. واقعیت این است که یک اقدام فاجعه‌بار — مثل حذف یک دیتابیس یا درز دادن کلیدهای دسترسی — می‌تواند تنها با چند توکن ارزان و در کسری از ثانیه رخ دهد. بودجه‌ی مصرفی به‌تنهایی نمی‌تواند تعیین کند ایجنت در دامنه‌ی هزینه‌اش مجاز به چه کارهایی است.

در این درس یاد می‌گیرید که چگونه با پیاده‌سازی سه‌گانه‌ی دفاعیِ کلاسیک یعنی کلید قطع اضطراری (Kill switch)، مدارشکن (Circuit breaker) و توکن‌های قناری (Canary tokens)، بدون اعتماد به گزارش خودِ مدل، جلوی رفتارهای پرخطر و خروج داده را در لایه‌های مختلف سیستمی بگیرید.

کلید قطع اضطراری (Kill switch) متغیری بولی (boolean) خارج از دامنه‌ی ویرایش ایجنت است — مثل یک کلید در Redis، فلگ قابلیت (feature flag) یا فایلی پیکربندی‌شده و امضادار — که ایجنت را کاملاً از کار می‌اندازد. مدارشکن (Circuit breaker) دقیق‌تر است: با دیدن الگویی مشخص فعال می‌شود (مثلاً پنج فراخوانی ابزار کاملاً یکسان پشت سر هم)، مسیر خطا را موقتاً متوقف می‌کند و کار را به یک انسان می‌سپارد. توکن قناری (Canary token) از شگردهای کلاسیک فریب بهره می‌گیرد: اعتبارنامه‌ای جعلی یا رکوردی تله (honeypot) که ایجنت هیچ دلیل موجهی برای دسترسی به آن ندارد و به‌محض لمس شدنش، هشدار صادر می‌شود. مسیرهای داده‌ی مبتنی بر eBPF (مثل Cilium) می‌توانند ترافیک خروجی یک پاد (pod) قرنطینه‌شده را در سطح کرنل به یک هانی‌پات جرم‌یابی تغییر مسیر دهند؛ بنچمارک‌های منتشرشده از Cilium تاخیر صدک 99 (P99) زیر یک میلی‌ثانیه‌ای را برای مسیر داده تحت بار نشان می‌دهند (بودجه‌ی زمانی انتشار سیاست، به نحوه‌ی رسیدن به‌روزرسانی به نود بستگی دارد، نه خود مسیر داده). آشکارسازهای آماری (EWMA، CUSUM) که با خط مبنای متغیر تطبیق می‌یابند، انحراف تدریجی را بی‌صدا می‌پذیرند — پس آن‌ها را با محدودیت‌های سفت‌وسخت پایه‌ای (constitutional limits) ترکیب کنید؛ محدودیت‌هایی که هرگز انعطاف نشان نمی‌دهند.

صورت مسئله

حاکم‌های هزینه (درس 13) میزان خرج کردن ایجنت را محدود می‌کنند، اما تعیین نمی‌کنند ایجنت درون همان بودجه چه کارهایی انجام دهد. ایجنتی با سقف سرعت 50 دلار همچنان می‌تواند یک کلید محرمانه را به بیرون درز دهد، پست اشتباهی منتشر کند یا منبعی را پاک کند — اقداماتی که عواقب سنگین دارند، اغلب از نظر مصرف توکن بسیار ارزان تمام می‌شوند.

این درس سه آشکارساز را بررسی می‌کند که کنار لایه‌ی هزینه می‌نشینند:

  1. کلید قطع اضطراری: دکمه‌ی خاموش/روشن بولی که کاملاً دور از دسترس ایجنت نگه داشته می‌شود.
  2. مدارشکن: آشکارساز الگوی اقدام که مسیر خاصی را متوقف می‌کند.
  3. توکن قناری: طعمه‌ای که ایجنت هیچ دلیل موجهی برای دسترسی به آن ندارد و با دست زدن به آن، خودش را لو می‌دهد.

هر سه، دستاوردهای مهندسیِ پیش از دوران مدل‌های زبانی بزرگ هستند. فریب کلاسیک، مدارشکن‌های نرخ دسترسی (rate-limit breakers) و کلیدهای قطع مبتنی بر فلگ ویژگی، همگی پیش از ایجنت‌های خودمختار هم وجود داشتند. آنچه تغییر کرده، سطح حمله است: ایجنت‌ها محتوای غیرقابل‌اعتماد را می‌خوانند (درس 11)، حافظه‌ی خود را دستکاری می‌کنند و می‌توانند چندین اقدام در ظاهر امن را ترکیب کرده و به نتیجه‌ای ناامن برسند. این آشکارسازها کارآمدند، چون به گزارش خودِ ایجنت هیچ اعتمادی ندارند.

مفاهیم کلیدی

کلیدهای قطع اضطراری

کلید قطع اضطراری مقداری بولی است که ایجنت آن را می‌خواند، اما نمی‌تواند رویش بنویسد. گزینه‌های پیاده‌سازی:

  • فلگ قابلیت در سرویسی مدیریت‌شده: LaunchDarkly، Statsig، Unleash. تغییرات ظرف چند ثانیه اعمال می‌شوند.
  • کلید Redis که ایجنت پیوسته وضعیتش را استعلام می‌کند: ساده است؛ اما فرایند ایجنت باید در هر نوبت گفت‌وگو آن را بررسی کند.
  • پیکربندی امضاشده در ذخیره‌ساز ابری (Object Storage): ایجنت امضای دیجیتال را هنگام بالا آمدن می‌سنجد و وضعیت‌های فاقد امضا را رد می‌کند.
  • سیگنال سطح سیستم‌عامل یا توقف چرخه‌ی حیات کانتینر: دستور kill در Docker، دستور kubectl delete pod در کوبرنتیز، یا متوقف کردن فرایند با systemd.

ویژگی‌های یک کلید قطع اضطراری درست:

  • ایجنت نمی‌تواند آن را خاموش (off) کند. (در سیستمی نگهداری می‌شود که دسترسی‌های ایجنت امکان نوشتن در آن را ندارند.)
  • پیش از هر اقدام پیامدساز بررسی می‌شود، نه فقط موقع راه‌اندازی.
  • وقتی خاموش است، هیچ اثر بیرونی قابل‌مشاهده‌ای از ایجنت سر نمی‌زند؛ حتی ثبت لاگ در سیستم‌هایی که ایجنت به آن‌ها دسترسی دارد متوقف می‌شود.
  • فعال‌سازی مجددش فقط با اقدام مستقیم و صریح انسان انجام می‌پذیرد، نه با سپری شدن زمان مشخص (timeout خودکار).

مدارشکن‌ها

مدارشکن جلوی یک الگوی خاص را می‌گیرد، نه کل ایجنت را. ساختار کلاسیک آن (برگرفته از کتاب سال 2007 نایگارد که هنوز هم کاربرد دارد):

  • بسته (Closed): اقدام مجاز است.
  • باز (Open): اقدام مسدود می‌شود.
  • نیمه‌باز (Half-open): پس از یک دوره‌ی تنفس (cool-down)، بین 1 تا 3 تلاش برای آزمون مجاز است (پیش‌فرض 1 بار)؛ موفقیت این تلاش مدار را می‌بندد و هرگونه خطای مجدد، آن را دوباره باز می‌کند.

محرک‌های مدارشکن مرتبط با ایجنت:

  • پنج فراخوانی ابزار کاملاً یکسان پشت سر هم (حلقه‌ی تکراری).
  • پنج شکست متوالی در فراخوانی یک ابزار با ورودی‌های گوناگون (خطای سیستمی).
  • بالا رفتن نرخ فراخوانی ابزار از آستانه‌ای مشخص (سرعت در درس 13).
  • فراخوانی ابزاری خاص (مثل file.delete) پس از خواندن محتوایی خارج از دامنه‌ی اعتماد (درس 11).

توکن‌های قناری

توکن‌های قناری (یا هانی‌توکن‌ها) ورودی‌هایی هستند که ایجنت هیچ‌وقت نباید به سراغشان برود. دسترسی به آن‌ها، خودِ زنگ خطر است.

چند نمونه برای ایجنت‌ها:

  • کلید جعلی AWS_SECRET_ACCESS_KEY در محیط، بدون هیچ سطح دسترسی واقعی. هر تلاشی برای خارج کردن آن فوراً شناسایی و منسوب به ایجنت می‌شود.
  • رکوردی ساختگی در دیتابیس با مقدار مشخصِ دیده‌بان (sentinel value). هر خواندن یا به‌روزرسانی این رکورد، آژیر هشدار را به صدا درمی‌آورد.
  • فایلی ساختگی در فضای کاری. خواندن یا ویرایش آن رفتاری کاملاً مشکوک تلقی می‌شود.
  • داده‌ای ساختگی در حافظه که هنگام شروع نشست تزریق می‌شود. اگر بعدها در خروجی دیده شود، نشان می‌دهد حافظه نشت کرده است.

طراحی قناری باید ویژه‌ی همان جریان کاری باشد. اگر ایجنت دلیلی موجه برای دسترسی به یک قناری داشته باشد، آن قناری صرفاً نویز و هشدار کاذب ایجاد می‌کند.

چرایی لایه‌بندی آشکارسازهای آماری و محدودیت‌های سفت‌وسخت

آشکارسازهای آماری (EWMA، CUSUM، نمره‌ی z برای نرخ فراخوانی ابزار) خود را با خط مبنای متغیر وفق می‌دهند. این ویژگی برای تغییرات طبیعی سیستم عالی است، اما در برابر حملات تدریجی تبدیل به نقطه‌ضعف می‌شود؛ یک نفوذگر صبور می‌تواند خط مبنا را چنان آرام جابه‌جا کند که هیچ هشداری فعال نشود.

محدودیت‌های سفت‌وسخت پایه‌ای (درس 17) هرگز کوتاه نمی‌آیند. یک قاعده‌ی پایه‌ای مانند «هرگز به secrets@ ایمیل نزن» ساده‌تر است، قابلیت ممیزی دارد و با فریب‌های تدریجی دور نمی‌خورد. الگوی لایه‌بندی به این شکل کار می‌کند: آشکارسازهای آماری بیشتر نویزها را مهار می‌کنند و محدودیت‌های سفت‌وسخت جلوی حمله‌ای را می‌گیرند که توانسته از آشکارساز بگذرد.

قرنطینه از طریق تغییر مسیر داده در eBPF

سیاست‌های شبکه‌ای مبتنی بر eBPF در Cilium می‌توانند ترافیک خروجی پادِ قرنطینه‌شده را در لایه‌ی کرنل به یک هانی‌پات جرم‌یابی هدایت کنند. بنچمارک‌های عمومی Cilium نشان‌دهنده‌ی تاخیر صدک 99 زیر یک میلی‌ثانیه برای مسیر داده در آزمون TCP_RR است؛ با این حال، بودجه‌ی زمانیِ واقعی برای شروع قرنطینه در کلاستر، بیش از هر چیز تابع مدت‌زمانی است که اعمال سیاست از کنترل‌پلین تا رسیدن به نود طول می‌کشد (روی کوبرنتیز با اپراتوری که از قبل لود شده باشد، چندصد میلی‌ثانیه برآوردی منطقی است؛ تاخیر دنباله نیز به ابعاد کلاستر و چرخه‌ی تطبیق وابسته است). این سازوکار دو دستاورد دارد: نخست اینکه ایجنت هیچ داده‌ی واقعی را به بیرون درز نمی‌دهد، و دوم اینکه تمام رفتارهای ایجنت در ساندباکسِ هانی‌پات به‌دقت ثبت و مشاهده می‌شود. این شیوه همان منطق توکن قناری را در لایه‌ای دیگر پیاده می‌کند: ایجنت با کارهایی که در وضعیت محدودشده انجام می‌دهد، نیت خود را آشکار می‌سازد.

مواردی که هیچ آشکارسازی به دام نمی‌اندازد

  • حملات معنایی برگرفته از ترکیب دستورهای مجاز: هر اقدام به‌تنهایی از سد آشکارسازها می‌گذرد؛ مشکل در برآیند و هم‌نشینی آن‌هاست. این همان شکست ترکیبی در حالت خودکار (Auto Mode) است که در درس 10 دیدیم.
  • حملاتی که خودِ آشکارساز را هدف قرار می‌دهند: اگر ایجنت صفحه‌ای را بخواند که به آن می‌گوید «پیش از اقدام، قناری را از کار بینداز» و توانایی انجام این کار را داشته باشد، سازوکار دفاعی فرو می‌ریزد. توکن‌های قناری حتماً باید در سیستم‌هایی قرار گیرند که ایجنت دسترسی تغییر آن‌ها را ندارد.
مدارشکنالگو کلید را فعال می‌کند
CIRCUIT BREAKERA circuit breaker watches for a specific action pattern — here, five identical destructive calls in a row. When the pattern trips, it snaps from closed to open: the offending path pauses and escalates to a human. Unlike a cost cap, it does not trust the agent's self-report; it reacts to what the agent actually does.فراخوانی ابزارdelete(record_42)delete(record_42)delete(record_42)delete(record_42)delete(record_42)باز — متوقف‌شدهمدارشکن
یک مدارشکن مراقب الگوی رفتاری خاصی است — در اینجا، پنج فراخوانی مخرب و یکسان پشت سر هم. با فعال شدن این الگو، مدار از حالت بسته به باز تغییر وضعیت می‌دهد: مسیر خطا متوقف شده و به انسان ارجاع داده می‌شود. برخلاف سقف هزینه، مدارشکن به گزارش خود ایجنت اعتماد نمی‌کند، بلکه به عملکرد واقعی آن واکنش نشان می‌دهد.

اجرای عملی

فایل code/main.py مسیر حرکت یک ایجنت را در مواجهه با سه آشکارساز شبیه‌سازی می‌کند: کلید قطع اضطراری مستقر در یک دیکشنری خارجی، مدارشکنی که با پنج فراخوانی ابزارِ یکسان فعال می‌شود، و فایل قناری که باز کردن آن زنگ خطر را به صدا درمی‌آورد. در این سناریو یک مسیر تستی ارزیابی می‌شود: اقدامات مجاز، حلقه‌ی تکراری، دست‌درازی به قناری، و وضعیتی که در آن با کشیده شدن کلید قطع اضطراری، تمامی اقدامات ایجنت در دم متوقف می‌شوند.

تحویل پروژه

سند outputs/skill-tripwire-design.md ساختار آشکارسازهای پیشنهادی را برای استقرار یک ایجنت بررسی کرده و کاستی‌ها را نشانه‌گذاری می‌کند (نبود کلید قطع اضطراری، نبود توکن قناری، یا آستانه‌های بیش‌ازحد سهل‌گیرانه‌ی مدارشکن).

تمرین‌ها

  1. اسکریپت code/main.py را اجرا کنید. مطمئن شوید که مدارشکن در نوبت 5 (پنجمین فراخوانی ابزارِ کاملاً یکسان) و قناری در نوبت 9 (خواندن کلید جعلی) تریگر می‌شوند.

  2. یک آشکارساز آماری اضافه کنید: نمره‌ی z مبتنی بر EWMA روی نرخ فراخوانی ابزار. مسیری را به سیستم بدهید که بسیار کند و تدریجی منحرف می‌شود و نشان دهید آشکارساز اصلاً فعال نمی‌شود. سپس محدودیتی سفت‌وسخت اعمال کنید (حداکثر 50 فراخوانی ابزار در 10 دقیقه) و نشان دهید روی همین سناریو، این محدودیت سفت‌وسخت خطا را ثبت می‌کند.

  3. یک دسته‌ی توکن قناری برای ایجنت مرورگر وب طراحی کنید (درس 11). دست‌کم سه قناری و تخلفی را که هر کدام رهگیری می‌کنند مشخص کنید.

  4. مستندات سیاست شبکه در Cilium را بخوانید. جریان کاری قرنطینه از طریق تغییر مسیر ترافیک خروجی را با جزئیات توصیف کنید: کدام انتخاب‌گر سیاست (policy selector)، کدام پاد، کدام بازنویسیِ ترافیک خروجی و چه هشداری؟ چه عواملی تاخیر واقعی میان «تصمیم‌گیری برای قرنطینه» تا «اولین بسته‌ی تغییرمسیرداده‌شده» را رقم می‌زنند؟

  5. سازوکار فعال‌سازی دوباره را برای ایجنتی که با کلید قطع اضطراری خاموش شده تدوین کنید. چه کسی صلاحیت فعال‌سازی دارد؟ چه مواردی باید مستند شوند؟ پیش از راه‌اندازی دوباره، چه پارامترهایی از ایجنت باید بازنگری و اصلاح شوند؟

اصطلاحات کلیدی

اصطلاح در گفتگوهای عامیانه معنای دقیق فنی
کلید قطع اضطراری (Kill switch) «دکمه‌ی خاموش» متغیر بولی خارج از دامنه‌ی ویرایش ایجنت؛ پیش از هر اقدام پیامدساز بررسی می‌شود
مدارشکن (Circuit breaker) «توقف الگو» توقف اقدام بر پایه‌ی تکرار، نرخ خطا یا محدودیت نرخ دسترسی
توکن قناری (Canary token) «هانی‌توکن» طعمه‌ای که ایجنت هیچ دلیل موجهی برای دسترسی به آن ندارد؛ دسترسی به آن هشدار می‌دهد
هانی‌پات (Honeypot) «ساندباکس جرم‌یابی» ترافیک یا فضای کاری هدایت‌شده که رفتار ایجنتِ قرنطینه‌شده در آن تحلیل می‌شود
میانگین متحرک نمایی (EWMA) «میانگین متحرک» میانگینی با وزن‌دهی نمایی؛ با تغییرات تدریجی وفق پیدا می‌کند (هم مزیت و هم رخنه)
مجموع تجمعی (CUSUM) «مجموع تجمعی» شناسایی انحراف‌های ادامه‌دار نسبت به خط مبنا
محدودیت سفت‌وسخت (Hard limit) «قاعده‌ی پایه‌ای» منعطف نمی‌شود؛ فارغ از رفتارهای پیشین همواره پایدار است
محدودیت پایه‌ای (Constitutional limit) «قاعده‌ی همیشه صادق» پیوندخورده با قانون اساسی ایجنت در درس 17؛ توسط ایجنت دستکاری نمی‌شود

برای مطالعه‌ی بیشتر

سؤالات متداول

تفاوت مدارشکن با کلید قطع اضطراری چیست؟

کلید قطع اضطراری یک سوییچ بولی خارجی است که کل فعالیت ایجنت را متوقف می‌کند؛ اما مدارشکن فقط یک الگوی رفتاری خاص (مثل 5 بار فراخوانی ابزارِ یکسان) را موقتاً مسدود کرده و کار را به ناظر انسانی می‌سپارد.

توکن قناری یا هانی‌توکن در محیط ایجنت چطور کار می‌کند؟

توکن قناری طعمه‌ای ساختگی (مثل کلید دسترسی جعلی یا رکورد دیتابیس خاص) است که ایجنت دلیلی موجه برای لمس آن ندارد؛ هرگونه خواندن یا ارسال آن بلافاصله آلارم امنیتی ایجاد می‌کند.

چرا نمی‌توان تنها به آشکارسازهای آماری مانند EWMA تکیه کرد؟

آشکارسازهای آماری با تغییرات تدریجی خط مبنا وفق پیدا می‌کنند و یک مهاجم با انجام حملات آهسته می‌تواند بدون فعال کردن هشدار از آن‌ها عبور کند؛ بنابراین باید با محدودیت‌های سفت‌وسخت ترکیب شوند.

ما رو توی گوگل بیشتر ببین

با افزودن نکست ادمین به «منابع ترجیحی» گوگل، درس‌ها و مطالب ما را در بخش اخبار برتر جستجو بیشتر می‌بینید.