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:

  1. ✓ MFA włączone dla wszystkich kont użytkowników
  2. ✓ Obowiązują surowe zasady dotyczące haseł
  3. ✓ RBAC wdrożony z minimalnymi uprawnieniami
  4. ✓ Wszystkie dane są szyfrowane podczas przechowywania i przesyłania
  5. ✓ TLS 1.3 wymuszany we wszystkich punktach końcowych
  6. ✓ Klucze prywatne przechowywane w HSM lub bezpiecznym sejfie
  7. ✓ Skonfigurowane ograniczenie szybkości API
  8. ✓ Włączona ochrona WAF i DDoS
  9. ✓ Wdrożono sprawdzanie poprawności i oczyszczanie danych wejściowych
  10. ✓ Prawidłowo skonfigurowana segmentacja sieci
  11. ✓ Wszystkie systemy zaktualizowane i z zainstalowanymi poprawkami
  12. ✓ Włączone kompleksowe rejestrowanie audytowe
  13. ✓ Aktywne monitorowanie bezpieczeństwa i alerty
  14. ✓ Plan reagowania na incydenty udokumentowany i przetestowany
  15. ✓ Skonfigurowane i przetestowane automatyczne kopie zapasowe
  16. ✓ Skanowanie bezpieczeństwa w potoku CI/CD
  17. ✓ 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.