Najlepsze praktyki w zakresie bezpieczeństwa
Bezpieczeństwo ma ogromne znaczenie podczas obsługi poufnych dokumentów i transakcji blockchain. Niniejszy przewodnik zawiera opis podstawowych praktyk bezpieczeństwa związanych z wdrażaniem i utrzymywaniem Chaindoc w środowiskach produkcyjnych.
Uwierzytelnianie i autoryzacja
Uwierzytelnianie wieloskładnikowe (MFA)
Zawsze włączaj uwierzytelnianie wieloskładnikowe (MFA) dla wszystkich kont użytkowników, zwłaszcza administratorów i użytkowników z podwyższonymi uprawnieniami. Chaindoc obsługuje:
- Jednorazowe hasła oparte na czasie (TOTP) za pośrednictwem aplikacji uwierzytelniających
- Weryfikacja za pomocą wiadomości SMS (mniej bezpieczna, używaj tylko w razie konieczności)
- Sprzętowe klucze bezpieczeństwa (FIDO2/WebAuthn)
- Uwierzytelnianie biometryczne na obsługiwanych urządzeniach
Zasady dotyczące silnych haseł
Wprowadźcie rygorystyczne wymagania dotyczące haseł:
- Minimum 12 znaków z wymaganiami dotyczącymi złożoności
- W przypadku kont zawierających poufne informacje hasło wygasa co 90 dni.
- Zapobieganie ponownemu użyciu hasła (ostatnie 10 haseł)
- Blokada po 5 nieudanych próbach logowania
- Wskaźnik siły hasła podczas tworzenia
Kontrola dostępu oparta na rolach (RBAC)
Wdrażaj zasadę minimalnych uprawnień, przypisując użytkownikom tylko te uprawnienia, których potrzebują:
- Określ jasne role: widz, redaktor, administrator, audytor
- Korzystaj z szczegółowych uprawnień dostępu do dokumentów.
- Regularnie sprawdzaj role użytkowników i usuwaj niepotrzebne uprawnienia dostępu.
- Wprowadź dostęp czasowy dla tymczasowych wykonawców.
- Rozdziel obowiązki związane z operacjami krytycznymi (np. procesy zatwierdzania).
Szyfrowanie danych
Szyfrowanie danych w spoczynku
Wszystkie dane wrażliwe muszą być szyfrowane podczas przechowywania:
- Używaj szyfrowania AES-256 do przechowywania dokumentów
- Szyfruj kopie zapasowe baz danych za pomocą oddzielnych kluczy
- Klucze szyfrujące przechowuj w dedykowanej usłudze zarządzania kluczami (KMS).
- Co kwartał zmieniaj klucze szyfrujące
- Włącz pełne szyfrowanie dysków na wszystkich serwerach i stacjach roboczych.
Szyfrowanie podczas przesyłania
Chroń dane podczas transmisji:
- Wymuszaj TLS 1.3 dla wszystkich połączeń
- Używaj silnych zestawów szyfrów (wyłącz słabe szyfry).
- Wprowadź przypisywanie certyfikatów dla aplikacji mobilnych.
- Włącz HSTS (HTTP Strict Transport Security)
- Korzystaj z szyfrowanych kanałów do transakcji blockchain.
Bezpieczeństwo łańcucha bloków
Zarządzanie kluczami prywatnymi
Prywatne klucze blockchain są najważniejszym elementem bezpieczeństwa:
- Nigdy nie przechowuj kluczy prywatnych w postaci zwykłego tekstu lub repozytoriach kodu
- Używaj modułów bezpieczeństwa sprzętowego (HSM) dla kluczy produkcyjnych.
- Wprowadźcie portfele z wieloma podpisami do operacji o wysokiej wartości.
- Stwórz procedury tworzenia kopii zapasowych kluczy z bezpiecznym przechowywaniem offline.
- Używaj oddzielnych kluczy dla różnych środowisk (dev, staging, prod).
Bezpieczeństwo inteligentnych kontraktów
W przypadku korzystania z niestandardowych inteligentnych kontraktów:
- Przed wdrożeniem przeprowadź dokładne audyty bezpieczeństwa.
- Korzystaj z ustalonych wzorców i unikaj eksperymentalnego kodu
- Wprowadź wyłączniki awaryjne do zatrzymywania awaryjnego
- Przeprowadźcie szeroko zakrojone testy w sieciach testowych przed wdrożeniem w sieci głównej.
- Monitoruj nietypowe wzorce transakcji
Ścieżki audytu łańcucha bloków
Wykorzystaj technologię blockchain do tworzenia niezmiennych dzienników audytowych:
- Rejestruj wszystkie zmiany stanu dokumentu w łańcuchu bloków.
- Operacje wrażliwe na hash do weryfikacji
- Wprowadźcie dowody czasu dla zapewnienia zgodności
- Regularnie weryfikuj integralność danych w łańcuchu bloków.
- Archiwizuj potwierdzenia transakcji blockchain
Bezpieczeństwo API
Uwierzytelnianie API
Zabezpiecz wszystkie punkty końcowe API:
- Do uwierzytelniania używaj tokenów OAuth 2.0 lub JWT.
- Wprowadź wygasanie tokenów (15–60 minut dla tokenów dostępu).
- Regularnie zmieniaj klucze API (co najmniej co 90 dni).
- Używaj oddzielnych kluczy API dla różnych usług
- Nigdy nie ujawniaj kluczy API w kodzie po stronie klienta.
Ograniczanie szybkości i ochrona przed atakami DDoS
Zapobiegaj nadużyciom i zakłóceniom w działaniu serwisu:
- Wprowadź ograniczenia szybkości dla każdego klucza API i adresu IP.
- W przypadku nieudanych żądań stosuj wykładnicze wycofywanie.
- Wdroż zaporę aplikacji internetowych (WAF)
- Włącz ochronę przed atakami DDoS na poziomie dostawcy CDN/chmury
- Monitorujcie nietypowe wzorce ruchu
Walidacja i oczyszczanie danych wejściowych
Chroń przed atakami typu injection:
- Sprawdź wszystkie dane wejściowe pod kątem zgodności z rygorystycznymi schematami
- Przed zapisaniem/wyświetleniem należy oczyścić treści dostarczone przez użytkowników.
- Używaj zapytań parametrycznych, aby zapobiec wstrzyknięciu kodu SQL.
- Wdrożyć nagłówki Content Security Policy (CSP)
- Używaj znaków escape we wszystkich kontekstach (HTML, JavaScript, adresy URL).
Bezpieczeństwo infrastruktury
Segmentacja sieci
Wyodrębnij kluczowe elementy:
- Oddziel środowiska produkcyjne, testowe i programistyczne
- W przypadku usług wymagających szczególnej ochrony używaj VPC i prywatnych podsieci.
- Ogranicz dostęp do bazy danych wyłącznie do serwerów aplikacji
- Wprowadź zasady zapory sieciowej z domyślnymi zasadami odrzucania.
- Używaj hostów przeskokowych/serwerów bastionowych do uzyskania dostępu administracyjnego.
Zarządzanie poprawkami
Aktualizuj systemy:
- Zastosuj poprawki bezpieczeństwa w ciągu 48 godzin od ich wydania.
- Zautomatyzuj aktualizacje zależności dla zmian, które nie powodują błędów.
- Regularnie aktualizuj obrazy kontenerów i podstawowy system operacyjny.
- Subskrybuj powiadomienia dotyczące bezpieczeństwa dla wszystkich używanych technologii.
- Przetestuj poprawki w środowisku testowym przed wdrożeniem produkcyjnym.
Bezpieczeństwo kontenerów i orkiestracji
W przypadku korzystania z wdrożeń kontenerowych:
- Używaj minimalnych obrazów bazowych (Alpine, Distroless).
- Przed wdrożeniem sprawdź obrazy pod kątem luk w zabezpieczeniach.
- Uruchamiaj kontenery jako użytkownicy niebędący rootami
- Wdrażajcie zasady/standardy bezpieczeństwa podów.
- Korzystaj z zarządzania sekretami (nie zmiennymi środowiskowymi).
- Włącz zasady sieciowe, aby ograniczyć ruch między podami
Zgodność i audyt
Zgodność z przepisami
Zapewnij zgodność z odpowiednimi przepisami:
- RODO: Wdrożyć prawo do usunięcia danych i przenoszenia danych.
- HIPAA: Włącz rejestrowanie audytowe i kontrolę dostępu do danych dotyczących opieki zdrowotnej
- SOC 2: Dokumentuj środki kontroli bezpieczeństwa i przeprowadzaj coroczne audyty
- ISO 27001: Wdrożenie systemu zarządzania bezpieczeństwem informacji
- Przepisy branżowe (np. dotyczące usług finansowych, prawnych)
Rejestrowanie audytowe
Prowadźcie kompleksowe dzienniki dotyczące bezpieczeństwa i zgodności z przepisami:
- Rejestruj wszystkie próby uwierzytelnienia (udane i nieudane).
- Rejestruj dostęp do dokumentów, modyfikacje i usunięcia
- Śledź działania administracyjne i zmiany konfiguracji.
- Przechowuj logi w zabezpieczonym przed manipulacją, scentralizowanym systemie.
- Przechowuj logi przez co najmniej 1 rok (lub zgodnie z wymogami regulacyjnymi).
- Wprowadź monitorowanie logów i powiadamianie o podejrzanych działaniach.
Regularne audyty bezpieczeństwa
Przeprowadzaj okresowe oceny bezpieczeństwa:
- Przeprowadzaj kwartalne skanowanie podatności
- Przeprowadzaj coroczne testy penetracyjne przez strony trzecie.
- Co miesiąc sprawdzaj kontrolę dostępu i uprawnienia użytkowników.
- Sprawdź transakcje w łańcuchu bloków pod kątem anomalii.
- Co kwartał testuj procedury tworzenia kopii zapasowych i odzyskiwania danych po awarii.
Monitorowanie i reagowanie na incydenty
Monitorowanie bezpieczeństwa
Wprowadź monitorowanie bezpieczeństwa w czasie rzeczywistym:
- Wdrożyć system SIEM (Security Information and Event Management)
- Skonfiguruj alerty dotyczące nieudanych prób logowania i eskalacji uprawnień.
- Monitoruj nietypowe wzorce dostępu do danych
- Śledźcie anomalie w użyciu API.
- Korzystaj z systemów wykrywania/zapobiegania włamaniom (IDS/IPS).
Plan reagowania na incydenty
Przygotuj się na incydenty związane z bezpieczeństwem:
- Opisz procedury reagowania na incydenty.
- Określ ścieżki eskalacji i dane kontaktowe
- Twórzcie instrukcje postępowania dla typowych scenariuszy związanych z bezpieczeństwem.
- Przeprowadzaj ćwiczenia symulacyjne co kwartał.
- Ustal protokoły komunikacyjne dotyczące naruszeń
- Zachowaj możliwości analizy kryminalistycznej
Kopia zapasowa i odzyskiwanie danych po awarii
Zapewnij ciągłość działalności:
- Wprowadź automatyczne codzienne kopie zapasowe.
- Przechowuj kopie zapasowe w rozproszonych geograficznie lokalizacjach
- Szyfruj wszystkie dane kopii zapasowej
- Co miesiąc testuj procedury przywracania danych.
- Twórz kopie zapasowe offline w celu ochrony przed oprogramowaniem ransomware.
- Czas przywrócenia dokumentacji (RTO) i punkt przywrócenia dokumentacji (RPO)
Bezpieczeństwo rozwoju
Bezpieczny cykl życia oprogramowania
Włącz bezpieczeństwo do procesu tworzenia oprogramowania:
- Przeprowadzajcie przeglądy kodu, koncentrując się na kwestiach bezpieczeństwa.
- Korzystaj z narzędzi do statycznego testowania bezpieczeństwa aplikacji (SAST).
- Wdrożyć skanowanie zależności w potoku CI/CD.
- Wymagaj szkolenia z zakresu bezpieczeństwa dla wszystkich programistów
- Nigdy nie przekazuj tajemnic do kontroli wersji.
- Używaj haków pre-commit, aby zapobiec wyciekom poufnych danych.
Zależności od stron trzecich
Zarządzaj ryzykiem związanym z bibliotekami zewnętrznymi:
- Regularnie aktualizuj zależności do najnowszych bezpiecznych wersji
- Korzystaj z narzędzi takich jak Dependabot, Snyk lub npm audit
- Przejrzyj informacje dotyczące bezpieczeństwa dla używanych pakietów.
- Zminimalizuj liczbę zależności
- Sprawdź integralność pakietu i reputację opiekuna
- Rozważcie dodanie krytycznych zależności do vendoringu.
Edukacja i świadomość użytkowników
Bezpieczeństwo jest obowiązkiem każdego z nas:
- Przeprowadź szkolenie z zakresu bezpieczeństwa dla wszystkich użytkowników
- Zapewnij szkolenia dotyczące phishingu i inżynierii społecznej.
- Stwórz jasne zasady i wytyczne dotyczące bezpieczeństwa
- Ustanów mechanizmy zgłaszania problemów związanych z bezpieczeństwem
- Nagradzaj odpowiedzialne ujawnianie luk w zabezpieczeniach
- Aktualizuj dokumentację dotyczącą bezpieczeństwa
Lista kontrolna bezpieczeństwa
Przed wdrożeniem do produkcji skorzystaj z poniższej listy kontrolnej:
- ✓ MFA włączone dla wszystkich kont użytkowników
- ✓ Obowiązują surowe zasady dotyczące haseł
- ✓ RBAC wdrożony z minimalnymi uprawnieniami
- ✓ Wszystkie dane są szyfrowane podczas przechowywania i przesyłania
- ✓ TLS 1.3 wymuszany we wszystkich punktach końcowych
- ✓ Klucze prywatne przechowywane w HSM lub bezpiecznym sejfie
- ✓ Skonfigurowane ograniczenie szybkości API
- ✓ Włączona ochrona WAF i DDoS
- ✓ Wdrożono sprawdzanie poprawności i oczyszczanie danych wejściowych
- ✓ Prawidłowo skonfigurowana segmentacja sieci
- ✓ Wszystkie systemy zaktualizowane i z zainstalowanymi poprawkami
- ✓ Włączone kompleksowe rejestrowanie audytowe
- ✓ Aktywne monitorowanie bezpieczeństwa i alerty
- ✓ Plan reagowania na incydenty udokumentowany i przetestowany
- ✓ Skonfigurowane i przetestowane automatyczne kopie zapasowe
- ✓ Skanowanie bezpieczeństwa w potoku CI/CD
- ✓ Wymogi dotyczące zgodności zostały udokumentowane i spełnione
Dodatkowe zasoby
Więcej informacji na temat bezpieczeństwa Chaindoc:
- 10 największych zagrożeń bezpieczeństwa aplikacji internetowych według OWASP
- Ramy bezpieczeństwa cybernetycznego NIST
- Wskaźniki bezpieczeństwa CIS
- Najlepsze praktyki w zakresie bezpieczeństwa łańcucha bloków (Consensys)
- Wytyczne Cloud Security Alliance
W przypadku problemów lub pytań dotyczących bezpieczeństwa skontaktuj się z naszym zespołem ds. bezpieczeństwa pod adresem security@chaindoc.com lub zgłoś luki w zabezpieczeniach za pośrednictwem naszego programu odpowiedzialnego ujawniania informacji.