Vertex AI tworzy bezpieczny notatnik zarządzany przez użytkownika

1. Wprowadzenie

Instancje notatników Vertex AI Workbench zarządzane przez użytkownika umożliwiają tworzenie maszyn wirtualnych do deep learningu, które są gotowe do użycia w JupyterLab, oraz zarządzanie nimi.

Instancje notatników zarządzanych przez użytkownika mają wstępnie zainstalowany pakiet pakietów deep learning, w tym obsługę platform TensorFlow i PyTorch. Możesz skonfigurować instancje z włączonym tylko procesorem lub GPU.

Co utworzysz

Ten samouczek opisuje proces wdrażania bezpiecznego notatnika zarządzanego przez użytkownika zgodnie ze sprawdzonymi metodami dotyczącymi sieci i zabezpieczeń. Wymagane są następujące kroki:

  1. Utwórz VPC
  2. Tworzenie routera Cloud Router i Cloud NAT
  3. Skonfiguruj instancję notatnika z odpowiednimi ustawieniami zabezpieczeń

W tym samouczku znajdziesz szczegółowe instrukcje dotyczące każdego kroku. Zawiera także wskazówki i sprawdzone metody dotyczące zabezpieczania notatników zarządzanych przez użytkowników. Rysunek 1 przedstawia wdrożenie przy użyciu samodzielnej sieci VPC.

Rysunek 1.

2292244ba0b11f71.png

Czego się nauczysz

  • Jak sprawdzić, czy współdzielone środowisko VPC jest odpowiednie dla Twojej organizacji
  • Jak utworzyć samodzielną sieć VPC
  • Jak utworzyć router Cloud Router i Cloud NAT
  • Jak utworzyć notatnik zarządzany przez użytkownika
  • Jak uzyskać dostęp do notatnika zarządzanego przez użytkownika
  • Jak monitorować stan notatników zarządzanych przez użytkownika
  • Jak utworzyć i zastosować harmonogram instancji

Czego potrzebujesz

  • Projekt Google Cloud

Uprawnienia

2. Sieć VPC

Sieć VPC przypomina sieć fizyczną, z tym że funkcjonuje wirtualnie w Google Cloud. Sieć VPC to zasób globalny, który składa się z podsieci regionalnych. Sieci VPC w Google Cloud są od siebie odizolowane logicznie.

Niezależna sieć VPC

Rysunek 2 przedstawia przykład autonomicznej globalnej sieci VPC, składającej się z podsieci regionalnej (us-central1) oraz routera Cloud Router i Cloud NAT, która umożliwia notatnikowi zarządzanemu przez użytkownika bezpieczne nawiązywanie połączenia z internetem.

Rysunek 2

2292244ba0b11f71.png

Współdzielone środowisko VPC

Współdzielone środowisko VPC umożliwia eksportowanie podsieci z sieci VPC w głównym projekcie do projektów usług w tej samej organizacji. Główny projekt zawiera zasoby sieciowe, które są udostępniane projektowi usługi, takie jak podsieci, reguły Cloud Nat i reguły zapory sieciowej. Projekt usługi zawiera zasoby na poziomie aplikacji, które wykorzystują zasoby sieciowe w głównym projekcie.

Rysunek 3 przedstawia ilustrację globalnego współdzielonego środowiska VPC, w którym w głównym projekcie jest wdrożona infrastruktura sieci i zabezpieczeń, a zadania są wdrażane w projekcie usługi.

Rysunek 3

1354a9323c8e5787.png

Samodzielne a współdzielone środowisko VPC

Pojedyncza sieć VPC wystarcza do wielu prostych przypadków użycia, ponieważ jest łatwiejsza w tworzeniu, utrzymaniu i rozumieniu niż bardziej złożone alternatywne rozwiązania. Współdzielone środowisko VPC jest skutecznym narzędziem dla organizacji z wieloma zespołami, ponieważ pozwala zwiększyć prostotę architektury pojedynczej sieci VPC w wielu grupach roboczych przez wykorzystanie projektów usług.

Sprawdzona metoda dotycząca VPC używana w samouczku

  • Aby uzyskać dostęp do notatnika, włącz Cloud NAT.
  • Podczas tworzenia podsieci włącz prywatny dostęp do Google .
  • Utwórz nakazowe reguły zapory sieciowej, aby ograniczyć niepożądany ruch.Na przykład nie używaj tcp 0.0.0.0/0, zamiast tego zdefiniuj dokładne podsieci lub adresy IP hostów.
  • Wykorzystaj zasady zapory sieciowej, aby rozszerzyć zakres reguł ruchu przychodzącego, np.lokalizacje geograficzne, listy analizy zagrożeń, nazwy domen źródłowych itp.

3. Sprawdzone metody dotyczące notatnika

Dopasuj rozmiar instancji

  • Zatrzymaj lub usuń nieużywane instancje
  • Użyj mniejszej instancji początkowej i powtarzaj ją z mniejszą próbką danych
  • Skaluj instancje w górę zgodnie z potrzebami
  • Eksperymentuj z mniejszymi zbiorami danych

Wybieranie odpowiednich typów maszyn

  • Maszyny wirtualne zoptymalizowane pod kątem kosztów
  • Lepsze wykorzystanie zasobów sprzętowych w celu obniżenia kosztów
  • Oszczędność do 31% w porównaniu z N1
  • Dodatkowe oszczędności (20–50%) w przypadku zobowiązań na 1 rok lub 3 lata
  • Zwiększenie rozmiaru maszyny lub dodanie procesorów graficznych może pomóc w zwiększeniu wydajności i przezwyciężyć błędy ograniczeń pamięci

Zaplanuj wyłączenie instancji

  • Wyłączaj instancje, gdy są nieaktywne (płać tylko za miejsce na dysku)
  • Zaplanuj automatyczne wyłączanie i uruchamianie instancji maszyn wirtualnych notatników o określonych godzinach

Monitorowanie stanu notatnika

  • Instancje notatników zarządzanych przez użytkownika mają wbudowane narzędzie diagnostyczne, które może pomóc w monitorowaniu stanu instancji.

Uwagi na temat bezpieczeństwa

Poniżej znajdziesz zalecane kwestie bezpieczeństwa podczas tworzenia notatnika zarządzanego przez użytkownika:

  • Wybierz opcję „tylko jeden użytkownik”. dostęp do notatnika. Jeśli określony użytkownik nie jest twórcą instancji, musisz przypisać mu rolę użytkownika konta usługi (roles/iam.serviceAccountUser) na koncie usługi instancji.
  • Wyłącz te opcje:
  • dostęp do roota
  • nbconvert
  • pobieranie plików z interfejsu JupyterLab
  • Do notatnika zarządzanego przez użytkownika zostanie użyta usługa Cloud NAT, a nie przypisanie zewnętrznego adresu IP.
  • Wybierz te opcje obliczeń:
  • Bezpieczny rozruch
  • Moduł wirtualnej platformy zaufanej (vTPM)
  • Monitorowanie integralności

4. Zanim zaczniesz

Aktualizowanie projektu na potrzeby samouczka

W tym samouczku używamy zmiennych $variables, które ułatwiają implementację konfiguracji gcloud w Cloud Shell.

W Cloud Shell wykonaj te czynności:

gcloud config list project
gcloud config set project [your-project-name]
projectid=your-project-name
echo $projectid

5. Konfiguracja VPC

Tworzenie samodzielnej sieci VPC

W Cloud Shell wykonaj te czynności:

gcloud compute networks create securevertex-vpc --project=$projectid --subnet-mode=custom

Tworzenie podsieci notatnika zarządzanej przez użytkownika

W Cloud Shell wykonaj te czynności:

gcloud compute networks subnets create securevertex-subnet-a --project=$projectid --range=10.10.10.0/28 --network=securevertex-vpc --region=us-central1 --enable-private-ip-google-access

Konfiguracja Cloud Router i NAT

Usługa Cloud NAT jest używana w samouczku do pobierania pakietów oprogramowania notatnika, ponieważ instancja notatnika zarządzana przez użytkownika nie ma zewnętrznego adresu IP. Cloud NAT oferuje również funkcję NAT dla ruchu wychodzącego, co oznacza, że hosty internetowe nie mogą inicjować komunikacji z notatnikiem zarządzanym przez użytkownika, co zwiększa jego bezpieczeństwo.

Utwórz regionalny router Cloud Router w Cloud Shell.

gcloud compute routers create cloud-router-us-central1 --network securevertex-vpc --region us-central1

Utwórz w Cloud Shell regionalną bramę Cloud nat.

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1 --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

6. Utwórz zasobnik na dane

Zasobniki na dane umożliwiają bezpieczne przesyłanie i pobieranie plików. W samouczku miejsce w chmurze będzie zawierać skrypt postartowy umożliwiający instalację pakietów generatywnej AI w notatnikach zarządzanych przez użytkownika.

Utwórz zasobnik Cloud Storage i zastąp BUCKET_NAME preferowaną, unikalną globalnie nazwą.

Utwórz w Cloud Shell unikalny zasobnik na dane.

gsutil mb -l us-central1 -b on gs://BUCKET_NAME

Sklep „BUCKET_NAME” na czas trwania modułu

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

7. Tworzenie skryptu postartowego

Aby umożliwić pobieranie pakietów generatywnej AI, utwórz w Cloud Shell skrypt postartowy za pomocą vi lub edytora nano i zapisz go jako poststartup.sh.

#! /bin/bash
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Changing dir to /home/jupyter" >> /tmp/notebook_config.log 2>&1
cd /home/jupyter
echo "Cloning generative-ai from github" >> /tmp/notebook_config.log 2>&1
su - jupyter -c "git clone https://github.com/GoogleCloudPlatform/generative-ai.git" >> /tmp/notebook_config.log 2>&1
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Installing python packages" >> /tmp/notebook_config.log 2&1
su - jupyter -c "pip install --upgrade --no-warn-conflicts --no-warn-script-location --user \
     google-cloud-bigquery \
     google-cloud-pipeline-components \
     google-cloud-aiplatform \
     seaborn \
     kfp" >> /tmp/notebook_config.log 2>&1

Przykład:

vpc_admin@cloudshell$ more poststartup.sh 
#! /bin/bash
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Changing dir to /home/jupyter" >> /tmp/notebook_config.log 2>&1
cd /home/jupyter
echo "Cloning generative-ai from github" >> /tmp/notebook_config.log 2>&1
su - jupyter -c "git clone https://github.com/GoogleCloudPlatform/generative-ai.git" >> /tmp/notebook_config.log 2>&1
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Installing python packages" >> /tmp/notebook_config.log 2&1
su - jupyter -c "pip install --upgrade --no-warn-conflicts --no-warn-script-location --user \
     google-cloud-bigquery \
     google-cloud-pipeline-components \
     google-cloud-aiplatform \
     seaborn \
     kfp" >> /tmp/notebook_config.log 2>&1

Prześlij skrypt postartowy do zasobnika na dane z Cloud Shell przy użyciu polecenia gsutil

gsutil cp poststartup.sh gs://$BUCKET_NAME

8. Tworzenie konta usługi

Aby zapewnić szczegółową kontrolę nad notatnikiem zarządzanym przez użytkownika, wymagane jest konto usługi. Po wygenerowaniu uprawnień konta usługi można je zmienić odpowiednio do wymagań biznesowych. W samouczku na koncie usługi zostaną zastosowane te reguły:

Zanim przejdziesz dalej, musisz interfejs Service Account API.

Utwórz konto usługi w Cloud Shell.

gcloud iam service-accounts create user-managed-notebook-sa \
    --display-name="user-managed-notebook-sa"

W Cloud Shell zaktualizuj konto usługi, dodając do niego rolę Wyświetlający obiekty Cloud Storage.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.objectViewer"

W Cloud Shell zaktualizuj konto usługi, dodając do niego rolę użytkownika Vertex AI

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

W Cloud Shell wymień konto usługi i zanotuj adres e-mail, który będzie używany podczas tworzenia notatnika zarządzanego przez użytkownika.

gcloud iam service-accounts list

Przykład:

$ gcloud iam service-accounts list
DISPLAY NAME: user-managed-notebook-sa
EMAIL: user-managed-notebook-sa@my-project-id.iam.gserviceaccount.com
DISABLED: False

9. Utwórz bezpieczny notatnik zarządzany przez użytkownika

Instancja notatników zarządzanych przez użytkownika to instancja maszyny wirtualnej do deep learningu ze wstępnie zainstalowanymi najnowszymi bibliotekami systemów uczących się i bibliotekami badania danych. Opcjonalnie możesz dodać GPU firmy Nvidia do akceleracji sprzętowej.

Włączanie interfejsów API dla klientów indywidualnych

interfejs Notebooks API.

Tworzenie notatnika zarządzanego przez użytkownika

  1. Otwórz Workbench.
  2. Wybierz Notatniki zarządzane przez użytkownika, a następnie kliknij Utwórz notatnik. Otworzy się strona tworzenia notatnika zarządzanego przez użytkownika.
  3. Jeśli istniejący notatnik został wdrożony, wybierz Notatniki zarządzane przez użytkownika → Nowy notatnik → Dostosuj
  4. Na stronie „Utwórz notatnik zarządzany przez użytkownika” w sekcji Szczegóły podaj te informacje o nowej instancji:
  • Nazwa: podaj nazwę nowej instancji.
  • Region i strefa: w samouczku będą używane regiony us-central1 i us-central1-a.

Kliknij Dalej.

  1. W sekcji Środowisko podaj te informacje:
  • System operacyjny: wybierz system operacyjny, którego chcesz używać.
  • Wybierz środowisko, którego chcesz użyć.
  • Wersja: wybierz wersję, której chcesz użyć.
  • Skrypt postartowy (opcjonalnie możesz użyć wcześniej utworzonego skryptu generatywnej AI) wybierz Przeglądaj, aby wybrać skrypt, który zostanie uruchomiony po uruchomieniu instancji.
  • Metadane: opcjonalnie: podaj niestandardowe klucze metadanych instancji.

Kliknij Dalej.

  1. W sekcji Typ maszyny podaj te informacje:
  • Typ maszyny: wybierz liczbę procesorów i ilość pamięci RAM dla nowej instancji. Vertex AI Workbench zapewnia miesięczne szacunkowe koszty dla każdego wybranego typu maszyny.
  • Typ GPU: wybierz typ GPU i liczbę GPU dla nowej instancji. Informacje o różnych GPU znajdziesz w artykule GPU w Compute Engine.
  • Zaznacz pole wyboru Zainstaluj automatycznie sterownik GPU NVIDIA

Chroniona maszyna wirtualna

  • Włącz bezpieczny rozruch
  • Włącz moduł vTPM
  • Włącz monitorowanie integralności

Kliknij Dalej.

  1. W sekcji Dyski wpisz:
  • Dyski: opcjonalnie: aby zmienić domyślne ustawienia dysku rozruchowego lub dysku danych, wybierz odpowiedni typ dysku rozruchowego, rozmiar dysku rozruchowego w GB, Typ dysku danych i Rozmiar dysku danych w GB. Więcej informacji o typach dysków znajdziesz w artykule Opcje miejsca na dane.
  • Usuń do kosza: opcjonalnie: zaznacz to pole wyboru, aby używać domyślnego działania kosza systemu operacyjnego. Jeśli używasz domyślnego działania kosza, pliki usunięte przy użyciu interfejsu JupyterLab można przywrócić, ale usunięte pliki zajmują miejsce na dysku.
  • Kopia zapasowa: opcjonalnie: aby zsynchronizować lokalizację w Cloud Storage z dyskiem danych instancji, wybierz Przeglądaj i określ lokalizację Cloud Storage. Informacje o opłatach za miejsce na dane znajdziesz w cenniku Cloud Storage.
  • Szyfrowanie: klucz szyfrowania zarządzany przez Google

Kliknij Dalej.

  1. W sekcji Sieć wpisz:
  • Sieci: wybierz Sieci w tym projekcie lub Sieci udostępnione dla mnie. Jeśli w głównym projekcie używasz współdzielonego środowiska VPC, musisz też przypisać rolę użytkownika sieci Compute (roles/compute.networkUser) do agenta usługi Notebooks z projektu usługi.
  • W polu Sieć wybierz sieć, którą chcesz. Samouczek używa sieci securevertex-vpc. Możesz wybrać sieć VPC, o ile ma ona włączony prywatny dostęp do Google lub ma dostęp do internetu. W polu Podsieć wybierz podsieć. W samouczku używana jest podsieć securevertex-subnet-a.
  • Odznacz opcję „Przypisz zewnętrzny adres IP”
  • Wybierz opcję „Zezwól na dostęp przez serwer proxy”.

Kliknij Dalej.

81bb7dbe31fbf587.png

  1. W sekcji Uprawnienia i zabezpieczenia podaj te informacje:
  • Wybierz Pojedynczy użytkownik, a następnie w polu Adres e-mail użytkownika wpisz konto użytkownika, któremu chcesz przyznać dostęp. Jeśli określony użytkownik nie jest twórcą instancji, musisz przypisać mu rolę użytkownika konta usługi (roles/iam.serviceAccountUser) na koncie usługi instancji.
  • Odznacz Użyj domyślnego konta usługi Compute Engine w maszynie wirtualnej do wywoływania interfejsów Google Cloud APIs
  • Wpisz adres e-mail nowo utworzonego konta usługi, na przykład: user-managed-notebook-sa@my-project-id.iam.gserviceaccount.com

Opcje zabezpieczeń

  • Odznacz opcję „Włącz dostęp na poziomie roota do instancji”
  • Odznacz opcję Włącz nbconvert
  • Odznacz opcję Włącz pobieranie plików z interfejsu użytkownika JupyterLab
  • Włącz terminal (usuń wybór w przypadku środowisk produkcyjnych)

Kliknij Dalej.

e19f3cd05a2c1b7f.png

  1. W sekcji Stan systemu podaj te informacje:

Aktualizacja środowiska i stan systemu

  • Zaznacz pole wyboru Włącz automatyczne uaktualnianie środowiska.
  • Wybierz, czy chcesz uaktualniać notatnik co tydzień czy co miesiąc.

W sekcji Stan i raportowanie systemu zaznacz lub odznacz te pola wyboru:

  • Włącz raport o stanie systemu
  • Raportuj wskaźniki niestandardowe do usługi Cloud Monitoring
  • Zainstaluj agenta Cloud Monitoring

Wybierz Utwórz.

10. Weryfikacja

Vertex AI Workbench tworzy instancję notatników zarządzanych przez użytkownika na podstawie określonych przez Ciebie właściwości i automatycznie uruchamia instancję. Gdy instancja będzie gotowa do użycia, Vertex AI Workbench aktywuje link Otwórz JupyterLab, który umożliwia użytkownikowi dostęp do notatnika.

11. Dostrzegalność

Monitoruj wskaźniki systemu i aplikacji za pomocą usługi Monitoring

W przypadku instancji notatników zarządzanych przez użytkowników z zainstalowanym monitorowaniem możesz monitorować wskaźniki systemu i aplikacji za pomocą konsoli Google Cloud:

  1. W konsoli Google Cloud otwórz stronę Notatniki zarządzane przez użytkownika.
  2. Kliknij nazwę instancji, dla której chcesz wyświetlić wskaźniki systemu i aplikacji.
  3. Na stronie Szczegóły notatnika kliknij kartę Monitorowanie. Sprawdź wskaźniki systemu i aplikacji dotyczące instancji.

12. Utwórz harmonogram notatnika

Harmonogramy instancji pozwalają automatycznie uruchamiać i zatrzymywać instancje maszyn wirtualnych. Wykorzystanie harmonogramów instancji do automatyzacji wdrażania maszyn wirtualnych może pomóc Ci zoptymalizować koszty i efektywniej zarządzać maszynami wirtualnymi. Harmonogramów instancji możesz używać zarówno dla zbiorów zadań cyklicznych, jak i jednorazowych. Możesz na przykład użyć harmonogramów instancji, aby uruchamiać instancje maszyn wirtualnych tylko w godzinach pracy lub aby zapewnić pojemność na wydarzenie jednorazowe.

Aby korzystać z harmonogramów instancji, utwórz zasadę dotyczącą zasobów z opisem działania uruchamiania i zatrzymywania, a następnie podłącz ją do co najmniej 1 instancji maszyny wirtualnej.

Z tego samouczka dowiesz się, jak utworzyć harmonogram instancji, który spowoduje włączenie notatnika o 7:00 i wyłączenie go o 18:00.

Aby utworzyć harmonogram instancji, musisz mieć uprawnienia compute.instances.start oraz compute.instances.stop, dlatego zalecamy utworzenie roli niestandardowej utworzonej przez administratora.

Po utworzeniu rola niestandardowa zostanie przypisana do domyślnego konta usługi Compute Engine w Twoim projekcie, co umożliwi uruchamianie i zatrzymywanie harmonogramu instancji.

Tworzenie roli niestandardowej

W Cloud Shell utwórz niestandardową rolę maszyny wirtualnej VmScheduler i dodaj niezbędne uprawnienia.

gcloud iam roles create Vm_Scheduler --project=$projectid \
    --title=vm-scheduler-notebooks \
    --permissions="compute.instances.start,compute.instances.stop" --stage=ga

Opisz rolę niestandardową z Cloud Shell.

gcloud iam roles describe Vm_Scheduler --project=$projectid

Przykład:

$ gcloud iam roles describe Vm_Scheduler --project=$projectid
etag: BwX991B0_kg=
includedPermissions:
- compute.instances.start
- compute.instances.stop
name: projects/$projectid/roles/Vm_Scheduler
stage: GA
title: vm-scheduler-notebooks

Aktualizowanie domyślnego konta usługi

W tej sekcji dowiesz się, jak zidentyfikować i zaktualizować domyślne konto usługi, które ma format: PROJECT_NUMBER-compute@developer.gserviceaccount.com

W Cloud Shell określ bieżący numer projektu.

gcloud projects list --filter=$projectid

Zapisz w Cloud Shell numer projektu jako zmienną.

project_number=your_project_number
echo $project_number

W Cloud Shell zaktualizuj domyślne konto usługi Compute przy użyciu roli niestandardowej VM_Scheduler.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:$project_number-compute@developer.gserviceaccount.com" --role="projects/$projectid/roles/Vm_Scheduler"

Tworzenie harmonogramu instancji

Utwórz w Cloud Shell harmonogram uruchamiania i zatrzymywania.

gcloud compute resource-policies create instance-schedule optimize-notebooks \
    --region=us-central1 \
    --vm-start-schedule='0 7 * * *' \
    --vm-stop-schedule='0 18 * * *' \
        --timezone=America/Chicago

Zapisz w Cloud Shell nazwę swojego notatnika.

gcloud compute instances list
notebook_vm=your_notebookvm_name
echo $notebook_vm

Harmonogram instancji możesz podłączyć do dowolnej istniejącej maszyny wirtualnej, która znajduje się w tym samym regionie co harmonogram instancji.

W Cloud Shell powiąż harmonogram z notatnikiem.

gcloud compute instances add-resource-policies $notebook_vm \
--resource-policies=optimize-notebooks \
--zone=us-central1-a

13. Czyszczenie danych

Usuń notatnik zarządzany przez użytkownika z konsoli, przejdź do Vertex AI → Workbench, wybierz i usuń notatnik.

Z Cloud Shell usuń komponenty VPC.

gcloud compute routers delete cloud-router-us-central1 --region=us-central1 --quiet

gcloud compute routers nats delete cloud-nat-us-central1 --region=us-central1 --router=cloud-router-us-central1 --quiet

gcloud compute instances remove-resource-policies $notebook_vm \
--resource-policies=optimize-notebooks \
--zone=us-central1-a --quiet

gcloud compute resource-policies delete optimize-notebooks --region=us-central1 --quiet

gcloud compute instances delete $notebook_vm --zone=us-central1-a --quiet

gcloud compute networks subnets delete securevertex-subnet-a --region=us-central1 --quiet 

gcloud iam service-accounts delete user-managed-notebook-sa@$projectid.iam.gserviceaccount.com --quiet 

gcloud projects remove-iam-policy-binding $projectid --member="serviceAccount:$project_number-compute@developer.gserviceaccount.com" --role="projects/$projectid/roles/Vm_Scheduler"

gcloud iam roles delete Vm_Scheduler --project=$projectid

gcloud compute networks delete securevertex-vpc --quiet 

14. Gratulacje

Brawo! Udało Ci się skonfigurować i zweryfikować bezpieczny notatnik zarządzany przez użytkownika przez utworzenie niestandardowego samodzielnego środowiska VPC z wykorzystaniem sprawdzonych metod wzmacniania zabezpieczeń zarządzanych notatników i wdrożenie harmonogramu instancji w celu optymalizacji wydatków.

Co dalej?

Przejrzyj te samouczki...

Więcej informacji filmy,

Dokumentacja