Zaktualizowano

Jak udostępniać pliki .env bez commitowania ich do Gita

Autor:

Najbezpieczniejszym sposobem udostępniania plików .env są szyfrowane, samousuwające się linki — nie Slack DM, e-mail ani Git commity. Narzędzia takie jak Vaulted szyfrują twoje zmienne środowiskowe w przeglądarce za pomocą AES-256-GCM, zanim cokolwiek zostanie wysłane, a link automatycznie się usuwa po wyświetleniu.

Według raportu GitGuardian State of Secrets Sprawl 2025 w 2024 roku wyciekło 23,8 miliona sekretów z publicznych repozytoriów GitHub — to wzrost o 25% rok do roku. Własne dane GitHub wskazują na 39 milionów wykrytych sekretów na platformie w 2024 roku. Wiele z nich pochodzi z przypadkowo zacommitowanej zawartości plików .env.

Problem z udostępnianiem plików .env

Pliki środowiskowe są szczególnie niebezpieczne, ponieważ gromadzą w jednym miejscu wszystkie sekrety, których potrzebuje twoja aplikacja: adresy URL baz danych, klucze API, sekrety podpisywania oraz tokeny zewnętrznych usług. Jeden wyciek .env może skompromitować każdą zewnętrzną usługę, z którą łączy się twoja aplikacja.

Popularne metody, których używają zespoły do udostępniania plików .env — i dlaczego zawodzą:

  • Slack/Discord DMs — Przeszukiwalne, archiwizowane, dostępne po odejściu pracownika
  • E-mail — Przechowywany w postaci jawnej na serwerach pocztowych, często przesyłany dalej nieumyślnie
  • Git commity — Nawet w prywatnych repozytoriach sekrety w historii są praktycznie niemożliwe do całkowitego usunięcia
  • Współdzielone dyski — Brak daty wygaśnięcia, brak kontroli dostępu, brak dziennika audytu
  • Notatki w 1Password/Bitwarden — Wymaga, aby obie strony miały konta w tym samym vaulcie

Lepsze podejście: szyfrowane, samousuwające się linki

Zamiast wysyłać zawartość pliku bezpośrednio, zaszyfruj ją najpierw i udostępnij link, który usuwa się po wyświetleniu.

Z poziomu przeglądarki

  1. Przejdź na vaulted.fyi
  2. Wklej zawartość swojego pliku .env
  3. Ustaw limit wyświetleń (1 wyświetlenie dla jednego odbiorcy) oraz datę wygaśnięcia
  4. Wyślij wygenerowany link swojemu współpracownikowi

Zawartość jest szyfrowana za pomocą AES-256-GCM w twojej przeglądarce, zanim cokolwiek zostanie wysłane. Klucz szyfrowania istnieje wyłącznie w fragmencie URL — serwer nigdy nie widzi twojego plaintext.

Z poziomu terminala

Jeśli wolisz wiersz poleceń, Vaulted CLI robi to samo:

# Pipe directly from the file
cat .env.production | npx vaulted-cli --views 1

# Or pass the file path
npx vaulted-cli --file .env.local --views 1 --expires 1h

# Add a passphrase for extra security
cat .env | npx vaulted-cli -v 1 -e 24h -p "ask-me-on-call"

CLI używa tego samego szyfrowania co aplikacja webowa — tego samego algorytmu, tej samej architektury zero-knowledge, tych samych samousuwających się linków. Wynikiem jest jeden URL, który możesz wkleić do Slacka lub gdziekolwiek indziej — wygasa po tym, jak odbiorca go wyświetli.

A co z menedżerami sekretów?

Narzędzia takie jak Doppler, Infisical i AWS Secrets Manager świetnie sprawdzają się w środowiskach produkcyjnych, gdzie sekrety są odczytywane przez aplikacje w sposób programowy. Rozwiązują jednak inny problem — zarządzają sekretami, które usługi odczytują automatycznie.

Problem udostępniania .env dotyczy przekazywania ich między ludźmi: podczas onboardingu nowego dewelopera, udostępniania konfiguracji stagingowej kontrahentowi lub dystrybucji zaktualizowanych poświadczeń po rotacji. Takie przekazanie musi być szybkie, bezpieczne i nie wymagać żadnej konfiguracji po stronie odbiorcy.

Dobre praktyki higieny plików .env

  1. Nigdy nie commituj plików .env do Gita — Dodaj .env* do .gitignore od pierwszego dnia
  2. Rotuj poświadczenia po udostępnieniu — Traktuj każde udostępnienie jako potencjalne ujawnienie
  3. Używaj linków z limitem wyświetleń — Jedno wyświetlenie na odbiorcę, krótki czas wygaśnięcia
  4. Dodaj passphrase do konfiguracji produkcyjnych — Przekaż passphrase oddzielnym kanałem
  5. Dokumentuj, które zmienne są potrzebne — Trzymaj w repozytorium plik .env.example z pustymi wartościami

Przestań wklejać zmienne środowiskowe do Slacka. Udostępniaj je bezpiecznie z Vaulted — z przeglądarki lub terminala.


Powiązane