Przejdź do głównej zawartości

8.31 Oddzielenie środowisk rozwoju, testowania i produkcji

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

Kontrola

Środowiska rozwoju, testowania i produkcji powinny być oddzielone i zabezpieczone.

Cel

Aby chronić środowisko produkcyjne i dane przed kompromitacją przez działania rozwoju i testów.

Wytyczne

Poziom separacji między środowiskami produkcyjnymi, testowymi i rozwojowymi, który jest konieczny do zapobieżenia problemom produkcyjnym, powinien zostać określony i wdrożony.

Należy rozważyć następujące punkty:

a) odpowiednie oddzielenie systemów rozwoju i produkcji oraz ich działanie w różnych domenach (np. w oddzielnych środowiskach wirtualnych lub fizycznych);
b) definiowanie, dokumentowanie i wdrażanie zasad i autoryzacji dotyczących wdrażania oprogramowania z rozwoju do statusu produkcyjnego;
c) testowanie zmian w systemach i aplikacjach produkcyjnych w środowisku testowym lub staging przed ich zastosowaniem w systemach produkcyjnych (patrz 8.29);
d) nie testowanie w środowiskach produkcyjnych, chyba że w przypadkach, które zostały zdefiniowane i zatwierdzone;
e) kompilatory, edytory i inne narzędzia rozwoju lub programy użytkowe nie powinny być dostępne z systemów produkcyjnych, jeśli nie są wymagane;
f) wyświetlanie odpowiednich etykiet identyfikacyjnych środowisk w menu w celu zredukowania ryzyka błędu;
g) nie kopiowanie wrażliwych informacji do systemów rozwoju i testowania, chyba że zapewnione są równoważne środki kontroli w tych systemach.

Wszystkie środowiska rozwoju i testowania powinny być chronione przy uwzględnieniu:

a) patchowania i aktualizacji wszystkich narzędzi rozwoju, integracji i testowania (w tym kompilatorów, systemów konfiguracji i bibliotek);
b) bezpiecznej konfiguracji systemów i oprogramowania;
c) kontroli dostępu do środowisk;
d) monitorowania zmian w środowisku i przechowywanego w nim kodu;
e) bezpiecznego monitorowania środowisk;
f) wykonywania kopii zapasowych środowisk.

Jedna osoba nie powinna mieć możliwości wprowadzania zmian zarówno w środowisku rozwoju, jak i produkcji bez wcześniejszego przeglądu i zatwierdzenia. Może to być osiągnięte np. poprzez segregację praw dostępu lub zasady monitorowane. W wyjątkowych sytuacjach należy wdrożyć dodatkowe środki, takie jak szczegółowe logowanie i monitorowanie w czasie rzeczywistym, aby wykrywać i reagować na nieautoryzowane zmiany.

Inne informacje

Bez odpowiednich środków i procedur, deweloperzy i testerzy mający dostęp do systemów produkcyjnych mogą wprowadzić poważne ryzyko (np. niechciane modyfikacje plików lub środowiska systemu, awarie systemu, uruchamianie nieautoryzowanego i nietestowanego kodu w systemach produkcyjnych, ujawnienie poufnych danych, problemy z integralnością danych i dostępnością). Konieczne jest utrzymanie stabilnego środowiska, w którym przeprowadzane będą istotne testy, oraz zapobieganie niewłaściwemu dostępowi deweloperów do środowiska produkcyjnego.

Środki i procedury obejmują starannie zaprojektowane role w połączeniu z wymogami segregacji obowiązków oraz odpowiednimi procesami monitorowania.

Deweloperzy i testerzy stanowią również zagrożenie dla poufności informacji produkcyjnych. Działania rozwoju i testowania mogą powodować niezamierzone zmiany w oprogramowaniu lub informacjach, jeśli dzielą to samo środowisko obliczeniowe. Oddzielenie środowisk rozwoju, testowania i produkcji jest zatem pożądane w celu zmniejszenia ryzyka przypadkowych zmian lub nieautoryzowanego dostępu do oprogramowania produkcyjnego i danych biznesowych (patrz 8.33 dotyczące ochrony informacji testowych).

W niektórych przypadkach granice między środowiskami rozwoju, testowania i produkcji mogą zostać celowo zatarte, a testowanie może odbywać się w środowisku rozwoju lub poprzez kontrolowane wprowadzenie do żywych użytkowników lub serwerów (np. mała grupa użytkowników pilotażowych). Ponadto, aby zmniejszyć czas przestoju wdrożeń na żywo, można wspierać dwa identyczne środowiska produkcyjne, z których tylko jedno jest aktywne w danym momencie.

Wspierające procesy dotyczące używania danych produkcyjnych w środowiskach rozwoju i testowania (8.33) są niezbędne.

Organizacje mogą również rozważyć wskazówki zawarte w tej sekcji dla środowisk szkoleniowych, kiedy prowadzą szkolenia użytkowników końcowych.