Skanowanie sekretów i dane uwierzytelniające zapisane na stałe
Nauczy się Pan/Pani zapobiegać zatwierdzaniu kluczy API i haseł za pomocą git-secrets, gitleaks oraz hooków pre-commit.
Skanowanie sekretów i dane uwierzytelniające zapisane na stałe to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cyber Security Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.
Problem sekretów zapisanych na stałe
Deweloperzy przypadkowo zatwierdzają w repozytoriach kodu źródłowego klucze API, hasła, klucze prywatne i tokeny. Po zapisaniu w historii git pozostają tam nawet po usunięciu. Publiczne repozytoria są skanowane przez boty w ciągu kilku sekund od wykonania push.
Co trafia do commitów
Typowe sekrety znajdowane w repozytoriach:
- Klucze dostępu AWS (
AKIA...) - Osobiste tokeny dostępu GitHub
- Hasła do baz danych w plikach konfiguracyjnych
- Klucze API Stripe/płatności
- Prywatne klucze TLS/SSH
- Adresy URL webhooków Slack
Haki pre-commit zapobiegające problemom
Należy zapobiec przedostawaniu się sekretów do gita:
# Install gitleaks as a pre-commit hook:
pip install pre-commit
# .pre-commit-config.yaml:
repos:
- repo: https://github.com/zricethezav/gitleaks
rev: v8.18.1
hooks:
- id: gitleaksSkanowanie istniejących repozytoriów
Należy przeskanować istniejące repozytoria pod kątem sekretów:
# gitleaks: scan entire git history
gitleaks detect --source . --log-opts="--all"
# truffleHog: high-entropy string + regex detection
trufflehog git file://.
# GitHub secret scanning (automatic for public repos)
# Alerts under Security → Secret scanning alertsSkanowanie sekretów w GitHub
GitHub automatycznie skanuje publiczne repozytoria pod kątem znanych wzorców sekretów (kluczy AWS, tokenów GitHub itd.) i powiadamia dostawcę. W przypadku prywatnych repozytoriów GitHub Advanced Security rozszerza tę funkcję. Dostawcy tacy jak AWS automatycznie unieważniają klucze po ich wykryciu.
Rozwiązanie z użyciem .gitignore (i jego ograniczenia)
Dodanie .env do .gitignore zapobiega przypadkowemu zatwierdzeniu pliku. Deweloperzy nadal mogą jednak zatwierdzać sekrety w innych plikach, a .gitignore nie pomaga, jeśli plik został już zatwierdzony. Ochrona warstwowa obejmuje gitignore, haki pre-commit i skanowanie CI.
Korzystanie ze zmiennych środowiskowych
Sekrety nigdy nie powinny znajdować się w kodzie. Należy używać zmiennych środowiskowych ładowanych w czasie działania:
# Python:
import os
api_key = os.environ["API_KEY"]
# Node.js with dotenv (for local dev only):
require("dotenv").config()
const apiKey = process.env.API_KEY
# Never commit .env to gitMenedżery sekretów
Aplikacje produkcyjne powinny korzystać z dedykowanych menedżerów sekretów:
- AWS Secrets Manager — automatyczna rotacja, dostęp kontrolowany przez IAM
- HashiCorp Vault — rozwiązanie open source dla przedsiębiorstw, obsługujące wiele systemów zaplecza
- Azure Key Vault / GCP Secret Manager
Sekrety nigdy nie znajdują się w kodzie ani w zapisanych na dysku zmiennych środowiskowych.
Rotacja przejętych sekretów
Jeśli sekret zostanie ujawniony:
- Natychmiast unieważnić sekret (przed rozpoczęciem analizy)
- Sprawdzić dzienniki dostępu pod kątem nieautoryzowanego użycia
- Wygenerować nowy sekret
- Zaktualizować wszystkie systemy korzystające ze starego sekretu
- Usunąć sekret z historii gita za pomocą
git-filter-repolub BFG Repo Cleaner
Usuwanie sekretów z historii gita
Po unieważnieniu sekretu należy usunąć go z historii:
# BFG Repo Cleaner (faster than filter-branch):
java -jar bfg.jar --delete-files .env repo.git
git reflog expire --expire=now --all
git gc --prune=now --aggressive
git push --force
# Note: force push rewrites history - coordinate with teamSekrety w potokach CI/CD
Systemy CI/CD mają własne mechanizmy zarządzania sekretami:
- GitHub Actions: sekrety przechowywane w ustawieniach repozytorium/organizacji → dostępne jako
${{ secrets.API_KEY }} - GitLab CI: zmienne CI/CD
- Jenkins: wtyczka Credentials
Sekrety należy maskować w dziennikach. Nigdy nie należy wyświetlać ich w danych wyjściowych trybu debugowania.
Szybki test: skanowanie sekretów
Jaki jest najskuteczniejszy pierwszy poziom ochrony zapobiegający przedostawaniu się sekretów do repozytorium?
Podsumowanie lekcji
Sekrety zapisane na stałe w gicie stanowią krytyczne ryzyko — publiczne repozytoria są skanowane przez boty w ciągu kilku sekund. Zapobieganie obejmuje haki pre-commit (gitleaks) i gitignore. Wykrywanie obejmuje truffleHog i skanowanie sekretów w GitHub. Sekrety należy przechowywać w zmiennych środowiskowych lub dedykowanych menedżerach sekretów (Vault, AWS Secrets Manager). Po ujawnieniu należy je natychmiast rotować, a następnie usunąć z historii gita za pomocą BFG Repo Cleaner.
Często zadawane pytania
Czy lekcja „Skanowanie sekretów i dane uwierzytelniające zapisane na stałe” jest bezpłatna?
Tak — pełny tekst „Skanowanie sekretów i dane uwierzytelniające zapisane na stałe” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cyber Security Academy, przejdź na CoddyKit PRO. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Skanowanie sekretów i dane uwierzytelniające zapisane na stałe”?
Nauczy się Pan/Pani zapobiegać zatwierdzaniu kluczy API i haseł za pomocą git-secrets, gitleaks oraz hooków pre-commit. Ćwiczysz Cyber Security Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Cyber Security Academy?
Nie wymagamy żadnego doświadczenia. Cyber Security Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Skanowanie sekretów i dane uwierzytelniające zapisane na stałe”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Cyber Security Academy?
Tak. Każda lekcja Cyber Security Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- SAST i DAST w potokach CI/CD
- Analiza składu oprogramowania (SCA)
- Skanowanie sekretów i dane uwierzytelniające zapisane na stałe
- Security Champions i modelowanie zagrożeń