Bazowa wersja, której nikt nie zaktualizował.
ISO 27001:2022 A.8.9 (zarządzanie konfiguracją) wymaga, aby konfiguracje bezpieczeństwa dla sprzętu, oprogramowania, usług i sieci były ustalone, udokumentowane, wdrożone, monitorowane i przeglądane, a to, co faktycznie działa, było zgodne z bazową wersją referencyjną. W praktyce bazowa wersja zwykle istnieje jako kod: wspólny manifest, moduł lub szablon, od którego każda usługa lub zasób powinna zaczynać. Kontrola słabnie, gdy wdrożona konfiguracja odbiega od tej bazowej bez autoryzacji, dokumentacji lub monitorowania, a nie wtedy, gdy wprowadza się celowe, zweryfikowane wyjątki.
The shapes the same control failure takes.
A.8.9 słabnie, gdy działająca konfiguracja i udokumentowana bazowa wersja referencyjna zaczynają się od siebie różnić. Typowe przypadki:
Domyślne ustawienie hartowania jest nadpisane w miejscu
Manifest usługi ustawia istotne dla bezpieczeństwa ustawienie wbrew wspólnej bazowej wersji, aby odblokować coś konkretnego, zamiast naprawić podstawową potrzebę lub zaktualizować bazową wersję.
Skopiowany szablon rozbiega się bezgłośnie
Nowa usługa zaczyna od wspólnego szablonu konfiguracji, jest dostosowywana ad hoc, a obie wersje zaczynają się od siebie różnić, bez śledzenia, że już nie są zgodne.
Wyjątek jest wdrażany bez terminu ważności
Jednorazowe nadpisanie (zrelaksowane ustawienie, pozostawiona flaga debugowania) miało być tymczasowe, ale nie ma daty przeglądu, więc po prostu pozostaje.
Działający zasób jest zmieniany ręcznie
Ktoś edytuje działający zasób bezpośrednio (kliknięcie w konsoli, ad hoc polecenie CLI) zamiast przez wersjonowaną konfigurację, która powinna być źródłem prawdy, więc obie wersje przestają być zgodne.
Nowy typ zasobu jest wdrażany bez bazowej wersji referencyjnej
Nowy rodzaj zasobu (kolejka, silnik bazy danych) jest wprowadzany bez zdefiniowanej bezpiecznej konfiguracji, więc każda instancja jest konfigurowana ad hoc.
Domyślne ustawienie hartowania nadpisane, aby odblokować wdrożenie.
Wspólny bazowy manifest Kubernetes organizacji uruchamia każdą usługę jako non-root z systemem plików tylko do odczytu, co jest udokumentowaną bazową wersją referencyjną. Nowy worker musi zapisać plik tymczasowy przy starcie, a uruchomienie go jako root to najszybszy sposób na odblokowanie wdrożenia, więc jego manifest nadpisuje bazową wersję bezpośrednio, zamiast zamontować wolumin do zapisu lub zaktualizować wspólną bazę. Usługa działa teraz z większymi uprawnieniami niż pozwala na to udokumentowana bazowa wersja, a sama bazowa wersja nie została zmieniona, więc nikt przeglądający ją nie zauważy rozbieżności.
containers: - name: worker- securityContext:- runAsNonRoot: true+ securityContext:+ runAsNonRoot: false # needs to write a temp file at startupTo wyłącza jedną usługę z wspólnej bazowej wersji hartowania (`runAsNonRoot: true`) bezpośrednio w jej własnym manifeście, zamiast przez zweryfikowaną bazową wersję. A.8.9 oczekuje, że wdrożona konfiguracja będzie zgodna z ustaloną i udokumentowaną wersją, a to odbiega od niej bez ingerencji w samą bazową wersję. Należy naprawić rzeczywistą ścieżkę zapisu (zamontować wolumin do zapisu dla pliku tymczasowego) lub udokumentować i zatwierdzić wyjątek ograniczony czasowo w ramach procesu zarządzania konfiguracją, zamiast wyłączać jedną usługę w miejscu.
Konfiguracja jest sprawdzana względem tego, co faktycznie działa, a nie tylko dokumentu.
Auditor sprawdza, czy działająca konfiguracja jest zgodna z udokumentowaną bezpieczną bazową wersją referencyjną, a nie tylko to, czy dokument bazowy istnieje. Usługa cicho wyłączona z domyślnego ustawienia hartowania, zasób edytowany ręcznie, który odbiega od śledzonej konfiguracji, lub nowy typ zasobu bez bazowej wersji referencyjnej to rodzaj niezgodności, która staje się ustaleniem audytu. Zazwyczaj wiąże się to z jedną zmianą, która posłużyła się lokalnym skrótem zamiast zaktualizować lub wprowadzić wyjątek do bazowej wersji.
Przegląd, a nie Twoja bazowa wersja konfiguracji.
heygrc sygnalizuje zmiany dotyczące A.8.9 i cytuje kontrolę, aby naprawa nastąpiła w pull request. Nie definiuje Twojej bazowej wersji ani nie zarządza infrastrukturą. Wychwytuje moment, w którym zmiana cicho odbiega od udokumentowanej konfiguracji, na poziomie diff.