Bezpieczeństwo

Zaufane foldery

Kontroluj, które projekty mogą korzystać z pełnych możliwości Bob Shell dzięki zabezpieczeniom zaufanych folderów.

Zaufane foldery dają ci kontrolę nad tym, które projekty mogą być używane z Bob Shell. Musisz zatwierdzić folder, zanim Bob Shell załaduje jakiekolwiek konfiguracje specyficzne dla projektu, chroniąc cię przed potencjalnie złośliwym kodem.

Uwaga:

Funkcja zaufanych folderów jest domyślnie wyłączona. Aby ją włączyć, otwórz menu /settings i ustaw Folder Trust na true. Aby zmiana zaczęła działać, wymagane jest ponowne uruchomienie.

Jak działają zaufane foldery

Gdy uruchamiasz Bob Shell z folderu po raz pierwszy, automatycznie pojawia się okno dialogowe zaufania z prośbą o dokonanie wyboru:

  • Ufaj folderowi: Przyznaj pełne zaufanie bieżącemu folderowi (na przykład mój-projekt)
  • Ufaj folderowi nadrzędnemu: Przyznaj zaufanie katalogowi nadrzędnemu (na przykład bezpieczne-projekty), co automatycznie ufa wszystkim jego podkatalogom. Użyj tej opcji, jeśli przechowujesz wszystkie bezpieczne projekty w jednej lokalizacji
  • Nie ufaj: Oznacz folder jako niezaufany. Bob Shell działa w ograniczonym trybie bezpiecznym

Twój wybór jest zapisywany w ~/.bob/trustedFolders.json, więc pytanie pojawia się tylko raz na folder.

Poziomy zaufania

Plik ~/.bob/trustedFolders.json przechowuje jeden wpis zaufania na folder. Każdy wpis używa jednego z trzech poziomów zaufania:

Poziom zaufaniaEfekt
TRUST_FOLDERPrzyznaje pełne zaufanie dokładnej ścieżce folderu. Ustawienia projektu, hooki, tryby, skills i serwery MCP są ładowane normalnie.
TRUST_PARENTPrzyznaje pełne zaufanie wskazanemu katalogowi i wszystkim jego podkatalogom. Użyj tego poziomu, aby objąć główny katalog obszaru roboczego zawierającego wiele repozytoriów.
DONT_TRUSTOznacza folder jako niezaufany. Bob Shell działa w ograniczonym trybie bezpiecznym i blokuje wszystkie konfiguracje specyficzne dla projektu. Patrz Wpływ niezaufanych folderów.

Foldery, które nie mają wpisu w ~/.bob/trustedFolders.json, nazywane są nierozstrzygniętymi. To, jak Bob Shell traktuje nierozstrzygnięte foldery, zależy od tego, czy funkcja zaufanych folderów jest włączona. Patrz Sesje nieinteraktywne, aby uzyskać szczegółowe informacje.

Wpływ niezaufanych folderów

Gdy folder jest niezaufany, Bob Shell działa w ograniczonym trybie bezpiecznym. Następujące funkcje są wyłączone lub ignorowane:

FunkcjaZachowanie w trybie bezpiecznym
Ustawienia projektu.bob/settings.json nie jest ładowany. Niestandardowe narzędzia i potencjalnie niebezpieczne konfiguracje są blokowane.
Automatyczne zatwierdzanie narzędziPrzed uruchomieniem każdego narzędzia zawsze zostaniesz zapytany, nawet jeśli masz globalnie włączone automatyczne zatwierdzanie.
Serwery MCPBob Shell nie będzie próbował połączyć się z żadnymi serwerami MCP.
Tryby niestandardoweTryby zdefiniowane w folderze projektu są niedostępne. Możesz używać tylko trybów wbudowanych i swoich trybów zdefiniowanych globalnie.
SkillsSkills dołączone do projektu nie są ładowane. Aktywne pozostają tylko skills dostępne globalnie i wbudowane możliwości.
SubagentsNiestandardowe subagents z folderu projektu są niedostępne. Agent nie może delegować pracy do pomocników dostarczonych przez projekt.
Instrukcje projektuPliki z wytycznymi, takie jak AGENTS.md, oraz niestandardowe reguły projektu nie są odczytywane. Agent działa bez niestandardowych instrukcji projektu.

Przyznanie zaufania folderowi odblokowuje pełną funkcjonalność Bob Shell dla danego obszaru roboczego.

Zarządzanie ustawieniami zaufania

Jak rozstrzygane jest zaufanie
Bob Shell sprawdza ~/.bob/trustedFolders.json, aby zobaczyć, czy istnieje już decyzja dla bieżącego folderu.
Zmiana zaufania bieżącego folderu
Uruchom polecenie ukośnikowe /permissions z poziomu Bob Shell. Pojawi się interaktywne okno dialogowe umożliwiające zmianę poziomu zaufania dla bieżącego folderu.
Przeglądanie wszystkich reguł zaufania
Sprawdź ~/.bob/trustedFolders.json w katalogu domowym, aby zobaczyć pełną listę wszystkich reguł dotyczących zaufanych i niezaufanych folderów.

Sesje nieinteraktywne

W odróżnieniu od trybu interaktywnego, sesje nieinteraktywne (bob run) nigdy nie wyświetlają okna dialogowego zaufania. Bob Shell działa w trybie cichym na podstawie wcześniej podjętych decyzji dotyczących zaufania.

Domyślne zachowanie, gdy funkcja jest wyłączona

Gdy funkcja zaufanych folderów jest wyłączona (domyślnie), Bob Shell traktuje każdy folder jako zaufany. Ustawienia projektu, hooki, tryby, skills i serwery MCP są ładowane dla każdego folderu bez ograniczeń, niezależnie od tego, czy istnieje wpis w ~/.bob/trustedFolders.json.

Zachowanie, gdy funkcja jest włączona

Gdy funkcja zaufanych folderów jest włączona, Bob Shell ocenia poziom zaufania folderu roboczego przed załadowaniem jakiejkolwiek zawartości specyficznej dla projektu:

  • Folder nierozstrzygnięty (brak wpisu w ~/.bob/trustedFolders.json): Folder jest traktowany jako zaufany. Ustawienia projektu i hooki są ładowane normalnie.
  • Wpis TRUST_FOLDER lub TRUST_PARENT: Folder jest zaufany. Pełna funkcjonalność jest dostępna.
  • Wpis DONT_TRUST: Bob Shell zgłasza błąd i nie uruchamia się:
    <folder> is not a trusted folder. Pass --trust to run in this folder,
    or run Bob Shell interactively and choose a trust level.
Ważne:

Samo włączenie funkcji zaufanych folderów nie blokuje wykonywania hooków dla folderów bez decyzji dotyczącej zaufania. Folder nierozstrzygnięty — na przykład repozytorium sklonowane po raz pierwszy w potoku CI/CD — jest traktowany jako zaufany. Tylko jawny wpis DONT_TRUST zapobiega ładowaniu hooków i ustawień projektu.

Wykonywanie hooków w trybie bezgłowym

Globalne hooki zdefiniowane w ~/.bob/settings/settings.json są wykonywane dla każdego folderu, który nie jest jawnie oznaczony jako DONT_TRUST, w tym dla folderów nierozstrzygniętych. Hooki obszaru roboczego zdefiniowane w .bob/settings.json wewnątrz projektu również podlegają zaufaniu do folderu: są ładowane tylko wtedy, gdy folder jest zaufany lub nierozstrzygnięty, i są po cichu pomijane, gdy folder ma wpis DONT_TRUST.

Aby dowiedzieć się, które hooki są skonfigurowane i co robią, zanim uruchomisz bob run na nieznanym repozytorium, patrz Lifecycle hooks.

Zachowanie flag zależnie od trybu

Flagi --trust i --auto-approve zachowują się inaczej w zależności od tego, jak uruchamiasz Bob Shell. Wybierz tryb, aby zobaczyć zachowanie odpowiednie dla danego trybu:

--trust
Folder jest trwale zapisywany jako zaufany. Bob Shell zapisuje wpis zaufania dla bieżącego katalogu w ~/.bob/trustedFolders.json i pomija okno dialogowe zaufania przy pierwszym dostępie. To odpowiednik otwarcia folderu i ręcznego wybrania „Ufaj folderowi".
--auto-approve
Automatyczne zatwierdzanie jest po cichu tłumione w niezaufanym folderze. Nadal będziesz proszony o potwierdzenie przed każdym uruchomieniem narzędzia.
--trust
Folder jest traktowany jako zaufany tylko dla tego uruchomienia. Decyzja o zaufaniu nie jest zapisywana i nic nie trafia do magazynu zaufania.

Zabezpieczanie potoków automatyzacji

Jeśli uruchamiasz bob run w potoku CI/CD na repozytoriach, których nie kontrolujesz — na przykład repozytoriach zewnętrznych lub open source klonowanych w ramach procesu budowania — wykonaj następujące kroki, aby zapobiec wykonywaniu niezaufanego kodu hooków.

Przed rozpoczęciem: Włącz funkcję zaufanych folderów, ustawiając security.folderTrust.enabled na true w ~/.bob/settings/settings.json. Aby zmiana zaczęła działać, wymagane jest ponowne uruchomienie.

  1. Zdecyduj, które katalogi kontrolujesz, i dodaj wpis TRUST_PARENT do ~/.bob/trustedFolders.json dla każdego z nich. Obejmuje to wszystkie repozytoria znajdujące się pod znanym głównym katalogiem obszaru roboczego, a wszystko poza tą strukturą pozostaje nierozstrzygnięte.
    {
      "/home/runner/work/my-org": "TRUST_PARENT"
    }
  2. Dla każdego repozytorium, które klonujesz z zewnętrznego lub niezaufanego źródła, dodaj wpis DONT_TRUST przed uruchomieniem bob run:
    {
      "/home/runner/work/my-org": "TRUST_PARENT",
      "/home/runner/work/third-party-repo": "DONT_TRUST"
    }
  3. Przejrzyj globalne hooki skonfigurowane w ~/.bob/settings/settings.json. Globalne hooki są wykonywane dla każdego zaufanego lub nierozstrzygniętego folderu, w tym dla wszystkich repozytoriów objętych wpisem TRUST_PARENT. Usuń lub ogranicz zakres hooków, które nie powinny być uruchamiane na niezaufanym kodzie.
  4. Przed uruchomieniem bob run na sklonowanym repozytorium przejrzyj .bob/settings.json wewnątrz tego repozytorium pod kątem hooków obszaru roboczego, tak jak przeglądasz plik Makefile lub plik konfiguracyjny CI. Hooki obszaru roboczego są ładowane w każdym zaufanym lub nierozstrzygniętym folderze.

Po wykonaniu tych kroków Bob Shell blokuje ustawienia projektu i hooki dla każdego folderu z wpisem DONT_TRUST, jednocześnie pozwalając bob run działać normalnie w kontrolowanym przez ciebie obszarze roboczym.

Najlepsze praktyki

  • Ufaj tylko folderom zawierającym kod, który sam przejrzałeś lub stworzyłeś
  • Używaj TRUST_PARENT dla katalogów zawierających wiele bezpiecznych projektów, aby uniknąć zarządzania wpisami poszczególnych folderów
  • Regularnie przeglądaj ~/.bob/trustedFolders.json, aby sprawdzać, które foldery są zaufane
  • Podczas pracy z nieznanym kodem dodaj wpis DONT_TRUST dla sklonowanego katalogu przed uruchomieniem bob run
  • Regularnie przeglądaj globalne hooki w ~/.bob/settings/settings.json — są wykonywane w każdym zaufanym i nierozstrzygniętym folderze
Jak oceniasz ten temat?