Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Actions Nesne Yapısı

Actions, OpenAPI spesifikasyonlarından dinamik olarak araçlar oluşturmak için kullanılabilir. actions nesne yapısı, ajan/asistan eylemleri için izin verilen alan adlarını belirtmenize olanak tanır.

Daha fazla bilgi: Agents - Actions

Örnek

# Example Actions Object Structure
actions:
  # Strict whitelist mode:
  # allowedDomains:
  #   - "swapi.dev"
  #   - "librechat.ai"
  #   - "google.com"
  #   - "https://api.example.com:8443"  # With protocol and port

  # Default SSRF mode with private service exemptions:
  allowedAddresses:
    - "host.docker.internal:11434"    # Permit one private host on one port
    - "10.0.0.5:8080"                 # Permit one private IP on one port

allowedDomains

Anahtar:

KeyTypeDescriptionExample
allowedDomainsArray of StringsAjan/asistan eylemleri için izin verilen alan adlarını belirten bir liste.When configured, only listed domains are allowed. When not configured, SSRF targets are blocked but all other domains are allowed.

İsteğe bağlı

Güvenlik Bağlamı (SSRF Koruması)

LibreChat, aşağıdaki davranışa sahip SSRF (Server-Side Request Forgery) koruması içerir:

allowedDomains yapılandırılmadığında:

  • SSRF'ye açık hedefler varsayılan olarak engellenmiştir
  • Diğer tüm harici alan adlarına izin verilmektedir

allowedDomains yapılandırıldığında:

  • Yalnızca listedeki alan adlarına izin verilir
  • Dahili/SSRF hedeflerine, listeye açıkça eklenerek izin verilebilir

Engellenen SSRF hedefleri şunları içerir:

  • Localhost adresleri (localhost, 127.0.0.1, ::1)
  • Özel IP aralıkları (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)
  • Link-local adresleri (169.254.0.0/16, bulut meta veri IP'lerini içerir)
  • Dahili TLD'ler (.internal, .local, .localhost)
  • Yaygın dahili servis adları (redis, mongodb, postgres, api vb.)

Eylemlerinizin dahili hizmetlere erişmesi gerekiyorsa, bunları katı allowedDomains beyaz listesine ekleyin ya da allowedDomains ayarını boş bırakıp tam özel hizmeti allowedAddresses kısmına ekleyin.

Desen Formatları

allowedDomains dizisi çeşitli formatları destekler:

  1. Yalnızca alan adı - Tüm protokollere ve bağlantı noktalarına izin verir:

    allowedDomains:
      - "api.example.com"
  2. Protokol ile - Belirli bir protokol ile kısıtlar:

    allowedDomains:
      - "https://api.example.com"
  3. İletişim kuralı ve bağlantı noktası ile - Belirli bir iletişim kuralı ve bağlantı noktası ile kısıtlar:

    allowedDomains:
      - "https://api.example.com:8443"
  4. Dahili adresler (açıkça izin verilmelidir):

    allowedDomains:
      - "192.168.1.100"
      - "internal-api.local"

Örnek:

allowedDomains:
  - "swapi.dev"
  - "librechat.ai"
  - "google.com"
  - "https://secure-api.example.com:443"
  - "192.168.1.50"  # Internal service (explicitly allowed)

allowedAddresses

allowedAddresses, SSRF özel IP engellemesi için bir muafiyet listesidir — bir alan adı beyaz listesi değildir. Eylemlerinizin (Actions) genel internette erişebileceklerini kısıtlamadan, bir veya iki belirli özel/dahili hizmete izin vermek istediğinizde kullanılması gereken doğru araçtır.

allowedDomains yerine ne zaman kullanılmalı

allowedDomains katı bir beyaz listedir: ayarlandığında, yalnızca listelenen girdilere erişilebilir. Örneğin, kendi kendine barındırılan bir dahili API'ye izin vermek için oraya özel bir IP eklemek, aynı zamanda listelemediğiniz tüm genel eylem endpoint'lerini de engeller.

allowedAddresses, yalnızca allowedDomains yapılandırılmadığında kullanılır. Belirli özel host:port hedeflerine izin verirken, internetin geri kalanının varsayılan SSRF politikası aracılığıyla erişilebilir kalmasını sağlar.

actions:
  allowedAddresses:
    - "host.docker.internal:11434"
    - "10.0.0.5:8080"
  # allowedDomains is intentionally not set — public destinations
  # remain reachable, only listed private host:port services are exempted.

allowedDomains yapılandırılmışsa, bu yetkilidir: özel hizmetler allowedAddresses yerine burada listelenmelidir.

Kabul edilebilir girdiler

  • Bağlantı noktası içeren ana bilgisayar adları: host.docker.internal:11434, ollama.internal:8080, localhost:11434
  • Bağlantı noktasına sahip özel IPv4 değişmezleri: 10.0.0.5:8080, 127.0.0.1:11434, 192.168.1.10:443, 169.254.169.254:80
  • Bağlantı noktası ile köşeli parantez içindeki özel IPv6 değişmezleri: [::1]:11434, [fc00::1]:8080, [fe80::1]:8080

Reddedilen girdiler (yapılandırma yüklenirken doğrulanır)

  • URL'ler / yollar / CIDR aralıkları: http://10.0.0.5, 10.0.0.0/24, /path
  • Çıplak ana bilgisayar adları veya IP'ler: localhost, 10.0.0.5, ::1, [::1] — her girdi bir port içermelidir
  • Geçersiz bağlantı noktaları: localhost:0, localhost:65536, localhost:http
  • Genel IP değişmezleri: 8.8.8.8:53, 1.1.1.1:53, [2001:4860::8888]:443 — bu alan özel IP alanı ile sınırlandırılmıştır; genel IP'ler SSRF hedefleri değildir ve genel IP muafiyetinin herhangi bir savunma amacı yoktur

Hostname trust

Bir hostname girdisi, çalışma zamanında belirtilen portta o hostname'in çözümlendiği her IP'ye güvenir. Listelenen bir hostname için DNS döndürülürse veya farklı bir özel IP'ye yönlendirilmek üzere ele geçirilirse, muafiyet de bunu takip eder. Yalnızca DNS'ini kontrol ettiğiniz hostname'leri listeleyin. Mümkün olduğunda gerçek IP'leri tercih edin.

Bu rehber nasıl?