اگر امروز برای اتصال عاملهای هوش مصنوعی خود به سرویسهای خارجی از فایلهای .env استفاده میکنید، در واقع یک بمب ساعتی امنیتی را در زیرساخت خود کار گذاشتهاید. باید بدانید که تکیه به کلیدهای ایستا، سریعترین راه برای انباشت بدهی فنی و ایجاد حفرههای امنیتی در مقیاس تولید است. این چالشها در واقع بخشی از یک بحران گستردهتر در امنیت عاملهاست که توصیههایی برای جلوگیری از تبدیل این ابزارها به حفرههای امنیتی برای آنها ارائه شده است.
محمد شریف استدلال میکند که توکنهای دسترسی شخصی (PAT)، استاندارد فعلی برای تولید AI، یک شکاف امنیتی بحرانی ایجاد میکنند. این توکنها باعث میشوند اعتبارنامههای بلندمدت در حافظه زماناجرا (Runtime Memory) و خط لولههای CI/CD باقی بمانند، بدون اینکه راه آسانی برای چرخش (Rotation) یا انتساب (Attribution) آنها وجود داشته باشد.
تصور کنید توسعهدهندهای در یک مرحله اولیه، ابتدا GITHUB_PAT=ghp_xxxxxxxxxxxx را به یک فایل .env اضافه میکند. سپس نوبت به توکنهای دیگر میرسد: SLACK_BOT_TOKEN=xoxb-xxxxxxxxxxxx برای Slack، NOTION_TOKEN=secret_xxxxxxxxxxxx برای Notion و LINEAR_API_KEY=lin_api_xxxxxxxxxxxx برای Linear. پیش از آنکه متوجه شوید، عامل هوش مصنوعی به مجموعهای رو به رشد از اعتبارنامههای بلندمدت وابسته میشود که در محیطهای محلی، اسرار کوبرنتیز (Kubernetes Secrets) و زیرساختهای تولید پراکنده شدهاند.
این مشکل زمانی رخ میدهد که عاملها از نمونههای اولیه ساده به استقرارهای پیچیده در محیط تولید تبدیل میشوند. پروتکلهای سنتی OAuth نیاز به حضور انسانی در مرورگر برای کلیک بر روی دکمه «Allow» دارند، اما عاملهای بدون رابط کاربری (Headless Agents) نه مرورگری دارند و نه کاربری که در لحظه اجرا حضور داشته باشد. در نتیجه، اکثر توسعهدهندگان در حال حاضر میان سه گزینه دشوار گیر میکنند: تحمل بدهی فنی توکنهای PAT، پذیرش پیچیدگی جریانهای سفارشی OAuth یا پذیرش «شعاع تخریب» گسترده در حسابهای سرویس مشترک.
شکست الگوهای سنتی
به نقل از تحلیلهای شریف، چهار الگوی رایج اما معیوب در این حوزه وجود دارد که توسعهدهندگان امروزه از آنها استفاده میکنند:
- توکنهای دسترسی شخصی (PAT): این سریعترین راه برای ساخت است، اما سادهترین مسیر برای انباشت بدهی فنی است. این روش منجر به چرخش دستی توکنها و دشواری در پاسخ به حوادث امنیتی میشود.
- OAuth سفارشی: این راهکار به عنوان راه «اصولی» شناخته میشود اما به یک بار اضافی تبدیل میشود. توسعهدهندگان باید اپلیکیشنها را ثبت کنند، Callbackها را مدیریت نمایند، توکنهای Refresh را رمزگذاری کنند و برای هر یکپارچگی، جریانهای موافقت (Consent Flows) بسازند.
- مدیریتکنندههای اسرار (Secrets Managers): ابزارهایی مثل AWS Secrets Manager، HashiCorp Vault و Azure Key Vault مشکل ذخیرهسازی را حل میکنند، اما مشکل احراز هویت (Authorization) را حل نمیکنند. در این ابزارها هیچ گردشکار تأییدی وجود ندارد تا بتوان یک عامل را از عامل دیگر تفکیک کرد. این تلاشی است در جهت ایمنسازی دسترسیها، مشابه آنچه پلتفرم 1Password برای مدیریت دسترسی عاملهای هوش مصنوعی پیادهسازی کرده است.
- حسابهای سرویس (Service Accounts): اگرچه راحت هستند، اما یک هویت مشترک ایجاد میکنند. اگر یک عامل به خطر بیفتد، هر workload که از آن حساب سرویس استفاده میکند، تحت تأثیر قرار میگیرد.
سازوکار TOFU؛ اعتماد در اولین استفاده
برای حل این بحران، شریف مدلی بر پایه Trust On First Use یا همان TOFU معرفی کرده است. این یک مفهوم است که از اثرانگشتهای SSH قرض گرفته شده است. وقتی یک کاربر برای اولین بار از طریق SSH به سروری متصل میشود، از او پرسیده میشود: «آیا به این میزبان اعتماد دارید؟». اگر تأیید شود، اثرانگشت ذخیره شده و اتصالات آینده بهطور خودکار انجام میشود.
در این مدل، به جای پیشتخصیص یک راز (Secret)، درگاه (Gateway) اثرانگشت عامل را در اولین درخواست پذیرفته و به آن اعتماد میکند. وقتی یک عامل ناشناس درخواست دسترسی به سرویسی را میدهد، فرآیند طبق این توالی دقیق پیش میرود:
- درگاه درخواست را متوقف (Pause) میکند.
- مالک انسانی اعلان را دریافت و تأیید میکند.
- اثرانگشت منحصربهفرد زماناجرای (Runtime Fingerprint) عامل ذخیره میشود.
- درخواستهای آتی از آن اثرانگشت خاص بهطور خودکار پردازش میشوند.
حذف کامل «راز» از چرخه
در این سیستم، عامل هرگز توکنهای Refresh، Client Secretها یا PATها را نمیبیند. در عوض، تنها یک توکن کوتاهمدت برای جلسه (Session) جاری دریافت میکند. هویت عامل از ویژگیهای زماناجرای آن استخراج میشود تا اطمینان حاصل شود که هر درخواست API دقیقاً به یک هویت خاص از عامل نسبت داده میشود.
این معماری «شعاع تخریب» (Blast Radius) را بهشدت کاهش میدهد. اگر یک عامل هک شود، تنها اثرانگشت مورد اعتماد آن باید ابطال (Revoke) شود. این اتفاق فوراً و بدون نیاز به چرخش کلیدهای اصلی یا استقرار مجدد کل زیرساخت رخ میدهد. این رویکرد یک تغییر حیاتی به سمت قابلیت حسابرسی (Auditability) بهتر ایجاد میکند، زیرا توسعهدهندگان دقیقاً میدانند کدام عامل، در چه زمانی و به کدام سرویس دسترسی داشته است.
یکپارچگی بومی با MCP
این سامانه حول محور پروتکل زمینهٔ مدل (Model Context Protocol یا MCP) بنا شده است. به دلیل این طراحی بومی، هر چارچوب سازگار — از جمله LangChain، CrewAI، Strands یا Bedrock AgentCore — میتواند بدون تغییر در کد داخلی خود از این مدل احراز هویت استفاده کند. این ادغام در واقع تکمیلکنندهی معماری MCP در پیادهسازی مرزهای Zero-Trust برای عاملهای خودگردان است.
بر اساس گزارش dev.to، این درگاه به جای پروکسی کردن تکتک درخواستها، از یک «تبادل توکن» (Token Exchange) استفاده میکند. عامل پس از احراز هویت، یک توکن بالادستی (Upstream Token) کوتاهمدت میگیرد و مستقیماً با ارائهدهنده ارتباط میگیرد. این طراحی گلوگاههای درگاه را حذف کرده، تأخیر (Latency) را کاهش میدهد، از پروتکلهای اختصاصی اجتناب کرده و سازگاری با ابزارهای موجود MCP را حفظ میکند.
تصمیمات پیشرفته امنیتی
برای رسیدن به سطح امنیت تجاری (Production-grade)، چندین مکانیزم خاص در این سیستم اجرا شده است:
- URLهای اتصال چرخان: URLهای اتصال از Slugهای چرخان استفاده میکنند. به دست آوردن یک URL قدیمی برای دسترسی کافی نیست؛ درخواست باید حتماً با اثرانگشت زماناجرای مورد اعتماد تطبیق داشته باشد.
- ثبت دینامیک کلاینت (Dynamic Client Registration): در جاهایی که پشتیبانی میشود، هر مشتری به جای اشتراک در یک کلاینت پلتفرم، OAuth Client مخصوص به خود را دریافت میکند. این کار تداخل در محدودیت نرخ درخواست (Rate-limit) را کاهش داده و شکستها را بین سازمانهای مختلف ایزوله میکند.
- کشف ابزارهای نامرئی: عامل صرفاً ابزارهایی مانند
github_list_issues،github_create_comment،slack_post_message،linear_create_issueوnotion_query_databaseرا شناسایی میکند، بدون اینکه نیاز باشد کلیدهای زیربنایی آنها را مدیریت کند.
کاربرد در دنیای واقعی
امروز پلتفرم Passkey از ۱۹ یکپارچهساز از جمله GitHub، Slack، Jira، Confluence، Notion، Stripe، Salesforce، HubSpot و Linear پشتیبانی میکند. توسعهدهندگان میتوانند با نصب بروکر محلی از طریق دستور npx passkey-mcp و مدیریت تأییدها در داشبورد Passkey در آدرس https://dashboard.v2n2x.com آن را پیاده کنند.
این تغییر، پیکربندی عامل را به یک بلوک JSON ساده تبدیل میکند. به جای لیستی از متغیرهای محیطی حساس، عامل فقط دستور passkey را تعریف میکند:
{
"mcpServers": {
"passkey": {
"command": "npx",
"args": ["passkey-mcp"]
}
}
}
برای توسعهدهنده عملیاتی، این به معنای پایان پراکندگی فایلهای .env است. دیگر نیازی نیست بین سرعت یک PAT و امنیت یک پیادهسازی کامل OAuth یکی را انتخاب کنید. توازن (Trade-off) به سمتی حرکت میکند که امنیت در سطح زیرساخت مدیریت شود نه در سطح کد. این رویکرد این فرض را به چالش میکشد که عاملهای AI باید هویتهای بلندمدت خود را داشته باشند. با تلقی کردن عاملها به عنوان موجوداتی گذرا که توسط یک درگاه مرکزی تأیید میشوند، صنعت میتواند بالاخره مدیریت اعتبارنامهها را از قابلیتهای عملیاتی جدا کند.
گام بعدی شما
- اگر از PATها در محیط Production استفاده میکنید، معماری TOFU را برای حذف کلیدهای استاتیک بررسی کنید.
- ابزارهای سازگار با پروتکل MCP را در استک خود قرار دهید تا از سیستمهای احراز هویت مدرن بهرهمند شوید.
- اثرانگشتهای زماناجراه را جایگزین حسابهای سرویس مشترک کنید تا شعاع تخریب در صورت نفوذ محدود شود.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما درباره تراشههای Blackwell مراجعه کنید.




گفتگو