Model Bağlam Protokolü (MCP), yapay zeka uygulamalarını harici veri kaynaklarına ve araçlara bağlamak için bir standart olarak ortaya çıkmıştır. MCP, yapay zeka yeteneklerini demokratikleştirirken saldırı yüzeyini de genişletir. Katı güvenlik kontrolleri olmadan, LLM'leriniz veri sızdırma veya yetkisiz sistem manipülasyonu için bir vektör haline gelebilir. Orta düzeyden ileri düzey geliştiriciler için MCP entegrasyonlarını güvence altına almak isteğe bağlı değildir; temel bir gerekliliktir.
Tehdit Modelini Anlama
Kontrolleri uygulamadan önce, neye karşı koruma sağladığımızı anlamalıyız. Bir MCP ortamında, başlıca riskler şunları içerir:
- İstem Enjeksiyonu (Prompt Injection): Gizli bilgileri ifşa etmesi için LLM'i manipüle eden harici kaynaklardaki kötü amaçlı içerik.
- Aşırı Yetkilendirilmiş Erişim: Gerekli olandan daha geniş izinlere sahip araçlar, potansiyel olarak yatay hareketliliğe yol açar.
- İletim Güvenliği: İstemci ile MCP sunucusu arasındaki bağlam verilerinin ele geçirilmesi.
Etkili güvenlik, en az yetki ilkesine dayanır. LLM'e açılan her araç, işlevini gerçekleştirmek için gereken minimum izinlere sahip olmalıdır.
Sağlam Kimlik Doğrulama Uygulama
Geleneksel API anahtarı yönetimi, dinamik ve çoklu ajan ortamları için genellikle yetersizdir. MCP sunucuları, kapsam tabanlı erişim ve token son kullanma süresi sağlayan OAuth 2.1'i desteklemelidir. Bu, bir token ele geçirilse bile, kullanımının hem zaman hem de kapsam açısından sınırlı olmasını sağlar.
import os
from mcp.server.fastmcp import FastMCP
from authlib.integrations.starlette_client import OAuth
mcp = FastMCP("Secure Server")
@mcp.tool()
def get_user_data(user_id: str, token: str):
"""
Kullanıcı verilerini alır. Geçerli, kapsamı belirlenmiş bir OAuth token gerektirir.
"""
# Token'ı kimlik sağlayıcınıza karşı doğrulayın
claims = validate_oauth_token(token, required_scope="read:profile")
if not claims:
raise PermissionError("Geçersiz token veya yetersiz kapsam")
# En az yetkiyi uygulayın: yalnızca belirli alanları getirin
return db.fetch_user(user_id, fields=["name", "email"])
Yukarıdaki örnekte, araç, veritabanı sorgusunu çalıştırmadan önce belirli bir kapsamı (read:profile) açıkça kontrol eder. Bu, farklı bir hizmet için tasarlanmış bir token'ın hassas kullanıcı verilerine erişmesini engeller.
Girdi Doğrulama ve Temizleme
LLM'ler olasılıksaldır ve beklenmedik girdiler göndermeye manipüle edilebilirler. Bu nedenle, MCP araçları tüm girdileri güvensiz olarak ele almalıdır. Araç sınırında sıkı tip denetimi ve şema doğrulaması uygulanmalıdır.
from pydantic import BaseModel, Field
class TransferRequest(BaseModel):
"""
Finansal transferler için şema.
"""
amount: float = Field(gt=0, lt=10000) # Tutarı sıkı şekilde sınırlayın
destination: str = Field(max_length=100)
# Keyfi JSON alanlarına izin verilmez
@mcp.tool()
def transfer_funds(req: TransferRequest):
"""
Fon transferini gerçekleştirir. Girdi sıkı şekilde doğrulanır.
"""
# Denetim için denemeyi günlüğe kaydedin
audit_log.info(f"Transfer denemesi: {req}")
# İşlemi gerçekleştirin
return banking_api.transfer(req)
Pydantic modellerini kullanarak, LLM'in transfer isteğine kötü amaçlı SQL komutları veya aşırı boyutlu yükler enjekte edememesini sağlarız. gt=0 ve lt=10000 kısıtlamaları, finansal risk için sert bir sınır sağlar.
Güvenli İletim ve Şifreleme
MCP istemcisi ve sunucusu arasındaki tüm iletişim TLS 1.3 kullanılarak şifrelenmelidir. Hassas bağlamlar için, altyapı destekliyorsa belirli alanlar için uçtan uca şifreleme uygulamayı düşünün. Ayrıca, şifreleme anahtarlarınızı düzenli olarak döndürün ve üretim ortamlarında anahtar yönetimi için donanım güvenlik modülleri (HSM) kullanın.
Denetim ve Günlük Kayıt
Güvenlik, sürekli bir süreçtir. Tüm araç çağrıları için kapsamlı günlük kaydı uygulayın, şunları içeren:
- İsteğin zaman damgası
- Kimliği doğrulanmış kullanıcı/ajanın kimliği
- Girdi parametreleri (temizlenmiş)
- İşlemin sonucu
Bu günlükler, gerçek zamanlı anormallik tespiti için merkezi bir güvenlik bilgi ve olay yönetimi (SIEM) sistemine gönderilmelidir. Örneğin, tek bir ajan 10 saniye içinde 100 farklı kullanıcı profiline erişmeye çalışırsa, sisteminiz bir uyarı tetiklemelidir.
Sonuç
MCP entegrasyonlarını güvence altına almak çok katmanlı bir yaklaşım gerektirir: sağlam kimlik doğrulama, sıkı girdi doğrulama, güvenli iletim ve kapsamlı denetim. Yapay zeka ajanları daha otonom hale geldikçe, güvenlik için riskler üstel olarak artar. Bu en iyi uygulamaları şimdi benimseyerek, güvenli, ölçeklenebilir ve güvenilir yapay zeka dağıtımları için bir temel oluşturursunuz.