Model Context Protocol (MCP)

ایمن‌سازی اتصالات MCP از راه دور در محیط‌های چندمستأجره

با محبوب شدن پروتکل زمینه مدل (MCP) به عنوان استاندارد اتصال مدل‌های هوش مصنوعی به منابع داده خارجی، تغییر معماری به سمت استقرارهای از راه دور و چندمستأجره، چالش‌های امنیتی قابل توجهی ایجاد می‌کند. وقتی چندین مستأجر زیرساخت را به اشتراک می‌گذارند در حالی که به زمینه‌های داده ایزوله دسترسی دارند، امنیت مبتنی بر محیط بیرونی دیگر کافی نیست. این پست بررسی می‌کند که چگونه می‌توان یک مدل امنیتی Zero-Trust را که به طور خاص برای اتصالات MCP از راه دور طراحی شده است، پیاده‌سازی کرد.

پارادایم Zero-Trust برای MCP

Zero-Trust بر اصل «هرگز اعتماد نکنید، همیشه تأیید کنید» عمل می‌کند. در زمینه MCP، این بدان معناست که هر درخواست به سرور زمینه مدل (MCS) باید احراز هویت، مجوزدهی و رمزنگاری شود، صرف‌نظر از مبدأ آن. برخلاف میکروسرویس‌های داخلی که ممکن است برای اعتماد به نزدیکی شبکه تکیه کنند، کلاینت‌های MCP از راه دور بر روی شبکه‌های غیرقابل اعتماد عمل می‌کنند. بنابراین، تأیید هویت باید در هر مرحله (hop) رخ دهد. برای محیط‌های چندمستأجره، این بدان معناست که سرور باید زمینه‌های مستأجر را به شدت ایزوله کند. حتی اگر یک کلاینت اعتبارنامه‌های معتبر ارائه دهد، سرور باید اطمینان حاصل کند که کلاینت فقط مجاز به دسترسی به منابع MCP خاصی است که به شناسه مستأجر او مرتبط هستند. این امر از حرکت جانبی و نشت داده بین مستأجران جلوگیری می‌کند.

پیاده‌سازی احراز هویت و مجوزدهی سخت‌گیرانه

برای دستیابی به Zero-Trust، باید کلیدهای API ساده را با ارائه‌دهندگان هویت قوی جایگزین کنید. OAuth 2.0 و OpenID Connect (OIDC) استانداردهای صنعتی برای این مورد استفاده هستند. هر کلاینت MCP باید یک JWT (نشانی وب JSON) با عمر کوتاه از یک ارائه‌دهنده هویت مرکزی دریافت کند. سپس سرور MCP این توکن را برای هر درخواست واحد اعتبارسنجی می‌کند. از نظر حیاتی، JWT باید شامل ادعاهای خاص مستأجر باشد. این امر به سرور اجازه می‌دهد تا درخواست‌ها را به صورت پویا مسیریابی کند و کنترل‌های دسترسی را بر اساس هویت مستأجر تعبیه شده در توکن اعمال کند، نه اینکه مجوزها را به صورت سخت‌افزاری کدنویسی کند. در اینجا یک مثال مفهومی از نحوه اعتبارسنجی یک سرور MCP یک JWT و استخراج زمینه مستأجر قبل از پردازش یک درخواست منبع آورده شده است:
const jwt = require('jsonwebtoken');
const SECRET_KEY = process.env.MCP_SIGNING_KEY;

async function validateMCPRequest(req, res, next) {
  const token = req.headers.authorization?.split(' ')[1];
  
  if (!token) {
    return res.status(401).json({ error: 'No token provided' });
  }

  try {
    // Verify signature and expiration
    const decoded = jwt.verify(token, SECRET_KEY);
    
    // Extract tenant ID and user role
    const tenantId = decoded.tenant_id;
    const role = decoded.role;

    // Enforce multi-tenant isolation
    if (!tenantId) {
      return res.status(403).json({ error: 'Invalid tenant context' });
    }

    // Attach security context to the request object
    req.securityContext = { tenantId, role };
    next();
  } catch (error) {
    return res.status(403).json({ error: 'Invalid or expired token' });
  }
}
در این قطعه کد، میان‌افزار توکن را اعتبارسنجی می‌کند و اطمینان حاصل می‌کند که یک `tenant_id` معتبر وجود دارد. اگر زمینه مستأجر وجود نداشته باشد، درخواست بلافاصله رد می‌شود و سیاست zero-trust را در سطح دروازه اعمال می‌کند.

ایزوله‌سازی داده و محدوده‌بندی منابع

احراز هویت تنها اولین قدم است. پس از احراز هویت یک کلاینت، سرور MCP باید اطمینان حاصل کند که منابعی که در معرض قرار می‌گیرد (مانند پایگاه‌های داده، سیستم‌های فایل یا APIها) به شدت به مستأجر احراز هویت شده محدود شده‌اند. یکی از الگوهای مؤثر، استفاده از لایه نگاشت منابع است. به جای نمایش مسیرهای خام، سرور MCP باید نام‌های منابع منطقی را به مکان‌های فیزیکی خاص مستأجر حل کند. برای مثال، یک درخواست برای `/documents/reports` باید به `/tenants/{tenant_id}/documents/reports` حل شود. این انتزاع اطمینان حاصل می‌کند که حتی اگر توسعه‌دهنده‌ای مسیریابی را به اشتباه پیکربندی کند، داده‌های پایه ایزوله باقی بمانند. علاوه بر این، در نظر بگیرید که محدودیت نرخ (rate limiting) و مدیریت سهمیه را به صورت جداگانه برای هر مستأجر پیاده‌سازی کنید تا از حملات انکار خدمات (DoS) از سوی یک مستأجر که بر دیگران تأثیر می‌گذارد، جلوگیری شود. این یک جنبه عملیاتی حیاتی از امنیت چندمستأجره است که چارچوب Zero-Trust را تکمیل می‌کند.

نتیجه‌گیری

پیاده‌سازی امنیت Zero-Trust برای اتصالات MCP از راه دور در محیط‌های چندمستأجره نیازمند تغییر نگرش از دفاع محیطی به امنیت متمرکز بر هویت است. با بهره‌گیری از مکانیزم‌های احراز هویت قوی مانند JWTها، اعمال جدایی سخت‌گیرانه مستأجران در منطق مجوزدهی و انتزاع دسترسی به منابع، توسعه‌دهندگان می‌توانند سرورهای MCP ایمن، مقیاس‌پذیر و قابل اعتمادی بسازند. با بالغ شدن اکوسیستم MCP، پایبندی به این اصول برای حفظ یکپارچگی داده و اعتماد مشتریان در زیرساخت‌های هوش مصنوعی مشترک ضروری خواهد بود.
Share: