Blog JSystems - uwalniamy wiedzę!

Szukaj

Claude Code

Jak chronić sekrety i plik .env przed Claude Code

W skrócie

  • Boisz się, że Claude Code przeczyta plik .env z hasłami i kluczami albo wciągnie sekrety do kontekstu wysyłanego do chmury.
  • Domyślnie asystent może odczytywać pliki w projekcie, żeby rozumieć kod - a plik z sekretami wygląda dla niego jak każdy inny plik konfiguracyjny.
  • Rozwiązanie to jawnie zablokować dostęp do wrażliwych ścieżek w settings.json (sekcja deny) i trzymać sekrety poza kodem, tak by nigdy nie musiały trafić do rozmowy.

Plik .env z kluczami do API, hasłem do bazy i sekretami płatności to ostatnia rzecz, którą chcesz wysłać dokądkolwiek. A skoro Claude Code potrafi czytać pliki w projekcie, żeby rozumieć kod, naturalne jest pytanie: czy zajrzy też tam, gdzie nie powinien? Odpowiedź jest uspokajająca, bo narzędzie daje Ci twardy mechanizm blokady - trzeba go tylko świadomie ustawić. To kilka linijek konfiguracji, które zamykają temat raz na zawsze.

Jak to wygląda w praktyce

Ryzyko materializuje się niepostrzeżenie. Prosisz asystenta o coś w rodzaju "sprawdź, jak łączymy się z bazą", a on - żeby odpowiedzieć - czyta plik konfiguracyjny, w którym leżą prawdziwe dane dostępowe. Albo każesz mu "przejrzyj konfigurację projektu", a on wciąga do kontekstu wszystko, co na konfigurację wygląda, łącznie z .env. Bywa, że sekrety trafiają do repozytorium przez pomyłkę i asystent natrafia na nie przy zwykłym przeszukiwaniu kodu. We wszystkich przypadkach mechanizm jest ten sam: dla modelu plik z sekretami niczym się nie wyróżnia, więc jeśli mieści się w zakresie zadania, może go otworzyć - a wtedy jego zawartość ląduje w kontekście wysyłanym do przetworzenia.

Dlaczego Claude Code tak działa

Zdolność czytania plików jest tym, co czyni Claude Code użytecznym - bez niej asystent nie zrozumiałby Twojego kodu i pracowałby na ślepo. Domyślnie może więc sięgać po pliki w katalogu projektu, bo tego właśnie od niego oczekujemy. Problem w tym, że model nie ma wrodzonej wiedzy, że akurat .env jest święty - to dla niego kolejny plik tekstowy z parami klucz-wartość, wyglądający jak zwykła konfiguracja. Rozróżnienie "to wolno czytać, tego nie" musi pochodzić od Ciebie, bo tylko Ty wiesz, gdzie w projekcie leżą tajemnice. Dlatego Claude Code ma system uprawnień oparty na regułach: w pliku settings.json definiujesz, co asystentowi wolno (allow), a czego bezwzględnie nie wolno (deny). Reguła deny działa jak twarda bariera - dopisane tam ścieżki są niedostępne, więc ich zawartość nigdy nie trafi do kontekstu, a tym samym nie zostanie wysłana. To przenosi decyzję o ochronie sekretów tam, gdzie jej miejsce: do Twojej konfiguracji.

Jak to rozwiązać krok po kroku

  1. Otwórz (albo utwórz) plik .claude/settings.json w projekcie i dodaj w sekcji uprawnień listę deny z regułami blokującymi odczyt wrażliwych plików - na przykład wzorzec obejmujący .env oraz jego warianty typu .env.local.
  2. Rozszerz blokadę o inne miejsca z sekretami: katalog z certyfikatami i kluczami, pliki z danymi dostępowymi, foldery z danymi klientów. Reguły deny mogą używać wzorców ścieżek, więc jednym wpisem zamkniesz cały katalog.
  3. Wersjonuj tę konfigurację w repozytorium (poza settings.json istnieje też wariant lokalny, prywatny). Dzięki temu każdy w zespole startuje z tymi samymi blokadami, a nie polega na tym, że pamiętał je ustawić.
  4. Upewnij się, że sam .env jest w .gitignore i nigdy nie trafił do repozytorium. Blokada w Claude Code chroni przed odczytem, ale sekret, który już wyciekł do historii Gita, to osobny problem do posprzątania.
  5. Trzymaj wartości sekretów poza kodem - w zmiennych środowiskowych i menedżerze sekretów. Gdy w plikach są tylko odwołania do zmiennych, a nie prawdziwe wartości, nawet przypadkowy odczyt niczego nie ujawnia.
  6. Formułuj polecenia tak, by nie zapraszać asystenta do wrażliwych plików. Zamiast "pokaż konfigurację bazy" poproś "pokaż, jak kod czyta zmienne środowiskowe" - kierujesz uwagę na mechanizm, a nie na plik z wartościami.

Jak sprawdzić, że zadziałało

Ten mechanizm da się przetestować wprost, i warto to zrobić. Po dodaniu reguł deny poproś Claude Code, żeby otworzył .env albo inny zablokowany plik. Jeśli konfiguracja działa, dostęp zostanie odmówiony i zawartość nie pojawi się w rozmowie - to bezpośredni dowód, że bariera stoi. Sprawdź kilka ścieżek, także przez przeszukiwanie ("znajdź, gdzie jest klucz do API"), żeby upewnić się, że blokada obejmuje nie tylko bezpośredni odczyt. Przejrzyj też operacje, które asystent wykonuje przy zwykłej pracy - narzędzie pokazuje, jakie pliki czyta, więc wychwycisz, czy przypadkiem nie sięga po coś wrażliwego, czego nie objąłeś regułą. Ostateczne potwierdzenie to spokój przy codziennym używaniu: gdy wiesz, że sekrety są zablokowane w konfiguracji i trzymane poza kodem, przestajesz się zastanawiać, czy asystent "czegoś nie zobaczył" - bo z założenia nie może.

Wroc do listy: 100 najczestszych problemow z Claude Code

Szkolenie Claude Code - od zera do zespołu agentów AI, prowadzi Łukasz Matuszewski (JSystems)

Szkolenie Claude Code - od zera do zespołu agentów AI -->

Szkolenie Claude Code - od zera do zespołu agentów AI

Tryb planowania, tryby uprawnień, komendy, MCP, hooki i systemy multi-agent - wszystko na żywym kodzie podczas trzydniowego szkolenia. Prowadzi Łukasz Matuszewski. Szkolenie ma terminy gwarantowane - odbędzie się niezależnie od liczby zgłoszeń.

Sprawdź szkolenie Claude Code

To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Najczęściej zadawane pytania

Czy Claude Code moze przeczytac plik .env?
Domyslnie tak - asystent moze odczytywac pliki w projekcie, by rozumiec kod, a plik .env wyglada dla niego jak kazdy inny plik konfiguracyjny z parami klucz-wartosc. Dlatego trzeba jawnie zablokowac dostep do wrazliwych sciezek, bo model sam nie wie, ze akurat ten plik jest tajny.
Jak zablokowac Claude Code dostep do sekretow?
W pliku .claude/settings.json dodaj w sekcji uprawnien liste deny z regulami blokujacymi odczyt wrazliwych plikow, na przyklad wzorzec obejmujacy .env i jego warianty oraz katalogi z kluczami. Regula deny dziala jak twarda bariera - zablokowane sciezki nie trafia do kontekstu.
Czy blokada w Claude Code wystarczy do ochrony sekretow?
To wazny element, ale nie jedyny - warto tez trzymac wartosci sekretow poza kodem, w zmiennych srodowiskowych i menedzerze sekretow, oraz upewnic sie, ze plik .env jest w .gitignore i nie trafil do repozytorium. Gdy w plikach sa tylko odwolania do zmiennych, przypadkowy odczyt niczego nie ujawnia.
Jak sprawdzic, ze blokada wrazliwych plikow dziala?
Po dodaniu regul deny popros Claude Code, zeby otworzyl plik .env albo inny zablokowany plik - jesli konfiguracja dziala, dostep zostanie odmowiony, a zawartosc nie pojawi sie w rozmowie. Warto sprawdzic tez przeszukiwanie, by upewnic sie, ze blokada obejmuje nie tylko bezposredni odczyt.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...