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

1. Wprowadzenie

Instancje notatników Vertex AI Workbench zarządzanych przez użytkownika umożliwiają tworzenie maszyn wirtualnych do uczenia głębokiego z preinstalowanym JupyterLab i zarządzanie nimi.

Instancje notatników zarządzanych przez użytkownika mają wstępnie zainstalowany pakiet do uczenia głębokiego, który obejmuje obsługę platform TensorFlow i PyTorch. Możesz skonfigurować instancje tylko z procesorem lub z procesorem graficznym.

Co utworzysz

Z tego samouczka dowiesz się, jak wdrożyć bezpieczny notebook zarządzany przez użytkownika zgodnie ze sprawdzonymi metodami z zakresu sieci i bezpieczeństwa. Obejmuje to te kroki:

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

Ten samouczek zawiera szczegółowe instrukcje dotyczące każdego kroku. Zawiera też wskazówki i sprawdzone metody zabezpieczania notebooków zarządzanych przez użytkowników. Rysunek 1 przedstawia wdrożenie z użyciem samodzielnej sieci VPC.

Rysunek 1.

2292244ba0b11f71.png

Czego się nauczysz

  • Jak określić, czy współdzielone czy samodzielne środowisko VPC jest odpowiednie dla Twojej organizacji
  • Tworzenie samodzielnej sieci VPC
  • Jak utworzyć router Cloud Router i Cloud NAT
  • Tworzenie notatnika zarządzanego przez użytkownika
  • Jak uzyskać dostęp do notatnika zarządzanego przez użytkownika
  • Jak monitorować stan notatnika zarządzanego przez użytkownika
  • Tworzenie i stosowanie harmonogramu 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.

Samodzielna sieć VPC

Ilustracja 2 przedstawia przykład samodzielnej globalnej sieci VPC składającej się z podsieci regionalnej (us-central1) oraz routera Cloud Router i usługi Cloud NAT, które umożliwiają bezpieczne nawiązywanie połączenia z internetem przez notebook zarządzany przez użytkownika.

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, Cloud NAT i reguły zapory sieciowej. Projekt usługi zawiera zasoby na poziomie aplikacji, które korzystają z zasobów sieciowych w projekcie głównym.

Ilustracja 3 przedstawia globalne współdzielone środowisko VPC, w którym infrastruktura sieciowa i zabezpieczeń jest wdrażana w głównym projekcie, a obciążenia są wdrażane w projekcie usług.

Ilustracja 3

1354a9323c8e5787.png

Samodzielne a współdzielone środowisko VPC

W wielu prostych przypadkach użycia wystarczy jedna sieć VPC, ponieważ jest ona łatwiejsza do utworzenia, utrzymania i zrozumienia niż bardziej złożone alternatywy. Współdzielone środowisko VPC to skuteczne narzędzie dla organizacji z wieloma zespołami, ponieważ umożliwia im rozszerzenie prostoty architektury pojedynczej sieci VPC na wiele grup roboczych za pomocą projektów usługi.

Sprawdzone metody VPC użyte w samouczku

  • Aby uzyskać dostęp do notatnika, włącz Cloud NAT.
  • Podczas tworzenia podsieci włącz prywatny dostęp do Google .
  • Twórz reguły zapory sieciowej, które ograniczają niechciany ruch, np.nie używaj 0.0.0.0/0 tcp, tylko zdefiniuj dokładne adresy IP podsieci lub hostów.
  • Korzystaj z zasad zapory sieciowej, aby zwiększyć zakres reguł dotyczących ruchu przychodzącego, np.lokalizacji geograficznych, list informacji o zagrożeniach, nazw domen źródłowych itp.

3. Sprawdzone metody dotyczące notatników

Dopasowywanie rozmiaru instancji

  • Zatrzymywanie lub usuwanie nieużywanych instancji
  • Użyj mniejszej instancji początkowej i iteracyjnie przetwarzaj mniejsze próbki danych
  • Skalowanie instancji w górę w razie potrzeby
  • Eksperymentuj z mniejszymi zbiorami danych

Wybór 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ść nawet do 31% w porównaniu z N1
  • Dodatkowe oszczędności (20–50%) przy zobowiązaniu na 1 lub 3 lata
  • Zwiększenie rozmiaru maszyny lub dodanie procesorów graficznych może poprawić wydajność i pomóc w przezwyciężeniu błędów związanych z ograniczeniami pamięci.

Planowanie wyłączania instancji

  • wyłączanie instancji, gdy są nieaktywne (płacisz tylko za miejsce na dysku);
  • Planowanie automatycznego wyłączania i włączania instancji maszyn wirtualnych notatnika o określonych godzinach

Monitorowanie stanu notebooka

  • Instancje notatników zarządzanych przez użytkownika mają wbudowane narzędzie diagnostyczne, które pomaga monitorować stan instancji.

Względy bezpieczeństwa

Oto zalecane kwestie bezpieczeństwa, które należy wziąć pod uwagę podczas tworzenia notatnika zarządzanego przez użytkownika:

  • Wybierz opcję dostępu do notatnika „tylko dla jednego użytkownika”. Jeśli podany użytkownik nie jest twórcą instancji, musisz przyznać 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,
  • Zamiast przypisywać zewnętrzny adres IP do notatnika zarządzanego przez użytkownika, będzie używana usługa Cloud NAT.
  • Wybierz te opcje obliczeniowe:
  • 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, aby ułatwić 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

Utwórz samodzielne środowisko VPC

W Cloud Shell wykonaj te czynności:

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

Utwórz podsieć notatnika zarządzanego 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 routera Cloud Router i NAT

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

W Cloud Shell utwórz regionalny router Cloud Router.

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

W Cloud Shell utwórz 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. Utworzenie zasobnika na dane

Zasobniki na dane umożliwiają bezpieczne przesyłanie i pobieranie plików. W tym samouczku miejsce w chmurze będzie zawierać skrypt uruchamiany po uruchomieniu, który instaluje pakiety generatywnej AI w notatnikach zarządzanych przez użytkownika.

Utwórz zasobnik Cloud Storage i zastąp BUCKET_NAME globalnie niepowtarzalną nazwą.

W Cloud Shell utwórz unikalny zasobnik pamięci.

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

Przechowuj „BUCKET_NAME” przez czas trwania modułu

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

7. Tworzenie skryptu postartowego

Aby włączyć pobieranie pakietów generatywnej AI, utwórz skrypt postartowy w powłoce Cloud Shell za pomocą edytora vi lub 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 po uruchomieniu do zasobnika pamięci z Cloud Shell za pomocą narzędzia gsutil.

gsutil cp poststartup.sh gs://$BUCKET_NAME

8. Tworzenie konta usługi

Aby zapewnić precyzyjną kontrolę nad notatnikiem zarządzanym przez użytkownika, wymagane jest konto usługi. Po wygenerowaniu uprawnienia konta usługi można modyfikować w zależności od potrzeb biznesowych. W samouczku do konta usługi zostaną zastosowane te reguły:

Zanim przejdziesz dalej, musisz interfejs Service Account API.

W Cloud Shell utwórz konto usługi.

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

W Cloud Shell zaktualizuj konto usługi, przypisują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, przypisując mu 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 wyświetl listę kont 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. Tworzenie bezpiecznego notatnika zarządzanego przez użytkownika

Instancja notatników zarządzana przez użytkownika to maszyna wirtualna Deep Learning z zainstalowanymi najnowszymi bibliotekami uczenia maszynowego i bibliotekami do badania danych. Opcjonalnie możesz uwzględnić procesory graficzne NVIDIA do akceleracji sprzętowej.

Włączanie interfejsów API dla konsumentów

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 Utwórz notatnik. Otworzy się strona Tworzenie notatnika zarządzanego przez użytkownika.
  3. Jeśli wdrożono istniejący notatnik, wybierz Notatniki zarządzane przez użytkownika → Nowy notatnik → Dostosuj.
  4. Na stronie Tworzenie notatnika zarządzanego przez użytkownika w sekcji Szczegóły podaj te informacje o nowej instancji:
  • Nazwa: podaj nazwę nowej instancji.
  • Region i strefa: w tym samouczku użyjemy regionu us-central1 i strefy 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, użyj utworzonego wcześniej skryptu generatywnej AI) – kliknij Przeglądaj, aby wybrać skrypt do uruchomienia 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 podaje miesięczne szacunkowe koszty każdego wybranego typu maszyny.
  • Typ GPU: wybierz typ GPU i liczbę GPU dla nowej instancji. Więcej informacji o różnych procesorach graficznych znajdziesz w artykule GPU w Compute Engine.
  • Zaznacz pole wyboru Automatycznie zainstaluj dla mnie 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 podaj te informacje:
  • Dyski: opcjonalnie: aby zmienić domyślne ustawienia dysku rozruchowego lub dysku danych, wybierz odpowiednio 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 pamięci.
  • Usuń do kosza: opcjonalnie zaznacz to pole wyboru, aby używać domyślnego kosza systemu operacyjnego. Jeśli używasz domyślnego kosza, pliki usunięte za pomocą interfejsu użytkownika JupyterLab można przywrócić, ale zajmują one miejsce na dysku.
  • Kopia zapasowa: opcjonalnie: aby zsynchronizować lokalizację w Cloud Storage z dyskiem danych instancji, kliknij Przeglądaj i wskaż lokalizację w Cloud Storage. Więcej informacji o kosztach przechowywania danych znajdziesz w cenniku Cloud Storage.
  • Szyfrowanie: klucz szyfrowania zarządzany przez Google

Kliknij Dalej.

  1. W sekcji Sieć podaj te informacje:
  • Sieć: 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ż przyznać rolę użytkownika sieci Compute (roles/compute.networkUser) agentowi usługi Notebooks z projektu usługi.
  • W polu Sieć wybierz odpowiednią sieć. W tym samouczku używamy 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 odpowiednią podsieć. W tym samouczku używana jest podsieć securevertex-subnet-a.
  • Odznacz opcję przypisywania zewnętrznego adresu IP
  • Wybierz Zezwalaj 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 podany użytkownik nie jest twórcą instancji, musisz przyznać mu rolę użytkownika konta usługi (roles/iam.serviceAccountUser) na koncie usługi instancji.
  • Odznacz opcję Użyj domyślnego konta usługi Compute Engine w maszynie wirtualnej do wywoływania interfejsów Google Cloud API.
  • Wpisz adres e-mail nowo utworzonego konta usługi, np. user-managed-notebook-sa@my-project-id.iam.gserviceaccount.com.

Opcje zabezpieczeń

  • Odznacz opcję Włącz dostęp poziomu głównego do instancji
  • Odznacz opcję włączania nbconvert
  • Odznacz opcję Włącz pobieranie plików z interfejsu JupyterLab.
  • Włącz terminal (odznacz 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 systemu i raportowanie 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

Kliknij 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 ją uruchamia. 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ść

Monitorowanie wskaźników systemu i aplikacji za pomocą usługi Monitoring

W przypadku instancji notatników zarządzanych przez użytkownika, na których zainstalowano Monitoring, możesz monitorować wskaźniki systemu i aplikacji za pomocą konsoli Google Cloud:

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

12. Tworzenie harmonogramu notatnika

Harmonogramy instancji umożliwiają automatyczne uruchamianie i zatrzymywanie instancji maszyn wirtualnych. Korzystanie z harmonogramów instancji do automatyzacji wdrażania instancji maszyn wirtualnych może pomóc w optymalizacji kosztów i wydajniejszym zarządzaniu instancjami maszyn wirtualnych. Harmonogramów instancji możesz używać w przypadku obciążeń cyklicznych i jednorazowych. Możesz na przykład używać harmonogramów instancji, aby uruchamiać instancje maszyn wirtualnych tylko w godzinach pracy lub udostępniać zasoby na potrzeby jednorazowego wydarzenia.

Aby korzystać z harmonogramów instancji, utwórz zasadę zasobu, która określa zachowanie związane z uruchamianiem i zatrzymywaniem, a następnie dołącz ją do co najmniej 1 instancji maszyny wirtualnej.

W tym samouczku dowiesz się, jak utworzyć harmonogram instancji, który włącza notatnik o 7:00 i wyłącza go o 18:00.

Aby utworzyć harmonogram instancji, musisz mieć uprawnienia compute.instances.start i compute.instances.stop. Zalecamy utworzenie roli niestandardowej przez administratora, który przyzna Ci do niej dostęp.

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

Tworzenie roli niestandardowej

W Cloud Shell utwórz rolę niestandardową VmScheduler i dodaj do niej 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ą w 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 sekcji poniżej znajdziesz domyślne konto usługi w formacie PROJECT_NUMBER-compute@developer.gserviceaccount.com, które musisz zaktualizować.

W Cloud Shell sprawdź numer bieżącego projektu.

gcloud projects list --filter=$projectid

W Cloud Shell zapisz numer projektu jako zmienną.

project_number=your_project_number
echo $project_number

W Cloud Shell zaktualizuj domyślne konto usługi Compute, przypisując do niego rolę niestandardową 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

W Cloud Shell utwórz 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

W Cloud Shell zapisz nazwę notatnika.

gcloud compute instances list
notebook_vm=your_notebookvm_name
echo $notebook_vm

Harmonogram instancji możesz dołączyć do dowolnej istniejącej instancji 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. W tym celu przejdź do Vertex AI → Workbench, wybierz notatnik i usuń go.

W 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, tworząc niestandardową sieć VPC, która jest zgodna ze sprawdzonymi metodami zwiększania bezpieczeństwa notatników zarządzanych, oraz wdrażając harmonogram instancji w celu optymalizacji wydatków.

Co dalej?

Zapoznaj się z tymi samouczkami:

Więcej informacji i filmy

Dokumentacja