تأمین پروتکل زمینه مدل

نویسندگان: الکس روزنزویگ.
در بلوک ، ما تلاش کرده ایم تا با ساختن “سرورهای MCP” که به منظور کمک به ساخت غازهای عامل هوش مصنوعی (AI) ما را می توان با سیستم ها و ابزارهایی که به آنها اهمیت می دهیم ، توانایی های ابزار ابزار هوش مصنوعی را تقویت کنیم.
تیم امنیت اطلاعات بلوک (INFOSEC) به شدت درگیر این کار بوده است و ما می خواستیم یادگیری های خود را در این فضا ضبط کنیم تا به دیگران کمک کنیم. ما انتظار داریم که در حال رشد و استفاده از این موارد از جمله استفاده از فناوری در حوزه امنیتی باشد.
پروتکل زمینه مدل (MCP) چیست
پروتکل زمینه Model (MCP) پروتکل است که توسط Anthropic ساخته شده است و دارای ورودی از مهندسان بلوک است و باعث می شود ایجاد ادغام برای عوامل اتصال و استفاده از ابزارهای دیگر آسان تر شود. به عبارت ساده تر ، اگر می خواهید AI به SaaS Solutions (به عنوان مثال Github ، JIRA) ، CLI Tools (به عنوان مثال AWS CLI) یا برنامه های سفارشی خود متصل شوید ، می توانید یک سرور MCP بنویسید و چگونه به درستی تعامل داشته باشید.
این مزایای عظیمی دارد زیرا می توانیم رابط های تعیین کننده و مشخصی ایجاد کنیم که میزان “آزمایش/نیروی بی رحمانه” مورد نیاز برای انجام کارهای مفید را کاهش می دهد.
یک مورد استفاده مانند “این بلیط را از JIRA بخوانید و سپس repo مربوط به GitHub را کلون کنید و ویژگی را پیاده سازی کنید” اگر عامل مجبور نباشد نحوه تعامل با JIRA ، GitHub و Git CLI را انجام دهد ، بیشتر موفق می شود.
این به مأمورین کمک می کند تا به جای سوزاندن نشانه ها در درک مشخصات API تعریف شده ، وقت خود را صرف حل مشکلات جدید کنند.
در زیر کد مثال از ابزار MCP است که با API Snowflake ادغام می شود.
@mcp.tool()
async def submit_feedback(
feedback: str
) -> Dict[str, Union[str, int, List]]:
"""Submit feedback to the Snowflake team.
Args:
feedback: Feedback message
Returns:
Dictionary containing feedback status
"""
return snowflake_client.submit_feedback(
feedback_text=feedback
)
تصورات غلط MCP
برخی از تصورات غلط جزئی در مورد MCP وجود دارد ، که به طور واضح توسط برخی از لفظی ها که به طور دقیق با فن آوری های مشابه تر هماهنگ نیستند ، تشدید می شود. بزرگترین نقطه سردرگمی اصطلاحات “سرورهای MCP” است.
پس از بررسی در ابتدا MCP ، من متوجه چندین مرجع به “سرورهای MCP” شدم ، که باعث شد من اعتقاد داشته باشم که ادغام با آنها نیاز به اصلاحاتی در حمایت از برنامه دارد.
با این حال ، این “سرورها” به عنوان یک لایه مشتری (محلی یا از راه دور) عمل می کنند تا به عملکرد پروکسی عامل کمک کند تا به یک سرویس ، ابزار ، API یا RPC موجود باشد.
هنگام تأمین ادغام MCP باید در مورد دو مجموعه ارتباطات فکر کنیم:
- چگونه نماینده با سرور MCP صحبت می کند؟
- سرور MCP چگونه به عنوان مشتری برای سیستمی که به آن متصل می شود عمل می کند؟
ما می توانیم این را توسط:
- درمان نماینده به عنوان یک مشتری غیر تعیین کننده که می تواند به طور خودسرانه از ابزارهای ارائه شده توسط سرور MCP تماس بگیرد. این به این دلیل است که ما نمی دانیم چه چیزی را ارائه می دهد.
- درمان سرور MCP به عنوان یک کتابخانه مشتری برای ابزار/ابزاری که در آن ادغام شده است. نوع مشتری می تواند متفاوت باشد (GRPC ، استراحت ، صابون ، CLI و غیره) اما در عمل ، MCPS به سادگی روشی رمزگذاری شده برای اجرای یک عمل ارائه می دهد.
برای سابق ، ما می توانیم به شیوه های موجود تکیه دهیم ، دامنه دسترسی را درک کنیم و در صورت استفاده نامناسب از چه خطراتی در آنها وجود دارد.
برای دومی ، ما می توانیم مستقیماً آن را به عنوان مشتری برای ارائه دهنده خارجی مدل کنیم. این یک الگوی کاملاً درک شده است زیرا تولید کتابخانه مشتری به هیچ وجه جدید نیست.
چگونه می توانیم آن را ایمن کنیم؟
با استفاده از این مدل ذهنی می توانیم امنیت MCP را به چند مؤلفه تقسیم کنیم:
- ارتباطات نمایندگان را به MCP ایمن کنید
- اتصال MCPS را به ابزار/سرور ایمن کنید
- هنگام صحبت با سرورها ، هویت کاربر و نماینده را ایمن کنید
- میزبان و زنجیره تأمین را ایمن کنید
تضمین ارتباطات عامل به سرورهای MCP
در مدل عملیاتی فعلی هم عامل و هم سرور MCP در “سمت مشتری” اجرا می شود.
با این حال ، اکثر ابزارهای عامل با LLM های ارائه شده توسط اشخاص ثالث یکپارچه شده اند. این پیامدهای مربوط به حفظ حریم خصوصی و امنیت داده ها است.
به عنوان مثال اگر رابط MCP را در معرض نمایش قرار می دهید که داده های محرمانه مانند شماره های تأمین اجتماعی را بازگرداند (آنچه ما در حال تماس با داده های DSL4 هستیم) ، خطر این داده ها را در معرض ارائه دهنده LLM اساسی قرار می دهید.
کاهش در اینجا به اجرای MCP اجازه می دهد تا لیستی از ارائه دهندگان LLM را مشخص کند که می تواند به عنوان گزینه پیکربندی با آن ادغام شود. داشتن برنامه های کاربردی برای “گفتن” عوامل که می توانند با چندین مدل ادغام شوند که مدل ها مجاز به استفاده از یک ابزار خاص هستند ، یک ابتدایی قدرتمند است.
به مثال SSN ما ، اگر بتوانیم مشخص کنیم که این ابزار فقط توسط مدل های محلی LLM قابل استفاده است و به مشتری عامل اعتماد می کند تا این امر را اجرا کند ، می توانیم از انتقال داده های حساس به LLM های شخص ثالث جلوگیری کنیم. به عنوان یک پیشرفت بیشتر ، این که قادر به راهنمایی به نمایندگان برای به اشتراک گذاشتن خروجی ابزار با سایر MCP ها ، کنترل بیشتر جریان داده ها را فراهم می کند.
تأمین ارتباطات MCP به ابزار/سرورها
این الگوی در واقع چیز جدیدی نیست و ما می توانیم به بهترین شیوه های موجود برای API های خارج از کشور تکیه دهیم.
به طور خاص ، اگر ما API های سمت سرور خود را با الگوهای طراحی ایمن بسازیم که از طریق چارچوب های Vetted که قبلاً در ذهن هستند در دسترس هستند ، در حال حاضر در موقعیتی قوی قرار داریم زیرا سرور MCP فقط به عنوان مشتری برای این API ها و برنامه های کاربردی خارجی عمل می کند.
دلیل این پارادایم جدید نیست به این دلیل است که هر کسی می تواند با API های خارجی و ابزاری در تعامل باشد و احتمالاً نقاط پایانی را به روش های غیر منتظره فراخوانی می کند.
این از این واقعیت ناشی می شود که LLM ها اطلاعات را به روشی که برای کاربران انسانی متفاوت است ، تفسیر می کنند ، پروتکل به طور ضمنی به نمایندگان اجازه نمی دهد تا اقداماتی را انجام دهند که کاربران نتوانند اما LLMS ممکن است تصمیم بگیرند اقداماتی را انجام دهند که کاربران انتخاب نمی کنند.
جایی که این پارادایم تغییر می کند در هنگام ادغام با ابزاری که قبلاً طراحی نشده بود تا توسط همه نوع مشتری ها با آن ارتباط برقرار شود. به عنوان مثال اگر API قبلاً طراحی شده بود تا فقط توسط یک مشتری یا اجرای خاص (مانند API های موبایل یا ابزار داخلی) با آن ارتباط برقرار شود ، پس از آن MCP ممکن است منجر به حالت های خرابی غیر منتظره یا نگرانی های امنیتی شود.
این منطقه به احتمال زیاد جایی است که پزشکان امنیتی برای جلوگیری از خسارت در صورت حمله امنیتی علیه LLM اساسی یا منطق برنامه ریزی ، نیاز به تمرکز بیشتر و تلاش بیشتر برای محدود کردن دامنه ادغام دارند.
عامل ، هویت انسانی و دستگاه
در الگوی سنتی ما از احراز هویت (AUTHN) و مجوز (AUTHZ) معمول است که یک هویت را با یک نقطه انتزاعی مانند شخص یا یک تجارت پیوند دهیم.
این زمینه به صورت ارگانیک به سمت جفت شدن یک انتزاع هویت کاربر هویت خدمات با شناسایی دستگاه های مشتری مانند مرورگرها و تلفن های همراه در حال تحول بوده است. این کار برای کاهش شیوع حملات ناشی از اتوماسیون و ترافیک غیر معتبر مانند حملات تصرف حساب (ATO) انجام می شود.
با تکامل مأمورین که اقدامات را به نمایندگی از کاربران انجام می دهند ، باید تکامل پیدا کنیم تا بتوانیم ترکیب ترکیب را تعیین کنیم:
- انتزاع هویت اولیه
- هویت نماینده
- دستگاه/محلی که عامل از آن استفاده می کند
داشتن مکانیسم های مداوم برای شناسایی استفاده از این طریق به شرکت ها این امکان را می دهد تا کاربران را از ادغام با عوامل مخرب محافظت کرده و از سیستم عامل خود در برابر حملات ابزار عامل ناخواسته محافظت کنند.
پروتکل زمینه مدل خود مشخصاتی برای OAUTH دارد که در زمان نوشتن یک پیش نویس بود ، اما از آن زمان در اینجا منتشر شده است.
این جریان مراحل زیر را در نظر می گیرد:
- مشتری/نماینده جریان استاندارد OAuth را با سرور MCP آغاز می کند
- سرور MCP کاربر را به سرور مجوز شخص ثالث هدایت می کند
- کاربر با سرور شخص ثالث مجاز است
- سرور شخص ثالث با کد مجوز به سرور MCP بازگردد
- MCP سرور کد را برای نشانه دسترسی شخص ثالث مبادله می کند
- سرور MCP نشانه دسترسی خود را به جلسه شخص ثالث ایجاد می کند
- سرور MCP جریان اصلی OAUTH را با مشتری/عامل تکمیل می کند
این با بهترین شیوه های موجود مطابقت دارد اما خود MCPS را ملزم به داشتن ادغام/ارکستراسیون مرورگر برای OAuth می کند تا اطمینان حاصل کند که آنها قادر به هدایت موثر کاربران هستند.
پیشرفت آینده ای که دوست داریم ببینیم این است که مأمورین را به اجرای ارکستراسیون مرورگر برای ارائه رابط OAUTH که خود MCPS می تواند در برابر ادغام و اهرم استفاده کند ، ارائه دهد. ما معتقدیم که این تغییر احتمالاً به استاندارد سازی پیاده سازی ها کمک می کند و امکان گسترش پروتکل را برای شناسایی نمایندگان و مشتری در کنار کاربر فراهم می کند.
انجام اجرای MCP شخصی خود OAUTH احتمالاً به دلیل سوء استفاده یا تأخیر در پیشرفت پروتکل های آینده منجر به مشکلات امنیتی و نگهداری طولانی مدت خواهد شد.
انسان در حلقه برای ایمنی عملیاتی
در یک نقطه خاص ممکن است به نمایندگان خود اعتماد کافی ایجاد کنیم تا به آنها اجازه دهیم که عملیات خطرناک تری انجام دهند. برای این نوع موارد استفاده ما احتمالاً می توانیم به شیوه های خوب شناخته شده برای مدیریت تغییر تکیه دهیم.
به طور خاص ، ساختمان راه حل های سمت سرور برای هشدار دادن به کاربر در مورد تغییرات مورد انتظار و عامل انجام آنها و به دنبال رضایت ، احتمالاً یک ابتدایی مهم برای API های آینده خواهد بود. هدف از این امر این است که در نهایت غیرقابل برگشت یا سخت برای معکوس کردن اقدامات انجام شده در پشت تعامل یا تصویب انسان باشد.
به عنوان مثال ، برای نماینده ای که وظیفه نوشتن IAC را دارد ، این می تواند به سادگی درخواست درخواست کننده انسان قبل از استفاده/استقرار IAC باشد.
در نمایندگان سمت مشتری ، این امر باعث می شود یکپارچگی داده ها در صورت توهم زیرین LLM یا از طریق MCP مخرب یا منابع داده ، با بیرونی دستکاری شود.
در آخرین نسخه پروتکل ، پیشرفتی که ما دوست داریم قادر به حاشیه نویسی ابزاری برای نشان دادن به مشتریان است که اقدامات ابزار “خواندنی” یا “مخرب” است. استفاده از این امر برای تصمیم گیری در مورد زمان تأیید ثانویه از کاربر قبل از انجام یک اقدام خاص ، محافظت های قابل توجهی بهتر برای کاربران فراهم می کند.
در حالی که ما یک مرحله پردازش مبتنی بر LLM را برای بررسی دستورات بالقوه مخرب تشویق می کنیم ، داشتن یک جنبه قطعی به دستورات ریسک بالاتر در پشت سر هم تضمین می کند کنترل دسترسی خوب روشی دقیق تر برای ارائه محافظت استبشر
تضمین زنجیره تأمین MCP
در این مرحله اکثر MCP ها از طریق دستوراتی مانند Docker ، UVX ، PIPX و NPX طرف مشتری را اجرا می کنند. در عمل این بدان معناست که وقتی کاربران پسوندهای مبتنی بر MCP را نصب می کنند ، امتیازات اجرای کد دلخواه را به سرور MCP ارائه می دهند.
در عمل این یک مشکل زنجیره تأمین خوب مستند و درک شده است. چگونه می توانیم ریسک مرتبط با استفاده از کد شخص ثالث را کاهش دهیم. خبر خوب این است که همین تکنیک ها هنوز هم کار می کنند:
- فقط MCP را از منابع قابل اعتماد نصب کنید و به خوبی نگهداری می شوند
- برای اطمینان از اجرای کد مورد انتظار ، بررسی های یکپارچگی و/یا امضای مصنوعات را در صورت امکان اجرا کنید
- اجرای لیست در نمایندگان سازمانی اجازه می دهد تا کاربران فقط از MCP های از پیش استفاده شده استفاده کنند
پایان
تقریباً مانند عوامل ، راه را برای اجازه دادن به LLM ها در اختیار MCP در دنیای واقعی قرار می دهد و پروتکل های مشابه همچنان در فرزندخواندگی به رشد خود ادامه می دهند.
ما معتقدیم که با کمک به پروژه های منبع باز زودرس ، به اشتراک گذاشتن یادگیری های خود به صورت عمومی و ایجاد راه حل های خودمان که از MCP استفاده می کنند ، بلوک می تواند بهترین شیوه های امنیتی را از دنیای قطعی حفظ کند و در عین حال همچنان با فناوری های جدیدتر آنها را تکامل دهد.
ما از تلاش برای ایمن تر کردن این پروتکل برای کاربران و توسعه دهندگان به طور یکسان خوشحالیم و مشتاقانه منتظر هستیم تا نحوه استفاده از MCP را برای موارد استفاده امنیتی خود در آینده به اشتراک بگذاریم.