Odcinek 23: Akash Mukherjee, Mountain View, Kalifornia (lipiec 2021 r.)
Poprzednie odcinki
Gdy opracowujemy Chrome, wiele elementów ma wpływ na środowisko, które wpływa na działanie artefaktu. Z poziomu systemu operacyjnego, zainstalowane biblioteki pomocnicze, zależności innych firm zainstalowane narzędzia i środowisko wykonawcze; każdy ma inny poziom bezpieczeństwa.
W przeszłości Google używał autoryzacji plików binarnych, kontrolę wewnętrznego środowiska wykonawczego, która minimalizuje ryzyko związane z działaniami osób wtajemniczonych; przez wdrożenie w Google oprogramowania produkcyjnego i konfiguracji jest prawidłowo sprawdzony i ma możliwe do ustalenia pochodzenie.
Zapewniając, że nikt nie może naruszyć zabezpieczeń Twojej konstrukcji a łańcuch dostaw artefaktów bazujących na LUCI, których nie wykrywamy, Google zmniejsza ryzyko związane z oprogramowaniem, które wysyłamy użytkownikom.
Od zeszłego roku dla każdej kompilacji system tworzy kompilację możliwą do zweryfikowania plik manifestu – podpisany JWT; wyczerpujący opis źródeł, które zostały użyte w budowie kryptograficzne hasze wygenerowanych plików binarnych i artefaktów oraz pełne parametry kompilacji. Ten plik manifestu kompilacji pozwala nam śledzić artefakty do źródeł, co umożliwia weryfikację procesu kompilacji i jego danych wyjściowych.
Oprócz tego plik manifestu pozwala nam też sprawdzić, czy artefakt kompilacji nie został zmodyfikowany. ponieważ wszelkie zmiany spowodowałyby unieważnienie podpisu. Łącznie To daje nam łańcuch opieki nad artefaktami, które poruszają się między zaufanymi systemami.
Usługa Binary Authorization została wdrożona jako system dwuetapowy. System generuje provenance z informacjami o czasie kompilacji; egzekwowanie zasad ma miejsce przed podpisaniem lub zainstalowaniem oprogramowania.
def CreateProvenance(self, build_manifest: Mapping[str, Any]):
"""Builder generates and signs provenance given build manifest. Signed JWT is placed
alongside built artifact."""
W przypadku Chrome przed podpisaniem tych artefaktów za pomocą infrastruktury podpisywania Google zasada jest egzekwowana w celu spełnienia określonych minimalnych wymagań dotyczących bezpieczeństwa kompilacji.
def VerifyProvenance(self, artifact_hash: str, provenance: str):
"""Provenance is verified using a policy engine service before signing an artifact."""
Wymagania są podzielone na około 4 obszary:
- Kontrola źródła: chroni dane, które trafiają do kompilacji.
- Kompilacja: chroni proces, który konwertuje źródło na plik binarny.
- Pochodzenie: atest, który zawiera możliwy do zweryfikowania plik manifestu kompilacji.
- Zasada: reguły, które określają, czy dany artefakt kwalifikuje się w danym kontekście.
Wdrożenie kontroli egzekwowania zasad w ramach procesów CI i CD w Chrome i infrastrukturze pozwoliło nam sprawdzić, czy kod i konfiguracja spełniają określone minimalne standardy bezpieczeństwa. To kluczowy element sterujący, który pozwala ograniczyć możliwość potencjalnie nieupoważnionego dostępu lub przejętego konta. modyfikowanie oprogramowania, które udostępniamy użytkownikom.