Orbito - Dokumentacja modułówOrbito - Dokumentacja modułów
Wprowadzenie
Pierwsze kroki
API
Komunikacja
Widoki
Wdrożenie
Społeczność
For AI agents
Wprowadzenie
Pierwsze kroki
API
Komunikacja
Widoki
Wdrożenie
Społeczność
For AI agents
  • Wprowadzenie

    • Wprowadzenie do Orbito
    • Architektura systemu
    • Ograniczenia modułu

Ograniczenia modułu

Model bezpieczeństwa Orbito opiera się na zasadzie minimalnego zaufania do kodu modułu. Moduł działa w ściśle kontrolowanym środowisku, co chroni zarówno platformę, jak i dane firm korzystających z Twojego modułu. Poniżej opisano ograniczenia, z którymi musisz się liczyć podczas tworzenia modułu.

Izolacja sieciowa

Kontener Docker, w którym działa moduł, nie ma bezpośredniego dostępu do internetu ani do sieci wewnętrznej. Próba nawiązania połączenia TCP/UDP z zewnętrznym hostem bezpośrednio z kodu modułu zakończy się błędem.

Dotyczy to m.in.:

  • bibliotek HTTP jak axios, node-fetch, wbudowanego https Node.js,
  • klientów baz danych łączących się z zewnętrznymi serwerami,
  • połączeń WebSocket do zewnętrznych serwisów.

Brak wyjątków

Izolacja sieciowa jest egzekwowana na poziomie infrastruktury Docker, nie w warstwie aplikacyjnej. Żaden kod JavaScript nie jest w stanie jej obejść.

Z tego samego powodu moduł nie ma własnego publicznego adresu, więc nie odbiera też przekierowań od zewnętrznych serwisów. Callbacki OAuth odbiera rdzeń Orbito i przekazuje ich parametry modułowi dopiero po powrocie zalogowanego użytkownika. Szczegóły opisuje OAuth.

Zapytania HTTP przez Core.fetch

Jedynym sposobem na komunikację z zewnętrznymi API jest metoda Core.fetch, która przekierowuje żądanie przez serwer Orbito.

const { Core } = require('@orbito/api-lib');

// ✅ Poprawnie – przez Core.fetch
const response = await Core.fetch('https://api.przykladowy-serwis.pl/v1/data', {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${token}` },
  body: JSON.stringify({ key: 'value' })
});
const data = await response.json();

// ❌ Błąd – bezpośrednie połączenie jest zablokowane
const axios = require('axios');
const data = await axios.get('https://api.przykladowy-serwis.pl/v1/data');

Biała lista domen

Serwer Orbito przed przekazaniem żądania sprawdza, czy domena docelowa jest na liście domen zatwierdzonych przez administratora firmy w panelu Orbito. Jeśli domeny nie ma na liście, żądanie zostanie odrzucone z błędem autoryzacji.

Oznacza to, że:

  1. W dokumentacji Twojego modułu powinieneś poinformować administratorów, jakie domeny wymagają dodania do białej listy.
  2. Żądania do niezatwierdzonych domen nie dotrą do celu – zaplanuj odpowiednią obsługę błędu.
try {
  const response = await Core.fetch('https://api.zewnetrzne.pl/endpoint', options);
  // ...
} catch (err) {
  // może to być błąd białej listy lub błąd sieci
  Log.error('Błąd żądania HTTP', { err });
}

Izolacja systemu plików

Moduł widzi wyłącznie własny katalog roboczy – ten sam, który został wgrany jako archiwum ZIP. Nie ma dostępu do:

  • systemu plików hosta (serwera, na którym działa Orbito),
  • katalogów innych modułów,
  • jakichkolwiek ścieżek poza własnym katalogiem.

Moduł może odczytywać pliki, które sam ze sobą dostarcza (np. szablony, pliki konfiguracyjne statyczne), ale nie powinien zapisywać danych do systemu plików. Kontener może zostać zrestartowany lub zastąpiony nową wersją modułu w dowolnym momencie, co spowoduje utratę zapisanych plików.

Persystencja danych

Do przechowywania danych używaj bazy MongoDB przez moduł DB, a do przechowywania plików (logo, wygenerowane miniatury, dokumenty) modułu Files — bucketu plików instalacji. Dane zapisane w systemie plików kontenera są tymczasowe.

Ostatnio zaktualizowano:: 6.10.2026, 10:19
Contributors: Wiktor Koźmiński, Claude Opus 5 (1M context), Claude Fable 5.1
Prev
Architektura systemu