تیپ #۴۱
کمترین دسترسی لازم برای ابزارها و کلیدهای API
به هر ابزاری که در اختیار ایجنت میگذارید، کلیدی بدهید که فقط همان یک کار را انجام دهد و بس. مثلاً ابزار ارسال ایمیل باید کلیدی داشته باشد که تنها اجازهٔ ارسال دارد، نه خواندن صندوق ورودی و نه حذف پیامها؛ اینطور اگر تزریق پرامپت ایجنت را منحرف کند، فقط یک در 🔑 باز میشود نه کل ساختمان. تا جای ممکن از توکنهای کوتاهمدت و مخصوص هر تسک استفاده کنید و هر فراخوانی را لاگ بگیرید تا پیش از گستردهتر کردن دسترسی، بدانید واقعاً کدام scope مصرف میشود.
توضیح کاملتر
اصل کمترین دسترسی یعنی هر ابزار، سرویس یا کلیدی که در اختیار ایجنت قرار میگیرد فقط همان اختیاراتی را داشته باشد که برای انجام وظیفهاش لازم است. در عمل این کار با ساخت کلید جداگانه برای هر ابزار، محدود کردن scope، تعیین سقف مصرف و کوتاه کردن عمر توکن انجام میشود. اهمیتش وقتی روشن میشود که بدانیم مدل زبانی مرز میان «داده» و «دستور» را بهسختی تشخیص میدهد؛ یک متن آلوده در یک صفحهٔ وب یا ایمیل میتواند ایجنت را وادار کند ابزارهایش را علیه خودتان به کار ببرد. اگر کلید آن ابزار فقط اجازهٔ خواندن یک مخزن مشخص را داشته باشد، همان حمله در بدترین حالت به افشای همان مخزن محدود میشود، نه حذف کل دیتابیس. یک مثال ملموس: بهجای یک کلید ادمین که همهٔ کارها را انجام میدهد، برای ابزار جستوجو یک کلید فقطخواندنی روی یک ایندکس بسازید و برای ابزار ارسال پیام کلیدی که تنها به یک کانال مشخص دسترسی دارد. علاوه بر این، لاگ کردن هر فراخوانی و بازبینی دورهای scopeها کمک میکند دسترسیهای اضافی را که هیچکس استفاده نمیکند پیدا و حذف کنید.
← بازگشت به همهٔ نکتههای روز