Skip to main content

8.29 Testowanie bezpieczeństwa w cyklu rozwoju

Treść sekcji 8.29 Testowanie bezpieczeństwa w cyklu rozwoju.# 8.29 Testowanie bezpieczeństwa w rozwoju i akceptacji

Rodzaj kontroli: Informacja
Właściwości bezpieczeństwa: Prewencyjne, Poufność, Integralność, Dostępność
Koncepcje cyberbezpieczeństwa: Ochrona, Bezpieczeństwo aplikacji, Zapewnienie bezpieczeństwa informacji, Bezpieczeństwo systemów i sieci
Obszary operacyjne: Ochrona

Kontrola

Procesy testowania bezpieczeństwa powinny być zdefiniowane i wdrożone w cyklu życia rozwoju.

Cel

Weryfikacja, czy wymagania bezpieczeństwa informacji zostały spełnione, kiedy aplikacje lub kod są wdrażane do środowiska produkcyjnego.

Wytyczne

Nowe systemy informacyjne, aktualizacje i nowe wersje powinny być dokładnie testowane i weryfikowane podczas procesów rozwoju. Testowanie bezpieczeństwa powinno być integralną częścią testów systemów lub komponentów.

Testowanie bezpieczeństwa powinno być przeprowadzone w oparciu o zestaw wymagań, które mogą być wyrażone jako funkcjonalne lub niefunkcjonalne. Testowanie bezpieczeństwa powinno obejmować testowanie: a) funkcji bezpieczeństwa (np. uwierzytelnianie użytkowników (patrz 8.5), ograniczenia dostępu (patrz 8.3) oraz użycie kryptografii (patrz 8.24));
b) bezpiecznego kodowania (patrz 8.28);
c) bezpiecznych konfiguracji (patrz 8.9, 8.20 i 8.22), w tym systemów operacyjnych, zapór ogniowych i innych komponentów bezpieczeństwa.

Plany testów powinny być ustalane na podstawie zestawu kryteriów. Zakres testowania powinien być proporcjonalny do ważności, charakteru systemu i potencjalnego wpływu zmiany wprowadzanej. Plan testów powinien zawierać:
a) szczegółowy harmonogram działań i testów;
b) dane wejściowe i oczekiwane wyniki w różnych warunkach;
c) kryteria oceny wyników;
d) decyzję o dalszych działaniach, jeśli to konieczne.

Organizacja może skorzystać z narzędzi automatycznych, takich jak narzędzia do analizy kodu lub skanery podatności, i powinna zweryfikować usunięcie defektów związanych z bezpieczeństwem.

W przypadku rozwoju wewnętrznego, testy te powinny być początkowo przeprowadzone przez zespół deweloperski. Następnie powinno być przeprowadzone niezależne testowanie akceptacyjne, aby upewnić się, że system działa zgodnie z oczekiwaniami i tylko zgodnie z oczekiwaniami (patrz 5.8). Należy rozważyć: a) przeprowadzenie przeglądów kodu jako element testowania pod kątem wad bezpieczeństwa, w tym nieoczekiwanych danych wejściowych i warunków;
b) przeprowadzenie skanowania podatności w celu identyfikacji niebezpiecznych konfiguracji i podatności systemu;
c) przeprowadzenie testów penetracyjnych w celu identyfikacji niebezpiecznego kodu i projektów.

W przypadku zleconego rozwoju i zakupu komponentów, należy postępować zgodnie z procesem zakupu. Umowy z dostawcą powinny uwzględniać zidentyfikowane wymagania bezpieczeństwa (patrz 5.20). Produkty i usługi powinny być oceniane na podstawie tych kryteriów przed zakupem.

Testowanie powinno być przeprowadzane w środowisku testowym, które jak najdokładniej odwzorowuje docelowe środowisko produkcyjne, aby upewnić się, że system nie wprowadza podatności do środowiska organizacji i że testy są wiarygodne (patrz 8.31).

Inne informacje

Można utworzyć wiele środowisk testowych, które mogą być wykorzystywane do różnych rodzajów testów (np. testy funkcjonalne i wydajnościowe). Te różne środowiska mogą być wirtualne, z indywidualnymi konfiguracjami symulującymi różnorodne środowiska operacyjne.

Testowanie i monitorowanie środowisk testowych, narzędzi i technologii również należy wziąć pod uwagę, aby zapewnić skuteczne testowanie. Te same zasady stosują się do monitorowania systemów monitorujących w środowiskach rozwoju, testów i produkcji. W zależności od wrażliwości systemów i danych należy ocenić, jak wiele warstw meta-testowania będzie przydatnych.