GCP - Compute Instances

Support HackTricks

Podstawowe Informacje

Google Cloud Compute Instances to dostosowywalne maszyny wirtualne na infrastrukturze chmurowej Google, oferujące skalowalną i na żądanie moc obliczeniową dla szerokiego zakresu aplikacji. Oferują funkcje takie jak globalne wdrażanie, trwałe przechowywanie, elastyczne wybory systemu operacyjnego oraz silne integracje sieciowe i bezpieczeństwa, co czyni je wszechstronnym wyborem do hostowania stron internetowych, przetwarzania danych i efektywnego uruchamiania aplikacji w chmurze.

Confidential VM

Confidential VMs używają funkcji bezpieczeństwa opartych na sprzęcie oferowanych przez najnowszą generację procesorów AMD EPYC, które obejmują szyfrowanie pamięci i bezpieczną wirtualizację szyfrowaną. Te funkcje umożliwiają VM ochronę przetwarzanych i przechowywanych danych przed nawet systemem operacyjnym hosta i hypervisorem.

Aby uruchomić Confidential VM, może być konieczne zmienienie takich rzeczy jak typ maszyny, interfejs sieciowy, obraz dysku startowego.

Dysk i Szyfrowanie Dysku

Możliwe jest wybranie dysku do użycia lub utworzenie nowego. Jeśli wybierzesz nowy, możesz:

  • Wybrać rozmiar dysku

  • Wybrać system operacyjny

  • Wskazać, czy chcesz usunąć dysk, gdy instancja zostanie usunięta

  • Szyfrowanie: Domyślnie używany będzie klucz zarządzany przez Google, ale możesz również wybrać klucz z KMS lub wskazać surowy klucz do użycia.

Wdrażanie Kontenera

Możliwe jest wdrożenie kontenera wewnątrz maszyny wirtualnej. Możliwe jest skonfigurowanie obrazu do użycia, ustawienie polecenia do uruchomienia wewnątrz, argumentów, zamontowanie woluminu i zmiennych środowiskowych (wrażliwe informacje?) oraz skonfigurowanie kilku opcji dla tego kontenera, takich jak uruchomienie jako uprzywilejowany, stdin i pseudo TTY.

Konto Usługi

Domyślnie używane będzie domyślne konto usługi Compute Engine. Email tego SA wygląda tak: <proj-num>-compute@developer.gserviceaccount.com To konto usługi ma rolę Edytora nad całym projektem (wysokie uprawnienia).

A domyślne zakresy dostępu są następujące:

  • https://www.googleapis.com/auth/devstorage.read_only -- Dostęp do odczytu do bucketów :)

  • https://www.googleapis.com/auth/logging.write

  • https://www.googleapis.com/auth/monitoring.write

  • https://www.googleapis.com/auth/servicecontrol

  • https://www.googleapis.com/auth/service.management.readonly

  • https://www.googleapis.com/auth/trace.append

Jednakże, możliwe jest przyznanie cloud-platform jednym kliknięciem lub określenie własnych.

Zapora Sieciowa

Możliwe jest zezwolenie na ruch HTTP i HTTPS.

Sieć

  • Przekazywanie IP: Możliwe jest włączenie przekazywania IP od momentu tworzenia instancji.

  • Nazwa hosta: Możliwe jest nadanie instancji stałej nazwy hosta.

  • Interfejs: Możliwe jest dodanie interfejsu sieciowego.

Dodatkowe Zabezpieczenia

Te opcje zwiększą bezpieczeństwo VM i są zalecane:

  • Bezpieczny rozruch: Bezpieczny rozruch pomaga chronić instancje VM przed złośliwym oprogramowaniem na poziomie rozruchu i jądra oraz rootkitami.

  • Włącz vTPM: Wirtualny Zaufany Moduł Platformy (vTPM) weryfikuje integralność przedrozruchową i rozruchową twojej gościnnej VM oraz oferuje generowanie i ochronę kluczy.

  • Nadzór integralności: Monitorowanie integralności pozwala monitorować i weryfikować integralność rozruchową twoich osłoniętych instancji VM za pomocą raportów Stackdriver. Wymaga włączenia vTPM.

Dostęp do VM

Powszechnym sposobem umożliwienia dostępu do VM jest zezwolenie na dostęp określonym kluczom publicznym SSH. Jednakże, możliwe jest również włączenie dostępu do VM za pomocą usługi os-config przy użyciu IAM. Ponadto, możliwe jest włączenie 2FA do dostępu do VM za pomocą tej usługi. Gdy ta usługa jest włączona, dostęp za pomocą kluczy SSH jest wyłączony.

Metadane

Możliwe jest zdefiniowanie automatyzacji (userdata w AWS), które są poleceniami powłoki wykonywanymi za każdym razem, gdy maszyna się włącza lub restartuje.

Możliwe jest również dodanie dodatkowych wartości klucz-wartość metadanych, które będą dostępne z punktu końcowego metadanych. Te informacje są powszechnie używane do zmiennych środowiskowych i skryptów startowych/zamykających. Można je uzyskać za pomocą metody describe z polecenia w sekcji enumeracji, ale można je również pobrać z wnętrza instancji, uzyskując dostęp do punktu końcowego metadanych.

# view project metadata
curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"

# view instance metadata
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"

Moreover, auth token for the attached service account i ogólne informacje o instancji, sieci i projekcie będą również dostępne z endpointu metadata. Więcej informacji znajdziesz tutaj:

Szyfrowanie

Domyślnie używany jest klucz szyfrowania zarządzany przez Google, ale można skonfigurować klucz szyfrowania zarządzany przez klienta (CMEK). Możesz również skonfigurować, co zrobić, gdy używany CMEK zostanie odwołany: Nic lub wyłączyć VM.

Wspieraj HackTricks

Last updated