0

Kontroler różnic ENV

Porównaj dwa pliki .env (w fazie testowej i produkcyjnej, przed i po wdrożeniu) i zobacz dokładnie, które klucze zostały dodane, usunięte lub zmienione, z automatycznie maskowanymi tajnymi wartościami.

Buy Me a Coffee at ko-fi.com
Przetwarzanie... 0%
Analizowanie obu plików
Obliczanie różnic
Maskowanie tajemnic
Gotowe

Wynik

Porównując tymczasowy plik .env z produkcją lub dzisiejszą konfigurację wdrożenia z konfiguracją z zeszłego tygodnia, na pierwszy rzut oka widać, jak zaczynają się prawdziwe awarie: brakujący DATABASE_URL, PORT, który po cichu się zmienił, klucz API, który został obrócony w jednym środowisku, ale nie w drugim. Wklejenie obu plików do ogólnego pliku różnicowego również niewiele pomaga — pokazuje, które linie się różnią, a nie, które zmienne środowiskowe faktycznie się zmieniły, i szczęśliwie wypisuje każdą tajną wartość na widoku, gdy tylko udostępnisz wynik członkowi zespołu.

To narzędzie analizuje oba pliki w sposób, w jaki dotenv faktycznie je odczytuje — jedna para KEY=wartość w każdym wierszu, # komentarze i puste linie są ignorowane, wartości w pojedynczych lub podwójnych cudzysłowach nie są ujęte w cudzysłów (z \n bez ucieczki tylko w podwójnych cudzysłowach, dokładnie tak, jak określa konwencja dotenv) i opcjonalny przedrostek eksportu KLUCZ=wartość toleruje sposób, w jaki używają go pliki env pochodzące z powłoki. Każdy plik staje się czystą mapą klucz-wartość, a następnie obie mapy są różnicowane według klucza: obecne tylko w pliku A jest „usuwane”, obecne tylko w pliku B jest „dodawane”, obecne w obu plikach z inną wartością jest „zmienione”, a identyczne wartości są „niezmienione” i domyślnie ukryte, więc tabela pozostaje skupiona na tym, co faktycznie się różni.

Cechą, która sprawia, że można tego bezpiecznie używać w przypadku prawdziwych sekretów, jest automatyczne maskowanie. Każda wartość pokazana w tabeli różnic jest sprawdzana pod kątem dwóch niezależnych sygnałów: czy jej nazwa klucza wygląda jak tajemnica (dopasowanie bez uwzględniania wielkości liter z KEY, SECRET, TOKEN, PASSWORD, PRIVATE lub CREDENTIAL), czy też sama wartość ma wysoką entropię Shannona — tę samą miarę teoretyczną informacji (-Σ p(c)·log2(p(c)) nad znakami wartości), która oznacza klucze API, tokeny i losowe hasła jako statystycznie różni się od zwykłych słów, nawet jeśli nazwa klucza nie daje żadnej podpowiedzi. Każdy sygnał wystarczy, aby zamaskować wartość aż do pierwszych i dwóch ostatnich znaków, obliczonych niezależnie dla starej i nowej strony każdego zmienionego wiersza.

Wszystko — analizowanie, różnicowanie, ocenianie entropii i maskowanie — działa całkowicie w Twojej przeglądarce; ani plik, ani żadna wyodrębniona z niego wartość nie jest nigdzie wysyłana. To właściwa gwarancja narzędzia, którego zadaniem jest przeglądanie obok siebie dwóch plików, które prawdopodobnie zawierają prawdziwe dane uwierzytelniające bazy danych, klucze API i hasła.