0Pricing
Cyber Security Academy · Lekcja

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: gitleaks

Skanowanie 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 alerts

Skanowanie 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 git

Menedż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:

  1. Natychmiast unieważnić sekret (przed rozpoczęciem analizy)
  2. Sprawdzić dzienniki dostępu pod kątem nieautoryzowanego użycia
  3. Wygenerować nowy sekret
  4. Zaktualizować wszystkie systemy korzystające ze starego sekretu
  5. Usunąć sekret z historii gita za pomocą git-filter-repo lub 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 team

Sekrety 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

  1. SAST i DAST w potokach CI/CD
  2. Analiza składu oprogramowania (SCA)
  3. Skanowanie sekretów i dane uwierzytelniające zapisane na stałe
  4. Security Champions i modelowanie zagrożeń
← Powrót do Cyber Security Academy