Local AI

Paylaşılan Yerel LLM Kümelemelerini Güvence Altına Alma: Open WebUI'da Çok Kiracılı RBAC Uygulaması

Yerel büyük dil modeli (LLM) dağıtımının hızla değişen ortamında, Open WebUI, yerel donanımda çalışan modellerle etkileşim için tercih edilen arayüz haline gelmiştir. Ancak kuruluşlar, bireysel deneylerden paylaşılan küme ortamlarına geçtikçe, güvenlik ve erişim kontrolü kritik hale gelir. Bu makale, paylaşılan yerel LLM kümelerinin güvenli, verimli ve uyumlu kalmasını sağlamak için Open WebUI'da sağlam Çok Kiracılı Rol Tabanlı Erişim Kontrolü'nün (RBAC) nasıl uygulanacağını ele almaktadır.

Yerel Kümelerde Çok Kiracılı Zorluğu Anlama

LLM'leri yerel olarak dağıtırken, özellikle Ollama veya llama.cpp gibi teknolojileri kullanan kaynak yoğun kümelerde, birden fazla ekip veya kullanıcı genellikle aynı arka uç modellerine erişim gerektirir. Uygun yalıtım olmadan, bu yapılandırma; yetkisiz veri erişimi, prompt enjeksiyon saldırıları ve kaynak rekabeti gibi önemli güvenlik risklerine yol açabilir. Çok kiracılık, ayrı grupların (kiracıların) aynı temel altyapıyı paylaşmasına, ancak veri ve izinlerin mantıksal olarak ayrılmasını korumasına olanak tanır.

Open WebUI güçlü olsa da, karmaşık kurumsal kurulumlarda varsayılan olarak katı kiracı sınırlarını uygulamaz. Bu nedenle, mimarların RBAC'yi etkili bir şekilde desteklemek için platformu ve çevresel altyapıyı yapılandırmaları gerekir.

Mimari Strateji: Yalıtım ve Kimlik Yönetimi

Temel strateji üç katmandan oluşur: Kimlik Doğrulama, Rol Tanımlama ve Kaynak Erişim Politikaları.

  1. Kimlik Doğrulama: Open WebUI'yi LDAP, SAML veya OpenID Connect (OIDC) gibi harici bir Kimlik Sağlayıcıyla (IdP) entegre edin. Bu, kullanıcı kimliklerinin merkezi olarak yönetildiğini ve doğrulandığını sağlar.
  2. Rol Tanımlama: Kuruluşunuz içinde ayrıntılı roller tanımlayın. Örneğin:
    • Yönetici: Model yönetimi ve kullanıcı yönetimi için tam erişim.
    • Geliştirici: Model oluşturma ve test etme, günlük görüntüleme erişimi.
    • Son Kullanıcı: Yalnızca önceden onaylanmış modellere ve sohbet geçmişine erişim.
  3. Kaynak Erişim Politikaları: Rollerini belirli modellere veya model gruplarına eşleyin. Bu, örneğin, genel bir son kullanıcının hassas dahili ince ayarlı bir modele erişmesini engeller.

Uygulama: Open WebUI'yi OIDC ile Yapılandırma

Aşağıda, Docker veya Kubernetes ile dağıtım sırasında Open WebUI'yi ortam değişkenleri yoluyla harici bir IdP kullanacak şekilde yapılandırmanın pratik bir örneği verilmiştir. Bu, RBAC'yi uygulama sürecinin ilk adımıdır, çünkü IdP'nizin JWT belirteçlerine kullanıcı gruplarını ve rollerini enjekte etmesine olanak tanır.


docker run -d -p 3000:8080 \
  -v open-webui:/app/backend/data \
  -e OPEN_WEBUI_AUTH_REGISTRATION=False \
  -e OPEN_WEBUI_USE_OAUTH=True \
  -e OPEN_WEBUI_OAUTH_CLIENT_ID="your-client-id" \
  -e OPEN_WEBUI_OAUTH_CLIENT_SECRET="your-client-secret" \
  -e OPEN_WEBUI_OAUTH_AUTHORIZATION_URL="https://idp.example.com/auth" \
  -e OPEN_WEBUI_OAUTH_TOKEN_URL="https://idp.example.com/token" \
  -e OPEN_WEBUI_OAUTH_USERINFO_URL="https://idp.example.com/userinfo" \
  -e OPEN_WEBUI_ALLOWED_OAUTH_ROLES="admin,developer,user" \
  open-webui/open-webui:main

Bu yapılandırmada, OPEN_WEBUI_ALLOWED_OAUTH_ROLES değişkeni bir kapı bekçisi olarak görev yapar. IdP tarafından sağlanan JWT belirteci, listedeki rollerden birini içermiyorsa erişim reddedilir. Bu, RBAC'nin temelidir.

Model Seviyesinde Erişim Kontrolü Uygulama

Kullanıcılar kimlik doğrulamasından geçip roller atandıktan sonra, yalnızca yetkili modellerle etkileşime girebildiklerinden emin olmalısınız. Open WebUI, özel betikler ve ara katman (middleware) uzantıları için izin verir. Gelişmiş kurulumlar için, model yanıtını sunmadan önce JWT belirtecini denetleyen, LLM arka uçunuzda (örneğin, özel bir Ollama vekili) özel bir ara katman uygulayabilirsiniz.

Python tabanlı bir vekilde ara katman denetiminin sözde kod (pseudo-code) örneği aşağıdadır:


from functools import wraps
from fastapi import Depends, HTTPException
import jwt

def require_role(role: str):
    def decorator(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            token = get_current_token()  # Request header'dan çıkar
            try:
                payload = jwt.decode(token, SECRET_KEY, algorithms=["HS256"])
                if role not in payload.get("roles", []):
                    raise HTTPException(status_code=403, detail="Insufficient permissions")
            except jwt.ExpiredSignatureError:
                raise HTTPException(status_code=401, detail="Token expired")
            except jwt.InvalidTokenError:
                raise HTTPException(status_code=401, detail="Invalid token")
            return func(*args, **kwargs)
        return wrapper
    return decorator

@app.get("/models/{model_id}/chat")
@require_role("developer")
async def chat(model_id: str):
    # Only developers can access this specific model
    return await llm_service.generate(model_id)

Güvenli Paylaşılan Kümeler İçin En İyi Uygulamalar

  • Düzenli Denetim: Open WebUI'da günlük kaydı etkinleştirin ve günlükleri bir SIEM aracına iletin. "user" rolünün "admin" uç noktasına erişmeye çalışması gibi anormal erişim desenlerini izleyin.
  • Ağ Bölümleme: Open WebUI örneğini ve LLM arka ucunu ayrı ağ bölümlerine yerleştirin. LLM API'sine doğrudan erişimi kısıtlamak için güvenlik duvarları kullanın ve tüm trafiğin RBAC denetimlerinin yapıldığı Open WebUI vekili üzerinden akışını sağlayın.
  • Gizli Bilgi Yönetimi: API anahtarlarını ve JWT gizli bilgilerini saklamak için HashiCorp Vault veya Kubernetes Secrets gibi bir gizli bilgi yöneticisi kullanın. Gizli bilgileri asla yapılandırma dosyalarında sabit kod olarak kullanmayın.
  • En Az Yetki İlkesi: Her kullanıcıya en düşük olası rolü atayın. Rollerini değiştirmiş veya kuruluşu terk etmiş çalışanların erişimini kaldırmak için rol atamalarını düzenli olarak gözden geçirin.

Sonuç

Paylaşılan yerel LLM kümeleri için Open WebUI'da Çok Kiracılı RBAC uygulamak, kurumsal düzeyde dağıtımlar için vazgeçilmezdir. Harici IdP'lerle entegrasyon, ayrıntılı roller tanımlama ve model seviyesinde erişim kontrollerini uygulama yoluyla güvenli ve ölçeklenebilir bir ortam oluşturabilirsiniz. Bu yaklaşım, hassas verileri ve modelleri korumakla kalmaz, aynı zamanda iç ve dış güvenlik düzenlemelerine uyumu da sağlar. Yerel yapay zeka benimsenmesi arttıkça, sağlam erişim kontrol mekanizmalarına yatırım, LLM'lerin gücünü güvenli ve verimli bir şekilde kullanmak isteyen kuruluşlar için önemli bir ayırt edici faktör olacaktır.

Share: