1. Wprowadzenie
Ustawienia usługi VPC (VPC-SC) to mechanizm kontroli bezpieczeństwa na poziomie organizacji w Google Cloud, który umożliwia klientom korporacyjnym ograniczenie ryzyka związanego z wydobyciem danych. Ustawienia usługi VPC zapewniają dostęp typu „zero zaufania” do usług wielu najemców, umożliwiając klientom ograniczenie dostępu do autoryzowanych adresów IP, kontekstu klienta i parametrów urządzenia przy jednoczesnym łączeniu się z usługami wielu najemców z internetu i innych usług, co pozwala ograniczyć zarówno celowe, jak i niezamierzone straty. Jak widzieliśmy w podstawowym samouczku usługi VPC I, za pomocą Ustawień usługi VPC możesz utworzyć granice, które będą chronić zasoby i dane usług, które określisz.
Cele tego samouczka to:
- Podstawowe informacje o Ustawieniach usługi VPC
- Aktualizowanie granicy usług i testowanie jej za pomocą trybu próbnego
- Ochrona 2 usług za pomocą Ustawień usługi VPC
- Rozwiązywanie problemów związanych z naruszeniem zasad ruchu wychodzącego w Ustawieniach usługi VPC przy wyświetlaniu obiektu z Cloud Storage
2. Konfiguracja i wymagania
Aby korzystać z tego samouczka, musisz spełnić te wymagania wstępne:
- Organizacja GCP.
- Folder w organizacji.
- 2 projekty GCP w tej samej organizacji umieszczone w danym folderze.
- Wymagane uprawnienia na poziomie organizacji.
- Konto rozliczeniowe obu projektów.
- Podstawowy samouczek dotyczący Ustawień usługi VPC IUstawienia usługi VPC i konfiguracja Menedżera kontekstu dostępu.
Konfigurowanie zasobów
- Skonfiguruj zasoby zgodnie z opisem na stronie „Resources-setup” (Konfiguracja zasobów) podstawowego samouczka I ustawień usługi VPC.
- Sprawdź, czy masz uprawnienia wymagane do administrowania Cloud Storage.
- W tym samouczku zaczniemy używać interfejsu wiersza poleceń zamiast Cloud Console. W jednym ze środowisk programistycznych skonfiguruj interfejs wiersza poleceń gcloud:
- Cloud Shell: aby użyć terminala online ze skonfigurowanym już interfejsem wiersza poleceń gcloud, aktywuj Cloud Shell.
Aktywuj Cloud Shell, klikając ikonę w prawym górnym rogu konsoli Cloud. Inicjowanie sesji może potrwać kilka sekund. Więcej informacji znajdziesz w przewodniku po Cloud Shell.
- Powłoka lokalna: aby użyć lokalnego środowiska programistycznego, zainstaluj i zainicjuj interfejs wiersza poleceń gcloud.
Koszt
Aby korzystać z zasobów i interfejsów API Cloud, musisz włączyć płatności w Cloud Console. Ukończenie tego ćwiczenia z programowania nic nie kosztuje. Aby wyłączyć zasoby w celu uniknięcia naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego w wysokości 300 USD.
Jedyne zasoby, które będą generować koszty, to instancja maszyny wirtualnej i obiekt Cloud Storage. Szacowany koszt instancji maszyny wirtualnej znajdziesz w kalkulatorze cen. Szacowany koszt Cloud Storage znajdziesz na tej liście cen.
3. Tworzenie zasobnika i obiektu na dane
Jak już wspomnieliśmy, wykorzystamy zasoby utworzone w poprzednim samouczku. Przejdziemy więc do tworzenia zasobnika Cloud Storage. W tym samouczku zamiast konsoli zaczniemy używać interfejsu wiersza poleceń gcloud.
- W konsoli Google wybierz ProjectX. W tym projekcie utworzymy zasobnik na dane i obiekt.
- Upewnij się, że w Cloud Shell skonfigurowano użycie ProjectX, uruchamiając to polecenie:
gcloud config set project PROJECT_ID
- W środowisku programistycznym uruchom to polecenie:
gcloud storage buckets create gs://BUCKET_NAME --location=us-central1
- Utwórz obiekt pamięci masowej, abyśmy mogli go odczytać z instancji maszyny wirtualnej w ProjekcieZ. Utworzymy plik .txt.
nano hello.txt
Dodaj do pliku tekstowego, co chcesz.
- Prześlij obiekt do zasobnika.
gcloud storage cp /home/${USER}/hello.txt gs://BUCKET_NAME
- Sprawdź, czy obiekt został przesłany do zasobnika, wpisując go.
gcloud storage ls gs://BUCKET_NAME
Plik hello.txt musi być widoczny w konsoli.
4. Protect Cloud Storage API
W poprzednim ćwiczeniu w Codelabs utworzyliśmy granicę i chroniony interfejs Compute Engine API. W ramach tego ćwiczenia w programie zmodyfikujemy granicę trybu uruchomienia próbnego i dodamy Cloud Storage. Pomoże nam to określić wpływ ochrony granicy dzięki wyświetlaniu w logach kontrolnych naruszeń Ustawień usługi VPC, ale zasoby pozostaną dostępne do czasu wyegzekwowania granicy.
- W konsoli Google wybierz swoją organizację. Otwórz Ustawienia usługi VPC. Sprawdź, czy jesteś w zakresie organizacji.
- Otwórz Cloud Shell i zaktualizuj granicę uruchomienia próbnego „SuperProtection” utworzone w poprzednim module:
gcloud access-context-manager perimeters dry-run update SuperProtection --policy=POLICY --add-restricted-services=storage.googleapis.com
- Sprawdź, czy interfejs Cloud Storage API został zaktualizowany, opisując granicę
gcloud access-context-manager perimeters dry-run describe SuperProtection --policy=POLICY
W danych wyjściowych zobaczysz, że Cloud Storage API jest wymieniony poniżej usług z ograniczeniami.
wraz z Compute Engine API, ale z etykietą „-vpcAccessibleServices: {}"
:
5. Sprawdzanie, czy interfejs Cloud Storage API został zabezpieczony
W trybie uruchomienia próbnego sprawdź, czy zabezpieczenie „SuperProtection” granica pokazuje nam odmowę, zamieszczając listę obiektu z instancji maszyny wirtualnej utworzonej w Projekcie Z do ProjektuX, w którym hostowany jest zasobnik na dane.
- W konsoli Google Cloud otwórz selektor projektów i wybierz ProjektZ, a następnie przejdź do Compute Engine > Maszyny wirtualne.
- Kliknij przycisk SSH, aby połączyć się z instancją maszyny wirtualnej i uzyskać dostęp do jej wiersza poleceń.
- Wymień plik hello.txt, który przesłaliśmy wcześniej.
gcloud storage ls gs://BUCKET_NAME
Interfejs Cloud Storage API jest zabezpieczony w trybie próbnym, więc możesz wyświetlić listę zasobów, ale w logach kontrolnych ProjectZ musi znajdować się komunikat o błędzie.
- Otwórz Logs Explorer API w Project Z i znajdź ostatni komunikat o błędzie w Ustawieniach usługi VPC. Aby uzyskać dziennik, którego szukasz:
protoPayload.status.details.violations.type="VPC_SERVICE_CONTROLS" "(Dry Run Mode) Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier:UNIQUE_ID"
Ten filtr pokaże ostatnie naruszenie w trybie próbnym, które należy do Cloud Storage. Oto przykład, jak wygląda dziennik. Możemy też sprawdzić, czy naruszenie jest związane z ruchem wychodzącym podczas próby wyświetlenia treści w zasobniku znajdującym się w ProjectX.
egressViolations: [ 0: { servicePerimeter: "accessPolicies/POLICY/servicePerimeters/SuperProtection" source: "projects/PROJECTX_ID" sourceType: "Network" targetResource: "projects/PROJECTZ_ID" } ] resourceNames: [ 0: "projects//buckets/BUCKET_NAME" ] securityPolicyInfo: { organizationId: "ORGANIZATION_ID" servicePerimeterName: "accessPolicies/POLICY/servicePerimeters/SuperProtection" } violationReason: "NETWORK_NOT_IN_SAME_SERVICE_PERIMETER" vpcServiceControlsUniqueId: "UNIQUE_ID" } methodName: "google.storage.objects.list"
- Ponieważ ustaliliśmy, że wywołanie interfejsu API do Cloud Storage powoduje naruszenie Ustawień usługi VPC, wyegzekwujemy granicę zgodnie z nową konfiguracją. Otwórz Cloud Shell i wymuś granicę uruchomienia próbnego:
gcloud access-context-manager perimeters dry-run enforce SuperProtection --policy=POLICY --async
- Połącz się z instancją maszyny wirtualnej przez SSH i ponownie wyświetl zasobnik na dane, aby sprawdzić, czy granica uruchomienia próbnego została prawidłowo wyegzekwowana.
gcloud storage ls gs://BUCKET_NAME
W interfejsie wiersza poleceń maszyny wirtualnej zamiast listy obiektów Cloud Storage pojawi się naruszenie Ustawień usługi VPC:
ERROR: (gcloud.storage.ls) User [PROJECT_NUMBER-compute@developer.gserviceaccount.com] does not have permission to access b instance [BUCKET_NAME] (or it may not exist): Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier:"UNIQUE_ID"
Udało nam się zapobiec wydobyciu danych dzięki użyciu Ustawień usługi VPC, które uniemożliwiają odczyt danych z zasobów spoza granic usługi lub ich kopiowanie do takich zasobów.
6. Rozwiązywanie problemów z odrzuceniem listy.
Rozwiążemy problem z odmową otrzymanego z interfejsu wiersza poleceń instancji maszyny wirtualnej. Sprawdźmy logi kontrolne i znajdźmy unikalny identyfikator Ustawień usługi VPC.
- Otwórz selektor projektów i wybierz ProjektZ.
- Znajdź w logach kontrolnych unikalny identyfikator Ustawień usługi VPC, za pomocą tego zapytania w eksploratorze logów:
resource.type="audited_resource" protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
Spowoduje to wyświetlenie wszystkich logów kontrolnych Ustawień usługi VPC. Będziemy szukać ostatniego dziennika błędów. Jako że wywołanie interfejsu API pochodzi z maszyny wirtualnej, podmiotem zabezpieczeń musi być konto usługi Compute Engine „PROJECT_NUMBER-compute@developer.gserviceaccount.com"
”
Mamy już unikalny identyfikator Ustawień usługi VPC, więc możemy go użyć, aby bezpośrednio pobrać żądany log, używając tego filtra:
protoPayload.metadata.vpcServiceControlsUniqueId="UNIQUE_ID"
- Kliknij nagłówek Ustawienia usługi VPC i wybierz „Rozwiązywanie problemów z odmową”. Otworzy się narzędzie do rozwiązywania problemów z Ustawieniami usługi VPC.
Ten interfejs API pokaże w przyjazny dla użytkownika sposób przyczynę naruszenia i pokaże, czy było to naruszenie dotyczące ruchu przychodzącego lub wychodzącego, m.in. do innych przydatnych informacji.
W tym ćwiczeniu skupimy się na:
authenticationInfo: { principalEmail: "PROJECT_ID-compute@developer.gserviceaccount.com" egressViolations: [ 0: { servicePerimeter: "accessPolicies/POLICY/servicePerimeters/SuperProtection" source: "projects/PROJECTZ_ID" sourceType: "Network" targetResource: "projects/PROJECTX_ID" } violationReason: "NETWORK_NOT_IN_SAME_SERVICE_PERIMETER"
Te informacje wystarczą nam, że trzeba utworzyć regułę ruchu wychodzącego, aby umożliwić kontu usługi Compute Engine dostęp do zasobnika na dane z projektu Z do ProjectX. Widzimy też, że sieć nie znajduje się w obrębie tej samej granicy, więc musimy zezwolić na komunikację VPC z usługami i udostępniać dane między ich granicami.
- Aktywuj Cloud Shell i utwórz plik .yaml z regułą ruchu wychodzącego za pomocą edytora tekstu.
nano egresstorage.yaml
- egressTo: operations: - serviceName: storage.googleapis.com methodSelectors: - method: \"*\" resources: - projects/PROJECTX_ID egressFrom: identities: - serviceAccount:PROJECT_ID-compute@developer.gserviceaccount.com
- Zaktualizuj zasadę dotyczącą ruchu przychodzącego, która chroni projekt Z.
gcloud access-context-manager perimeters update SuperProtection --set-egress-policies=egresstorage.yaml --policy=POLICY
Teraz możemy ponownie spróbować uzyskać dostęp do zasobnika z poziomu instancji maszyny wirtualnej.
- W konsoli Google Cloud otwórz selektor projektów i wybierz ProjektZ, a następnie przejdź do Compute Engine > Maszyny wirtualne.
- Kliknij przycisk SSH, aby połączyć się z instancją maszyny wirtualnej i uzyskać dostęp do jej wiersza poleceń.
- Gdy znajdziesz się w interfejsie wiersza poleceń maszyny wirtualnej, spróbuj wyświetlić listę obiektów w zasobniku na dane.
gcloud storage ls gs://BUCKET_NAME/
Wyświetli się ten komunikat o błędzie:
ERROR: (gcloud.storage.ls) User [PROJECT_ID-compute@developer.gserviceaccount.com] does not have permission to access b instance [BUCKET_NAME] (or it may not exist): PROJECT_ID-compute@developer.gserviceaccount.com does not have storage.objects.list access to the Google Cloud Storage bucket. Permission 'storage.objects.list' denied on resource (or it may not exist).
- Musimy przyznać kontu usługi Compute Engine uprawnienia do odczytu obiektów, aby móc wyświetlać listę obiektów w zasobniku na dane.
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=serviceAccount:PROJECT_ID-compute@developer.gserviceaccount.com --role=roles/storage.objectViewer
- Jeszcze raz spróbujmy wyświetlić plik hello.txt w interfejsie wiersza poleceń maszyny wirtualnej .
gcloud storage ls gs://BUCKET_NAME/ . . gs://BUCKET_NAME/hello.txt
Udało się wyświetlić obiekt bez naruszenia uprawnień dotyczących ustawień usługi VPC, ale co z pobraniem pliku? Spróbujmy.
gcloud storage cp gs://BUCKET_NAME/hello.txt /home/${USER}
Otrzymasz też następujący wynik
Copying gs://BUCKET_NAME/hello.txt to file:///home/${USER} Completed files 1/1 | 54.0B/54.0B
7. Czyszczenie
Nie ma osobnej opłaty za korzystanie z Ustawień usługi VPC, gdy nie jest ona używana, ale najlepiej jest wyczyścić konfigurację używaną w tym laboratorium. Możesz też usunąć instancję maszyny wirtualnej lub projekty Cloud, aby uniknąć naliczania opłat. Usunięcie projektu Cloud spowoduje zatrzymanie naliczania opłat za wszystkie zasoby w nim używane.
- Aby usunąć maszynę wirtualną, zaznacz pole wyboru po lewej stronie nazwy maszyny wirtualnej, a potem kliknij Usuń.
- Aby usunąć granicę, wykonaj te czynności:
- W konsoli Google Cloud kliknij Zabezpieczenia, a następnie w zakresie Organizacja kliknij Ustawienia usługi VPC.
- Na stronie Ustawienia usługi VPC w wierszu tabeli odpowiadającym granicy, którą chcesz usunąć, kliknij „Usuń ikonę”.
- Aby usunąć poziom dostępu, wykonaj te czynności:
- W konsoli Google Cloud otwórz stronę Menedżer kontekstu dostępu w zakresie folderów.
- W siatce w wierszu poziomu dostępu, który chcesz usunąć, kliknij „Usuń ikonę”, a następnie kliknij Usuń.
- Aby usunąć obiekt i zasobnik Cloud Storage, wykonaj te czynności:
- W konsoli Google Cloud otwórz stronę zasobników Cloud Storage .
- Zaznacz pole wyboru obok utworzonego zasobnika.
- Kliknij Usuń.
- W wyświetlonym oknie potwierdź, że chcesz usunąć zasobnik.
- Kliknij Usuń.
- Aby zamknąć projekt, wykonaj te czynności:
- W konsoli Google Cloud otwórz Uprawnienia Ustawienia administratora w projekcie, który chcesz usunąć.
- W sekcji Administracja Ustawienia administratora kliknij Wyłącz.
- Wpisz identyfikator projektu i kliknij Wyłącz mimo to.
8. Gratulacje!
W tym ćwiczeniu w programie udało Ci się zaktualizować granicę Ustawień usługi VPC, wyegzekwować ją i rozwiązać problemy.
Więcej informacji
- Zapoznaj się z dokumentacją Ustawień usługi VPC.
- Zobacz dokumentację Menedżera kontekstu dostępu.
- Zobacz dokumentację narzędzia do rozwiązywania problemów z VPC-SC.
- Zapoznaj się z dokumentacją reguł ruchu przychodzącego i wychodzącego.
- Zobacz dokumentację uruchomienia próbnego .
- Zapoznaj się z dokumentacją Cloud Storage.
Licencja
To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.