Erişim Denetimi
LibreChat'in ayrıntılı yetkilendirme sistemi; kullanıcı, grup, rol ve örnek düzeyinde kimlerin ajanları, istemleri, MCP sunucularını ve diğer kaynakları kullanabileceğini, paylaşabileceğini, düzenleyebileceğini ve yönetebileceğini kontrol etmenizi sağlar.
Granular Access Control
LibreChat, kimlik doğrulamanın üzerinde tam bir yetkilendirme sistemiyle birlikte gelir. Erişim "ya hep ya hiç" şeklinde değildir: uygulamadaki her paylaşılabilir varlığın (ajanlar, istemler, MCP sunucuları, uzak ajanlar, dosyalar, konuşmalar) kendi Erişim Denetim Listesi (ACL) bulunur ve her özellik kullanıcı, grup, rol bazında veya herkese açık olarak bağımsız bir şekilde etkinleştirilebilir veya kısıtlanabilir.
Bu sayfa, herkesin özgürce paylaşım yaptığı küçük bir ekipten, senkronize edilmiş Entra ID grupları, özel roller ve yetkilendirilmiş yöneticilere sahip kurumsal bir dağıtıma kadar, organizasyonunuza uygun izinleri modelleyebilmeniz için parçaların nasıl bir araya geldiğini açıklamaktadır.
Yönetici Paneli
Özel bir LibreChat Admin Panel, v0.8.5 ile tanıtılan kullanıcıları, grupları, rolleri, özel izin profillerini ve sistem genelindeki yetkileri yönetmek için hazırlanan yeni kullanıcı arayüzüdür. Bu sayfa, halihazırda LibreChat'in kendisinde mevcut olan temel modeli belgelemektedir.
Erişim Modeline Bir Bakış
LibreChat'in yetkilendirme sistemi, birlikte çalışan üç bağımsız katmandan oluşur:
| Katman | Kapsam | Neyi kontrol eder |
|---|---|---|
| Özellik İzinleri | Rol bazlı (USER, ADMIN, özel) | Bir yetkilinin bir özellik sınıfını (ajanlar, istemler, MCP sunucuları, anılar, web araması vb.) kullanıp kullanamayacağı, oluşturup oluşturamayacağı, paylaşıp paylaşamayacağı veya herkese açık paylaşıp paylaşamayacağı. librechat.yaml dosyasında veya yönetici panelinde yapılandırılır. |
| Kaynak ACL'leri | Bireysel kaynak bazlı | Belirli bir ajanı, istemi, MCP sunucusunu vb. kimin görüntüleyebileceği, düzenleyebileceği, silebileceği veya yeniden paylaşabileceği. Kaynak sahibi tarafından uygulama içi paylaşım iletişim kutusu aracılığıyla yönetilir. |
| Sistem Yetkileri | Platform genelinde | Yönetici yetenekleri (örneğin manage:users, manage:roles, read:usage). Yönetici paneli tarafından kullanılır. |
Üçü de aynı dört temel tür için değerlendirilir:
- User: bireysel bir LibreChat hesabı
- Grup: kullanıcıların bir koleksiyonu (yerel veya Entra ID üzerinden senkronize edilmiş)
- Role: adlandırılmış bir izin profili (örneğin
USER,ADMINveya herhangi bir özel rol) - Public: örnek üzerindeki her kimliği doğrulanmış kullanıcı
Katman 1: Özellik İzinleri (Rol Tabanlı)
Özellik düzeyi izinleri, belirli bir rol için uygulamanın tüm yeteneklerini denetler. Bu izinler, "Bu roldeki kullanıcılar hiç ajan oluşturabilir mi?", "İstemleri herkese açık olarak paylaşmalarına izin veriliyor mu?", "Kod yorumlayıcıyı çalıştırabilirler mi?" gibi sorulara yanıt verir.
Yerleşik Sistem Rolleri
LibreChat, her zaman mevcut olan ve silinemeyen iki sistem rolüyle birlikte gelir:
ADMIN: örnekte (instance) kayıtlı ilk hesaba atanır. Yöneticiler her kaynağı görebilir, herhangi bir ayarı değiştirebilir, yönetici paneline erişebilir ve platform genelindeki davranışları yapılandırabilir.USER: her yeni hesaba atanan varsayılan rol.
Yöneticiler, MongoDB'deki kullanıcı belgesi güncellenerek manuel olarak yükseltilebilir, bkz. Administrator Controls.
İzin Türleri
Her rol bir izin türleri × eylemler matrisi tutar:
| İzin Türü | Kullanılabilir eylemler |
|---|---|
AGENTS | USE, CREATE, SHARE, SHARE_PUBLIC |
PROMPTS | USE, CREATE, SHARE, SHARE_PUBLIC |
MCP_SERVERS | USE, CREATE, SHARE, SHARE_PUBLIC, CONFIGURE_OBO |
REMOTE_AGENTS | USE, CREATE, SHARE, SHARE_PUBLIC |
SKILLS | USE, CREATE, SHARE, SHARE_PUBLIC |
SHARED_LINKS | CREATE, SHARE, SHARE_PUBLIC |
MEMORIES | USE, CREATE, UPDATE, READ, OPT_OUT |
BOOKMARKS | USE |
MULTI_CONVO | USE |
TEMPORARY_CHAT | USE |
RUN_CODE | USE |
WEB_SEARCH | USE |
FILE_SEARCH | USE |
FILE_CITATIONS | USE |
MARKETPLACE | USE |
PEOPLE_PICKER | VIEW_USERS, VIEW_GROUPS, VIEW_ROLES |
SHARE ve SHARE_PUBLIC arasındaki ayrım önemlidir: Bir role, temsilcileri herkese görünür kılmalarına izin vermeden (SHARE_PUBLIC), belirli kullanıcılara veya gruplara (SHARE) temsilci paylaşma yetkisi verebilirsiniz.
Özellik İzinlerini Yapılandırma
Özellik izinlerini yönetmenin önerilen yolu, her rol (oluşturduğunuz özel roller dahil) üzerindeki izin matrisini doğrudan düzenleyen LibreChat Admin Panel kullanmaktır. Değişiklikler, LibreChat'i yeniden dağıtmaya gerek kalmadan geçerli olur ve genel USER varsayılanı yerine, değiştirmek istediğiniz tam role özel olarak uygulanır.
Eski: `librechat.yaml` arayüz bloğu
librechat.yaml içindeki interface bloğu, başlangıçta varsayılan USER rolü için izinleri hala tanımlayabilir ve yeni bir örneği başlatmak veya tamamen dosya tabanlı dağıtımlar için yararlı olmaya devam eder. Ancak, bu blok yalnızca USER rolünü hedefler ve özel roller arasındaki farkları ifade edemez. Süregelen izin yönetimi için yönetici panelini tercih edin.
Özel Roller
USER ve ADMIN rollerinin ötesinde, yöneticiler kendi özellik-izin matrislerine sahip özel roller oluşturabilirler (v0.8.5 ile tanıtılmıştır; bkz. #12528). Bir kullanıcı birden fazla role sahip olabilir ve kullanıcının geçerli izinleri, sahip olduğu tüm rollerin birleşimidir. Özel roller, yönetici panelinden yönetilir.
Rol ve Grup Kapsamlı Yapılandırma Geçersiz Kılmaları
Özellik bayraklarına ek olarak, v0.8.5 sürümü veritabanı destekli bir yapılandırma geçersiz kılma (override) sistemi getirdi (#12354). Bu sistem, belirli gruplara veya rollere farklı bir librechat.yaml tarzı yapılandırma atamanıza olanak tanır. Örneğin, bir "Araştırma" grubu, varsayılan yapılandırmadan farklı olarak ek endpoint'lere, daha yüksek bir özyineleme sınırına ve farklı ajan yeteneklerine erişebilir. Geçersiz kılmalar giriş sırasında çözümlenir ve temel yapılandırmanın üzerine eklenerek oluşturulur.
Katman 2: Kaynak ACL'leri (Varlık Bazlı Paylaşım)
LibreChat içindeki her paylaşılabilir kaynağın, rol tabanlı izinlerden bağımsız olarak kendi Erişim Kontrol Listesi (Access Control List) bulunur. SHARE iznine sahip bir kullanıcının, kendi temsilcisine (agent), istemine (prompt) veya MCP sunucusuna kimin erişebileceğini seçme yöntemi budur.
Kaynak Türleri
Kaynak ACL'leri şu anda şunlar için geçerlidir:
- Ajanlar (
agent) - İstemler / İstem Grupları (
promptGroup) - MCP Sunucuları (
mcpServer) - Uzak Temsilciler (
remoteAgent), Agents API için - Dosyalar (
file), genellikle onları kullanan kaynaktan miras alınır - Projeler (
project), kaynakların bir projeyle paylaşıldığında otomatik olarak ACL'leri devralmasını sağlayan kalıtımı destekler
Erişim Rolleri (İzin Ön Ayarları)
Son kullanıcılara ham izin bitlerini göstermek yerine, paylaşım özelliği her kaynak türü için üç adlandırılmış rol kullanır:
| Rol | İzin bitleri | Yetkilinin yapabilecekleri |
|---|---|---|
| Viewer | VIEW (0b0001) | Kaynağı kullanabilir / etkileşime geçebilir |
| Editor | VIEW + EDIT (0b0011) | Kaynağın ayarlarını, talimatlarını, araçlarını ve dosyalarını görüntüleyebilir ve değiştirebilir |
| Owner | VIEW + EDIT + DELETE + SHARE (0b1111) | Tam kontrol: düzenleyebilir, silebilir ve başkalarıyla yeniden paylaşabilir |
Arka planda izinler, her (kaynak, sorumlu) çifti için bir bit maskesi (permBits) olarak saklanır; üst kümeler otomatik olarak işlenir, bu nedenle Düzenleyici (Editor) yetkisi vermek, Görüntüleyici (Viewer) yetkisini de beraberinde getirir.
Arayüzden Erişim Verme
- Kaynağı açın (agent builder, prompt form, MCP server settings, vb.)
- Paylaş düğmesine tıklayın (sohbetin sahibi olduğunuzda, yönetici olduğunuzda veya size
SHAREyetkisi verildiğinde görünür) - Paylaşım iletişim kutusunda:
- Kullanıcıları, grupları veya rolleri eklemek üzere aramak için kişi seçiciyi kullanın
- Her bir asıl (principal) için bir erişim rolü (Viewer / Editor / Owner) seçin
- İsteğe bağlı olarak, kaynağı örnekteki (instance) herkes için görünür kılmak üzere Public access (Herkese açık erişim) seçeneğini açıp kapatabilirsiniz (
SHARE_PUBLICözellik izni gerektirir)
- Kaydet. Kullanıcılar sayfayı bir sonraki yenilediklerinde kaynağı görürler.
Veri Sızıntılarına Karşı Korunma
Editor (Düzenleyici) ve Owner (Sahip) yetkisine sahip kullanıcılar, sistem talimatları, ekli dosyalar ve araçlar dahil olmak üzere kaynak üzerinde yapılandırılmış her şeyi görebilirler. Herhangi bir ajan, ekli verileri sohbet çıktısı yoluyla sızdırabilir; bu nedenle düzenleme erişimi vermeden veya bir ajanı herkese açık hale getirmeden önce talimatlarınızın prompt injection saldırılarına karşı sağlam olduğundan emin olun.
Kullanıcıların Gördükleri
- Görüntüleyiciler, kaynağı ilgili seçicide (örneğin ajan açılır menüsü) kullanıma hazır bir öğe olarak görürler. Oluşturucuyu açamaz, ham talimatları göremez veya ayarları değiştiremezler.
- Editors (Düzenleyiciler), kaynağın yapılandırmasını açabilir ve değiştirebilir, ancak onu silemez veya yeniden paylaşamazlar.
- Owners, orijinal yazarla aynı kullanıcı arayüzüne sahiptir ve diledikleri gibi silme ve yeniden paylaşma işlemi yapabilirler.
- Orijinal yazar, ACL durumundan bağımsız olarak her zaman tam kontrole sahiptir ve yöneticiler örnek üzerindeki herhangi bir kaynağı yönetebilir.
Proje Devralma
İzinler bir üst project (proje) öğesinden devralınabilir. Bir ACL girişi devralındığında, inheritedFrom bağlantısı kaynağı işaret eder. LibreChat içindeki "Global" projesine güç veren mekanizma budur; global projeye eklenen bir kaynak, her bir kullanıcı (principal) için ayrı bir giriş gerektirmeden tüm kullanıcılar tarafından erişilebilir hale gelir.
Katman 3: Sistem İzinleri (Yönetici Yetenekleri)
Sistem izinleri (system grants), yönetici düzeyi yetenekler için kullanılan ayrı bir izin tablosudur ve "Bu kullanıcı yönetici paneline erişebilir mi?" veya "Bu grup MCP sunucularını küresel olarak yönetebilir mi?" gibi soruları yanıtlar. Bunlar her zaman bir özneye (kullanıcı, grup veya rol) ve bir yetenek dizisine (capability string) göre kapsamlandırılır.
Kanonik yetenekler şunları içerir:
| Yetenek | Amaç |
|---|---|
access:admin | Yönetici paneline erişim sağlama |
read:users / manage:users | Kullanıcı hesaplarını görüntüleme / değiştirme |
read:groups / manage:groups | Grupları görüntüleme / değiştirme |
read:roles / manage:roles | Özel rolleri görüntüleme / değiştirme |
read:configs / manage:configs | Sistem yapılandırmasını görüntüleme / değiştirme |
assign:configs:{user|group|role} | Yapılandırma geçersiz kılma profillerini sorumlulara atama |
read:usage | Platform kullanımını ve telemetriyi görüntüleme |
read:agents / manage:agents | Örnekteki her bir ajanı görüntüleme / denetleme |
read:prompts / manage:prompts | Her bir istemi (prompt) görüntüleme / denetleme |
manage:mcpservers | MCP sunucularını küresel olarak yönetme |
Yönetme (manage) yetenekleri, ilgili okuma (read) yeteneklerini de kapsar (örneğin, manage:users yetkisine sahip olmak otomatik olarak read:users yetkisini de verir). Bir SystemRoles.ADMIN kullanıcısı tüm yeteneklere örtük olarak sahiptir; yetkilendirmeler (grants), yönetici olmayan kişilere tam yönetici yapmadan yönetici yetkilerinin bir alt kümesini devretmenize olanak tanır.
Sistem izinleri, yönetici paneli aracılığıyla verilir ve geri alınır.
İlkelerin Derinlemesine İncelenmesi
Kullanıcılar
Standart LibreChat hesapları. Kullanıcılar yerel (e-posta/parola) veya federe (OAuth2, OIDC, SAML, LDAP) olabilir. Federe kullanıcılar harici bir kimlikle (idOnTheSource) eşleştirilebilir; Entra ID için bu, grup senkronizasyonunu sağlayan OID'dir.
Gruplar
Bir grup, adlandırılmış bir kullanıcı koleksiyonudur. LibreChat iki kaynağı destekler:
- Yerel gruplar: yönetici panelinden veya doğrudan veritabanından oluşturulur ve yönetilir. Üyeler LibreChat kullanıcı kimlikleridir (user ID).
- Entra ID (Azure AD) grupları: token reuse etkinleştirilmiş şekilde bir kullanıcı Azure OIDC aracılığıyla giriş yaptığında Microsoft Graph'ten senkronize edilir. Senkronize edilen her grup, Entra Nesne Kimliğini
idOnTheSourceolarak saklar; bu da LibreChat'in kiracı üyeliğiyle uyumlu kalmasını sağlar.
Gruplar herhangi bir ACL'de, peoplePicker aramasında ve yapılandırma geçersiz kılmaları veya sistem izinleri için birincil hedef olarak görünebilir. 500 kişilik bir grupla paylaşılan tek bir kaynak, 500 değil, tek bir ACL girdisidir ve Entra'daki üyelik değişiklikleri bir sonraki girişte otomatik olarak yansıtılır.
Roller
Herhangi bir sistem veya özel rol, yetkili (principal) olarak kullanılabilir. Bir ajanı bir rolle (örneğin SupportEngineers) paylaşmak, bireyleri tek tek listelemeye gerek kalmadan, şu anda o role sahip olan her kullanıcıya erişim sağlar. Rol tabanlı paylaşımın yalnızca yöneticiye özel olduğu ortamlar için roller, interface.peoplePicker.roles aracılığıyla kişi seçiciden gizlenebilir.
Genel
Her kimlik doğrulanmış kullanıcıyla eşleşen özel bir yönetici (principal). Genel izinler (public grants), yalnızca izni veren kullanıcı ilgili kaynak türü için SHARE_PUBLIC özellik iznine sahip olduğunda verilebilir.
Kişi Seçici Görünürlüğü
Kişi seçici (paylaşım iletişim kutularındaki arama kutusu), dağıtımınız için uygun olmayan asıl türleri gizlemek üzere örnek düzeyinde sınırlandırılabilir:
interface:
peoplePicker:
users: true
groups: true
roles: falseBu durum yalnızca arama arayüzünü etkiler; gizli asıl türleri (principal types) için mevcut ACL girişleri çalışmaya devam eder ve normal şekilde uygulanır.
ACL Öncesi Sürümlerden Geçişler
v0.8.0-rc3 öncesi sürümler daha basit bir sahiplik modeli kullanıyordu. Yükseltme işlemi, mevcut ajanların ve istemlerin erişilebilir kalması için ACL geçişinin çalıştırılmasını gerektirir:
Dry run (değişiklikleri önizle):
npm run migrate:agent-permissions:dry-run
npm run migrate:prompt-permissions:dry-runYürüt:
npm run migrate:agent-permissions
npm run migrate:prompt-permissionsDocker varyantları ve batch-size seçenekleri için agents migration guide bölümüne bakın.
İlgili Dokümantasyon
Bu rehber nasıl?
Kimlik Doğrulama
LibreChat'in güvenli ve kolay e-posta ve sosyal giriş seçenekleri sunan kullanıcı kimlik doğrulama sistemine kısa bir bakış.
Yönetici Paneli
LibreChat kullanıcılarını, gruplarını, rollerini, yapılandırma geçersiz kılmalarını ve sistem izinlerini, librechat.yaml dosyasını elle düzenlemeye gerek kalmadan yönetmek için bağımsız bir web arayüzü.