Bezpieczeństwo CI/CD

Proces budowania i wdrażania ma dostęp do wszystkiego. Zabezpieczamy go tak, żeby przestał być najkrótszą drogą do Waszej produkcji.

Adresujemy wymagania techniczne
DORANIS2UKSCSOC 2
Co zabezpieczamy w pipeline
  1. Uprawnieniakto wdraża, kto zatwierdza
  2. Sekretydostęp na czas jednego uruchomienia
  3. Zależnościakcje przypięte do SHA
  4. Środowiskoizolowane runnery
  5. Produkcjawymagana akceptacja wdrożenia
  6. Śladkto, kiedy, na podstawie jakiej zmiany

Każde wdrożenie przechodzi te same kontrole — bez wyjątków „na szybko”.

Jak to wygląda dzisiaj

Tak wygląda punkt wyjścia w wielu firmach, które dowożą szybko i podlegają regulacjom.

Pipeline zna klucze do chmury, do repozytoriów i do serwerów produkcyjnych. Zwykle powstawał latami, dorzucany po kawałku, i nikt nie wie już, kto ma do niego dostęp ani co dokładnie robi. Przejęcie go daje więcej niż włamanie do pojedynczej aplikacji.

  1. Repozytorium
  2. Pipeline
  3. Stałe klucze
  4. Chmura
  5. Produkcja

Co robimy

Zakres ustalamy po diagnozie — zaczynamy od elementu, który najszybciej obniży Wasze ryzyko.

Porządkujemy to, co ma klucze do wszystkiego.

Najpierw ustalamy, kto może uruchomić wdrożenie, kto zatwierdza zmianę i co przechodzi bez akceptacji — zwykle okazuje się, że więcej osób i procesów niż ktokolwiek zakładał. Klucze wpisane na stałe w konfigurację zastępujemy dostępem przyznawanym na czas jednego uruchomienia, więc wyciek pliku przestaje oznaczać wyciek produkcji. Środowisko budowania izolujemy i kontrolujemy, co do niego wchodzi z zewnątrz. Włączamy rejestrowanie tak, żeby po każdym wdrożeniu został ślad: kto, kiedy i na podstawie jakiej zmiany.

Cztery etapy

Po każdym etapie zostaje u Was konkretny rezultat, a nie notatka ze spotkania.

  1. 01

    Porządkujemy uprawnienia

    Kto może uruchomić wdrożenie, kto zatwierdzić zmianę, co dzieje się bez akceptacji.

    RezultatMapa uprawnień: kto może wdrożyć, kto zatwierdza, co przechodzi bez akceptacji

  2. 02

    Usuwamy statyczne sekrety

    Klucze na stałe wpisane w konfigurację zastępujemy dostępem przyznawanym na czas jednego uruchomienia.

    RezultatPipeline bez stałych kluczy — dostęp ważny tylko na czas uruchomienia

  3. 03

    Zabezpieczamy środowisko budowania

    Izolacja, kontrola zależności zewnętrznych i weryfikacja tego, co wchodzi do procesu.

    RezultatIzolowane środowisko budowania z kontrolą tego, co do niego wchodzi

  4. 04

    Włączamy rejestrowanie

    Ślad po każdym wdrożeniu — kto, kiedy, na podstawie jakiej zmiany.

    RezultatŚlad po każdym wdrożeniu, gotowy do pokazania audytorowi

Co dostajecie w praktyce

Wdrożenie kończy się działającą konfiguracją i dowodami, a nie raportem z listą zaleceń. Tak to wygląda na przykładzie.

Wdrożenie bez stałych kluczydeploy.yml · fragment
permissions:
  id-token: write      # krótkotrwały token OIDC
  contents: read
jobs:
  deploy:
    environment: produkcja   # wymaga akceptacji
    runs-on: ubuntu-latest
    steps:
      - uses: aws-actions/configure-aws-credentials@<SHA>
        with:
          role-to-assume: arn:aws:iam::123456789012:role/deploy
          aws-region: eu-central-1

Wyciek pliku konfiguracyjnego nie daje już nikomu dostępu do chmury.

Mapa uprawnieńfragment
KtoMożeWymaga
Developerotworzyć zmianęrecenzji
Maintainerscalić do main2 akceptacji
Pipelinewdrożyć na produkcjęakceptacji w środowisku
Bot zależnościotworzyć zmianęrecenzji, bez scalania

Wiadomo, kto co może — także konta techniczne, o których zwykle nikt nie pamięta.

Ślad wdrożeniawpis
Wdrożenie
api 2.14.0 → produkcja
Zmiana
PR #482, recenzja 2 osób
Zatwierdził
osoba z roli release
Dostęp
token ważny na czas uruchomienia
Status
zapisany

Na pytanie „kto to wdrożył” odpowiedź jest w logu, nie w pamięci zespołu.

Ilustracja. Zakres i narzędzia dobieramy po diagnozie.

Co zostaje u Was

Przejęcie jednego konta przestaje oznaczać dostęp do produkcji

Wiadomo, kto i kiedy wdrożył konkretną zmianę

Audytor dostaje ślad zamiast zapewnień

Najczęstsze pytania

Ile to trwa?+

Zakres ustalamy po rozmowie i diagnozie. Mniejsze wdrożenia zamykają się w kilku tygodniach, większe dzielimy na etapy, żeby efekt był widoczny po pierwszym.

Czy musimy dać Wam dostęp do kodu?+

Zwykle nie do całego. W większości przypadków wystarczy dostęp do konfiguracji procesu budowania i ustawień organizacji. Zakres ustalamy pisemnie przed startem.

Czy nasz zespół musi się zaangażować?+

Tak, ale nie na pełen etat. Potrzebujemy kontaktu z osobą, która zna system, i przeglądu naszych zmian. Reszta jest po naszej stronie.

Co jeśli mamy już narzędzia?+

Wpinamy się w to, co u Was działa. Wymiana narzędzia to najdroższy i najrzadziej potrzebny sposób poprawy bezpieczeństwa.

Czy uzależniamy się od Was?+

Nie. Pracujemy na standardach i narzędziach, które Wasz zespół zna albo szybko pozna — nie na autorskiej metodyce, którą rozumiemy wyłącznie my. Wszystko jest udokumentowane i przekazane.

Czy to nie spowolni wydawania?+

Tak wpinamy kontrole, żeby działały w tle. Jeśli któraś zaczyna blokować pracę, dostrajamy ją albo zmieniamy jej miejsce w procesie.

Sprawdźmy, gdzie ryzyko
powstaje w Waszym procesie

Odpowiadamy w 24h w dni robocze