Blog JSystems - uwalniamy wiedzę!

Szukaj

Claude Code

Jak zablokować Claude Code dostęp do wrażliwych plików i sekretów

W skrócie

  • Nie chcesz, żeby Claude Code czytał pliki .env, klucze prywatne czy katalogi z sekretami.
  • Domyślnie agent może odczytywać pliki w katalogu projektu, więc sekrety trzeba jawnie zablokować.
  • Rozwiązanie: dodaj wzorce plików wrażliwych do listy deny w settings.json oraz użyj pliku .claudeignore.

Claude Code, narzędzie CLI od Anthropic, do sensownej pracy potrzebuje czytać pliki w Twoim projekcie - i domyślnie ma do tego prawo. Problem w tym, że w typowym repozytorium leżą też pliki, których model nigdy nie powinien zobaczyć: .env z hasłami do bazy, klucze prywatne, tokeny API, pliki z danymi klientów. Wysłanie takich treści do modelu to realne ryzyko wycieku. Na szczęście Claude Code daje mechanizmy, żeby te pliki twardo odciąć - i warto je skonfigurować, zanim wpuścisz agenta do poważnego projektu.

Jak to wygląda w praktyce

Bez konfiguracji zabezpieczeń agent, szukając kontekstu, może otworzyć plik z sekretami - na przykład gdy poprosisz go o zdiagnozowanie połączenia z bazą, sięgnie po .env, żeby zobaczyć parametry. Zawartość takiego pliku trafia wtedy do kontekstu rozmowy z modelem. Po ustawieniu blokady zamiast odczytu zobaczysz odmowę:

Odczyt pliku .env zablokowany przez regule uprawnien (deny).
Nie moge go otworzyc.

To dokładnie ten stan, o który chodzi: agent wie, że plik istnieje, ale nie ma prawa zajrzeć do środka, więc jego zawartość nie trafia do modelu.

Dlaczego Claude Code tak działa

Odczyt plików jest jedną z operacji, które Claude Code domyślnie wykonuje bez pytania - bo bez czytania kodu agent byłby bezużyteczny. Zakres tego odczytu jest ograniczony do katalogu roboczego, ale w obrębie projektu narzędzie zakłada, że wolno mu czytać. Sekrety zwykle leżą właśnie w projekcie (np. .env w katalogu głównym), więc bez jawnej reguły wpadają w domyślne "wolno czytać". Dlatego zabezpieczenie polega na dopisaniu wyjątków: reguła deny ma najwyższy priorytet i przecina domyślne pozwolenie, a plik .claudeignore działa podobnie jak .gitignore - wyłącza wskazane ścieżki z zasięgu narzędzia.

Jak to rozwiązać krok po kroku

  1. Otwórz .claude/settings.json w katalogu projektu (albo ~/.claude/settings.json globalnie, jeśli chcesz chronić te same wzorce we wszystkich projektach).
  2. Dodaj wrażliwe ścieżki do listy deny w sekcji permissions:
    {
      "permissions": {
        "deny": [
          "Read(.env)",
          "Read(.env.*)",
          "Read(**/*.pem)",
          "Read(**/*.key)",
          "Read(secrets/**)",
          "Read(**/id_rsa)"
        ]
      }
    }
  3. Pamiętaj, że deny ma pierwszeństwo nad allow - nawet jeśli gdzieś masz szeroką regułę Read(*), wpisy z deny i tak zablokują wymienione pliki.
  4. Utwórz w katalogu głównym projektu plik .claudeignore i wypisz w nim ścieżki do pominięcia, po jednej w linii - składnia jest taka sama jak w .gitignore (np. .env, secrets/, *.pem).
  5. Zablokuj też komendy, które mogłyby obejść odczyt - warto do deny dodać Bash(cat .env) i podobne, żeby agent nie wyświetlił sekretu przez powłokę.
  6. Trzymaj sekrety poza katalogiem projektu, jeśli to możliwe (np. w menedżerze sekretów albo zmiennych środowiskowych), a w repozytorium zostaw tylko plik przykładowy .env.example bez prawdziwych wartości.
  7. Skonfiguruj te reguły w wersjonowanym .claude/settings.json, żeby cały zespół był chroniony tak samo, a nie tylko Ty na swojej maszynie.

Jak sprawdzić, że zadziałało

Poproś agenta wprost: "pokaż mi zawartość pliku .env". Poprawnie skonfigurowany Claude Code odmówi i powoła się na regułę deny, zamiast wyświetlić plik. Sprawdź też listę reguł komendą /permissions - Twoje wzorce blokujące powinny być widoczne na liście deny. Dla pewności spróbuj też komendy powłoki (cat .env) - jeśli i ona zostanie zablokowana lub trafi do potwierdzenia, obie drogi dostępu do sekretów są zabezpieczone.

Wróć do listy: 100 najczęstszych problemów 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 domyślnie może czytać plik .env z sekretami?
Tak. Odczyt plików w katalogu projektu jest jedną z operacji, które Claude Code wykonuje domyślnie bez pytania, bo bez czytania kodu byłby bezużyteczny. Sekrety zwykle leżą właśnie w projekcie, więc plik .env wpada w to domyślne pozwolenie i trzeba go jawnie zablokować regułą deny.
Jak zablokować odczyt plików z sekretami w Claude Code?
Dodaj wzorce plików wrażliwych do listy deny w sekcji permissions pliku settings.json, na przykład Read(.env), Read(**/*.pem), Read(**/*.key) oraz Read(secrets/**). Reguła deny ma najwyższy priorytet, więc przecina domyślne pozwolenie na odczyt nawet przy szerokiej regule Read(*).
Czym jest plik .claudeignore i jak działa?
To plik w katalogu głównym projektu, w którym wypisujesz ścieżki do pominięcia przez Claude Code - po jednej w linii, ze składnią taką samą jak w .gitignore. Wyłącza wskazane pliki i katalogi z zasięgu narzędzia, więc jest dodatkową warstwą ochrony sekretów obok reguł deny w settings.json.
Czy sama blokada odczytu wystarczy, żeby agent nie zobaczył sekretu?
Nie do końca. Warto też zablokować komendy powłoki, które mogłyby wyświetlić plik, dodając do deny wpisy typu Bash(cat .env). Najlepiej jednak w ogóle trzymać sekrety poza katalogiem projektu - w menedżerze sekretów lub zmiennych środowiskowych - a w repozytorium zostawić tylko przykładowy .env.example bez prawdziwych wartości.

Komentarze (0)

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

Brak komentarzy...