Ustawienia usługi VPC – ochrona usługi BigQuery Data Transfer Service

1. Wprowadzenie

W tym laboratorium dowiesz się, jak chronić BigQuery Data Transfer Service za pomocą ustawień VPC podczas przenoszenia danych z Cloud Storage do zbioru danych BigQuery. Następnie chronimy Cloud Storage i powtarzamy proces przenoszenia danych z Cloud Storage do BigQuery. Ochrona Cloud Storage powoduje naruszenie ustawień usługi VPC, które musi zostać naprawione, aby można było przeprowadzić migrację. Na koniec chronimy też BigQuery, a potem próbujemy skopiować zbiór danych między projektami, co również powoduje naruszenie, które należy naprawić.

W tym praktycznym module zobaczysz, jak naprawić naruszenia zasad dotyczących ruchu przychodzącego i wychodzącego, używając odpowiednich reguł. Poziom dostępu użyjemy też do naprawienia naruszenia zasad dotyczących dostępu do BigQuery Data Transfer. Cele tego ćwiczenia:

  • Dowiedz się, jak naprawić naruszenia zasad dotyczących przychodzących i wychodzących przepływów danych za pomocą zasad dotyczących przychodzących i wychodzących przepływów danych w różnych usługach, w tym Cloud Storage, BigQuery i BigQuery Data Transfer Service.
  • dowiedzieć się, dlaczego doszło do konkretnego naruszenia;

2. Konfiguracja i wymagania dotyczące zasobów

Zanim zaczniesz

W tym laboratorium kodowania zakładamy, że wiesz już:

Konfiguracja

Nasz początkowy proces konfiguracji wygląda tak:

Schemat początkowej konfiguracji ćwiczeń z programowania

Tworzenie zasady z ograniczonym zakresem i zwykłej granicy usługi

W tym laboratorium kodu użyjemy zwykłej granicy usługi chroniącej project-2.

Na obwodzie perimeter-2 ogranicz BigQuery Data Transfer API.

Konfiguracje VPC SC chroniące usługę Data Transfer Service.

Tworzenie zasobnika Cloud Storage i zbioru danych BigQuery

W ramach tego ćwiczenia wystarczy dowolny plik CSV, niezależnie od jego zawartości. Główne ograniczenie dotyczy wymogu współlokalizacji, który nakazuje, aby:

  • Jeśli zbiór danych BigQuery znajduje się w wielu regionach, zasób Cloud Storage zawierający dane, które przenosisz, musi znajdować się w tym samym regionie lub w lokalizacji zawartej w wielu regionach.
  • Jeśli zbiór danych znajduje się w regionie, zasobnik Cloud Storage musi być w tym samym regionie.

W tym samouczku zadbamy o to, aby zarówno zasobnik Cloud Storage, jak i zbiór danych BigQuery znajdowały się w tym samym regionie lub regionie obejmującym wiele regionów.

Utwórz nowy zasobnik Cloud Storage w projekcie project-1

Aby utworzyć nowy zasobnik Cloud Storage, wykonaj te czynności: tworzenie nowego zasobnika.

  • Wpisz nazwę zasobnika, która spełnia wymagania dotyczące nazw zasobników. W tym ćwiczeniu będziemy używać nazwy zasobnika codelab-bqtransfer-bucket.
  • W sekcji „Lokalizacja zasobnika” wybierz Typ lokalizacjiLokalizacja, w której dane zasobnika będą przechowywane na stałe. W tym ćwiczeniu użyjemy us (wiele regionów w Stanach Zjednoczonych).

Konfiguracja tworzenia Cloud Storage.

Tworzenie pliku CSV

Na komputerze lokalnym lub w Cloud Shell możesz użyć polecenia echo, aby utworzyć przykładowy plik CSV (codelab-test-file.csv) za pomocą tych poleceń:

echo "name,age" > codelab-test-file.csv; \
echo "Alice,10" >> codelab-test-file.csv; \
echo "Bob,20" >> codelab-test-file.csv; \
echo "Carol,30" >> codelab-test-file.csv; \
echo "Dan,40" >> codelab-test-file.csv; \
echo "Eve,50" >> codelab-test-file.csv; \
echo "Frank,60" >> codelab-test-file.csv; \
echo "Grace,70" >> codelab-test-file.csv; \
echo "Heidi,80" >> codelab-test-file.csv;

Przesyłanie pliku CSV do zasobnika Cloud Storage

Po utworzeniu pliku CSV uruchom to polecenie, aby przesłać obiekt pliku do utworzonego zasobnika:

gcloud storage cp codelab-test-file.csv gs://codelab-bqtransfer-bucket

Uruchom polecenie cp, aby przesłać plik CSV do Cloud Storage.

Aby sprawdzić, czy plik został przesłany do utworzonego zasobnika, wyświetl obiekty w zasobniku lub uruchom to polecenie:

gcloud storage ls --recursive gs://codelab-bqtransfer-bucket/**

Utwórz zbiór danych i tabelę BigQuery w project-2

  1. Utwórz zbiór danych BigQuery w projekcie project-2, wykonując te czynności.
    1. W polu Identyfikator zbioru danych wpisz wyjątkową nazwę zbioru danych. W tym ćwiczeniu używamy: codelab_bqtransfer_dataset.
    2. W polu Typ lokalizacji wybierz lokalizację geograficzną zbioru danych. W tym laboratorium kodu używamy tej samej lokalizacji co zasobnik Cloud Storage: US (wiele regionów w Stanach Zjednoczonych). tworzenie zbioru danych BigQuery;
  2. Utwórz tabelę BigQuery w ramach utworzonego zbioru danych codelab_bqtransfer_dataset, wykonując te czynności.
    1. W sekcji Źródło na liście Utwórz tabelę z wybierz Pusta tabela.
    2. W polu Tabela wpisz nazwę tabeli, którą chcesz utworzyć. W tym ćwiczeniu używamy nazwy codelab-bqtransfer-table.
    3. Sprawdź, czy pole Typ tabeli ma wartość Tabela natywnych.
    4. W sekcji Schemat wpisz definicję schematu. Aby wprowadzić informacje o schemacie, kliknij Edytuj jako tekst i wpisz schemat zgodny z formatem utworzonego pliku CSV.
    [{
    "name": "name",
    "type": "STRING",
    "mode": "NULLABLE",
    "description": "The name"
    },
    {
    "name": "age",
    "type": "INTEGER",
    "mode": "NULLABLE",
    "description": "The age"
    }]
    

Koszt

Aby korzystać z zasobów i interfejsów API Cloud, musisz włączyć rozliczenia w projektach project-2 i project-1. Zalecamy wyłączenie używanych zasobów, aby uniknąć obciążenia opłatami poza tym ćwiczeniem.

Koszty te dotyczą zasobów BigQuery i Cloud Storage. Szacunkowy koszt można znaleźć w kalkulatorze cen BigQuery i kalkulatorze Cloud Storage.

3. Konfigurowanie przenoszenia danych z obiektu Cloud Storage do tabeli BigQuery

Spróbujemy teraz utworzyć usługę Data Transfer Service (w project-2), aby przenosić dane z Cloud Storage (znajdującej się w project-1) do BigQuery (znajdującej się w project-2), przy założeniu, że kontrola usług VPC chroni BigQuery Data Transfer Serviceproject-2. Zabezpieczenie tylko usługi BigQuery Data Transfer Service (bez zabezpieczenia BigQuery i Cloud Storage) ogranicza podmioty do tworzenia i zarządzania transferami danych (np. ręcznego uruchamiania transferu danych).

Konfigurowanie transferu danych z Cloud Storage

Aby utworzyć transfer danych:

  1. Otwórz stronę BigQuery w konsoli Google Cloud w project-2.
  2. Kliknij Przeniesienie danych.

Naruszenie ustawień usługi VPC na stronie usługi Transfer danych.

Sprawdzanie naruszenia podczas otwierania strony Przenoszenie danych

W konsoli Google Cloud widzimy unikalny identyfikator ustawień usługi VPC. Użyj tego samego identyfikatora, aby filtrować dzienniki i identyfikować szczegóły naruszenia (zastąp OBSERVED_VPCSC_DENIAL_UNIQUE_ID obserwowanym identyfikatorem odmowy):

protoPayload.metadata.@type="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
protoPayload.metadata.vpcServiceControlsUniqueId="OBSERVED_VPCSC_DENIAL_UNIQUE_ID"

Zaobserwowane naruszenie to NO_MATCHING_ACCESS_LEVEL, czyli naruszenie zasad dotyczących dostępu. Szczegóły są podobne do tych:

ingressViolations: [
0: {
servicePerimeter: "accessPolicies/987654321/servicePerimeters/perimeter-2"
targetResource: "projects/[PROJECT2_NUMBER]"
}]
violationReason: "NO_MATCHING_ACCESS_LEVEL"
callerIp: "USER_PUBLIC_IP_ADDRESS"
resource: {
labels: {
method: "google.cloud.bigquery.datatransfer.v1.DataTransferService.ListTransferConfigs"
project_id: "project-2"
service: "bigquerydatatransfer.googleapis.com"
}
type: "audited_resource"
}

Otwarcie strony Przenoszenie danych powoduje próbę wyświetlenia wszystkich skonfigurowanych transferów danych, co powoduje naruszenie metody ListTransferConfigs.

Napraw naruszenie w usłudze bigquerydatatransfer.googleapis.com

Aby naprawić naruszenie reguły dotyczącej ruchu przychodzącego, możesz użyć poziomu dostępu lub reguły dla ruchu przychodzącego. W tym ćwiczeniu użyjemy reguły ruchu przychodzącego skonfigurowanej z identyfikatorem użytkownika odrzuconego, która zezwala na dostęp do usługi bigquerydatatransfer.googleapis.com i wszystkich metod.

Reguła wejścia zezwalająca na metody Przenoszenia danych.

Gdy reguła wejścia zostanie ustawiona, dostęp do strony Przeniesienie danych powinien działać bez problemów.

Wznowienie konfigurowania przenoszenia danych z Cloud Storage

Po wykonaniu poprzednich kroków na stronie Przenoszenie danych (po kliknięciu Przenoszenie danych) wykonaj te czynności:

  1. Kliknij + Utwórz przeniesienie.
  2. W sekcji Typ źródła w polu Źródło wybierz Google Cloud Storage.
  3. W sekcji Nazwa konfiguracji transferu w polu Wyświetlana nazwa wpisz nazwę transferu, np. Codelab Transfer.
  4. W sekcji Opcje planowania:
    1. Wybierz Częstotliwość powtarzania, np. 15 minut.
    2. Pamiętaj, aby wybrać Rozpocznij teraz. W przeciwnym razie transfer danych rozpocznie się dopiero po skonfigurowaniu Częstotliwości powtarzania.
  5. W sekcji Ustawienia zbioru docelowego jako Docelowy zbiór danych wybierz zbiór utworzony na potrzeby przechowywania danych: codelab_bqtransfer_dataset
  6. W sekcji Szczegóły źródła danych:
    1. W polu Tabela docelowa wpisz nazwę tabeli docelowej. Nazwa tabeli docelowej musi być zgodna z regułami dotyczącymi nazewnictwa tabel. W tym ćwiczeniu użyjemy tabeli utworzonej wcześniej: codelab-bqtransfer-table
    2. W polu Identyfikator URI obiektu w Cloud Storage wpisz identyfikator URI obiektu w Cloud Storage. W tym ćwiczeniu używamy utworzonego zasobnika i pliku: codelab-bqtransfer-bucket/codelab-test-file.csv
    3. W sekcji Sposób zapisu pozostaw wartość APPEND (lub wybierz MIRROR).
    4. NIE zaznaczaj opcji usuwania plików po przeniesieniu (ponieważ będziemy wielokrotnie używać tych samych plików). Możesz jednak użyć wielu plików i usunąć pliki źródłowe po przeniesieniu.
    5. W sekcji Format pliku wybierz CSV.
    6. W sekcji Opcje przenoszenia, w sekcji CSV, wpisz przecinek („,”) jako separator pól.
  7. W menu Konto usługi wybierz konto usługi spośród kont usługi powiązanych z Twoim projektem Google Cloud.
    1. Wybrane konto usługi musi mieć wymagane uprawnienia zarówno w Cloud Storage w projekcie hostującym zasobnik, jak i w project-1 w tym Codelab.
    2. W tym laboratorium kodu użyjemy konta usługi utworzonego w project-2 jako codelab-sa@project-2.iam.gserviceaccount.com.
  8. Kliknij Zapisz.

Ponieważ jako opcję harmonogramu wybrano Zacznij teraz, gdy tylko klikniesz Zapisz, rozpocznie się pierwszy transfer.

Sprawdzanie stanu usługi przenoszenia danych

Aby sprawdzić stan skonfigurowanego przenoszenia danych:

Zadania usługi Data Transfer Service.

Kliknij Codelab Transfer (pod opcją Wyświetlana nazwa), aby wyświetlić listę wszystkich wykonanych do tej pory przebiegów.

Szczegóły dotyczące uruchomień usługi Data Transfer Service.

Przesyłanie danych powinno się udać, a ustawienia usługi VPC nie powinny zostać naruszone ani w przypadku ręcznie wywołanego, ani w przypadku zaplanowanego przesyłania danych. Pamiętaj, że tylko przeniesienie wywołane ręcznie wymaga reguły dostępu, aby umożliwić dostęp do podmiotu, który inicjuje przeniesienie ręcznie.

4. Ograniczenia dotyczące adresów IP w przypadku ręcznie wywołanych transferów danych

Bieżące skonfigurowane reguły dostępu pozwalają skonfigurowanej tożsamości ręcznie uruchamiać transfer danych z dowolnego adresu IP.

Dzięki poziomom dostępu ustawienia usługi VPC umożliwiają ograniczenie dozwolonego dostępu za pomocą określonych atrybutów żądania interfejsu API, w tym:

  • Podsieci IP: sprawdza, czy żądanie pochodzi z określonego adresu IP.
  • Regiony: sprawdza, czy żądanie pochodzi z określonego regionu, który jest określany na podstawie lokalizacji geograficznej adresu IP.
  • Osoby upoważnione: sprawdza, czy żądanie pochodzi z określonego konta.
  • Zasady dotyczące urządzeń: sprawdza, czy żądanie pochodzi z urządzenia spełniającego określone wymagania.

Aby wymusić weryfikację tych atrybutów wraz z już skonfigurowaną regułą ingress, musimy utworzyć poziom dostępu, który zezwala na używanie odpowiednich atrybutów, a następnie dodać utworzony poziom dostępu jako źródło w regule ingress.

Dostęp chroniony przez VPC SC według adresu IP użytkownika Ten diagram przedstawia dostęp zainicjowany przez 2 podmioty (user@example.comuser2@example.com) w 3 scenariach, pokazując, jak mechanizm VPC Service Controls ocenia źródła (poziom dostępu do wejścia) i atrybuty tożsamości jako warunek AND, w którym oba muszą być zgodne.

  1. Użytkownikowi użytkownik@example.com zezwala się na dostęp, gdy próbuje on uzyskać dostęp z adresu IP dozwolonego na danym poziomie dostępu, ponieważ jego adres IP i konto użytkownika pasują do konfiguracji w regułach dostępu.
  2. Użytkownik użytkownik@example.com ma zablokowany dostęp, ponieważ jego adres IP nie pasuje do dozwolonego adresu IP, mimo że jego konto jest skonfigurowane zgodnie z regułą dostępu.
  3. Użytkownik user2@example.com ma zablokowany dostęp, mimo że próbuje uzyskać dostęp z dozwolonego adresu IP, ponieważ jego konto nie jest dozwolone przez regułę dostępu.

Tworzenie poziomu dostępu

Aby utworzyć poziom dostępu, który ogranicza dostęp według adresu IP:

  1. W konsoli Google Cloud otwórz stronę Menedżera kontekstu dostępu.
    • Jeśli pojawi się taka prośba, wybierz folder codelab-folder.
  2. U góry strony Menedżer kontekstu dostępu kliknij UTWÓRZ POZIOM DOSTĘPU.
  3. W panelu Nowy poziom dostępu nadaj nowemu poziomowi dostępu nazwę. Na potrzeby tego ćwiczenia nazwijmy je project_2_al.
  4. W sekcji Warunki kliknij + przed Podsieci IP.
  5. W polu Podsieci IP wybierz Publiczny adres IP.

Dodawanie poziomu dostępu w regule dla ruchu przychodzącego

W regułach ingress poziom dostępu jest wskazywany w polu sources, które jest wymagane (jak opisano w przewodniku po regułach ingress). Aby zezwolić na dostęp do zasobów, Ustawienia usługi VPC oceniają atrybuty sources i identityType jako warunek AND. Reguła przychodząca używa tożsamości podmiotu wywołującego ręcznie transfer danych, a nie konta usługi określonego w konfiguracji transferu danych.

Reguła ruchu przychodzącego skonfigurowana z poziomem dostępu.

Ponownie uruchom przenoszenie z konfiguracjami ograniczającymi dostęp według adresu IP

Aby ocenić skuteczność zastosowanych konfiguracji, ponownie uruchom przeniesienie, korzystając z tych scenariuszy:

  • używając adresu IP z zakresu dozwolonego na poziomie dostępu, do którego odwołuje się reguła ruchu przychodzącego.
  • korzystanie z adresu IP, który nie jest dozwolony przez konfigurację;

Dostęp z dozwolonego adresu IP powinien się powieść, a z niedozwolonego adresu IP powinien się nie udać i powodować naruszenie ustawień usługi VPC.

Jednym z najprostszych sposobów przetestowania innego adresu IP jest zezwolenie na adres IP przypisany podczas korzystania z konsoli Google Cloud, a następnie przetestowanie go za pomocą Cloud Shell.

Aby ręcznie wywołać przenoszenie, uruchom w Cloud Shell to polecenie, zastępując zarówno RUN_TIME, jak i RESOURCE_NAME:

bq mk \
  --transfer_run \
  --run_time='RUN_TIME' \
  RESOURCE_NAME

Na przykład poniższe przykładowe polecenie jest natychmiast wykonywane w przypadku konfiguracji transferu 12345678-90ab-cdef-ghij-klmnopqrstuv w projekcie 1234567890.

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ");
bq mk \
  --transfer_run \
  --run_time=$NOW \
  projects/1234567890/locations/us/transferConfigs/12345678-90ab-cdef-ghij-klmnopqrstuv

Zgodnie z oczekiwaniami, ponieważ adres IP jest niedozwolony, obserwowane dane wyjściowe wskazują na naruszenie ustawień usługi VPC.

Naruszenie zasad VPC SC z nieautoryzowanego adresu IP.

Zauważone naruszenie dotyczy metody DataTransferService.StartManualTransferRuns.

ingressViolations: [
0: {
servicePerimeter: "accessPolicies/987654321/servicePerimeters/perimeter-2"
targetResource: "projects/[PROJECT2_NUMBER]"
targetResourcePermissions: [0: "vpcsc.permissions.unavailable"]
}]
violationReason: "RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER"
resource: {
labels: {
method: "google.cloud.bigquery.datatransfer.v1.DataTransferService.StartManualTransferRuns"
project_id: "project-2"
service: "bigquerydatatransfer.googleapis.com"
}
type: "audited_resource"
}
severity: "ERROR"

5. Rozpoczynanie przenoszenia danych przy jednoczesnym ochronie usługi Cloud Storage

Ponieważ wykonujemy przenoszenie z Cloud Storage do BigQuery, dodajmy Cloud Storage do usług chronionych przez Ustawienia usługi VPC i sprawdźmy, czy przenoszenie nadal się powiedzie.

W konfiguracji perimeter-2 dodaj Cloud Storage API jako jedną z usług objętych ograniczeniami, obok BigQuery Data Transfer API.

Konfiguracje VPC SC chroniące Cloud Storage.

Po zabezpieczeniu interfejsu Cloud Storage API poczekaj na następne zaplanowane przeniesienie danych lub ręcznie wywołaj przeniesienie, wykonując te czynności:

  1. Otwórz stronę BigQuery w konsoli Google Cloud.
  2. Kliknij Przeniesienie danych.
  3. Wybierz na liście transfer: w tym przypadku używamy transferu Codelab.
  4. Kliknij Uruchom przeniesienie teraz.
  5. Kliknij OK.

Rozpoczniemy kolejne przenoszenie. Aby wyświetlić ten przycisk, może być konieczne odświeżenie strony. Tym razem przeniesienie nie powiedzie się z powodu naruszenia ustawień usługi VPC.

Naruszenie zasad VPC dotyczące kopiowania zbioru danych BigQuery.

Badanie naruszenia ustawień usługi VPC Cloud Storage

Filtruj dzienniki kontrolne za pomocą vpcServiceControlsUniqueIdentifier widocznego w podsumowaniu przeniesienia.

Zaobserwowane naruszenie to naruszenie zasad dotyczące wylotu z RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER o tych szczegółach:

  • Podmiot zabezpieczeń to konto usługi skonfigurowane w usłudze transferu danych (czy uruchamiane ręcznie, czy uruchamiane zgodnie z harmonogramem, odmowa dostępu będzie taka sama).
  • Usługa, której dotyczy problem, to Cloud Storage
  • Źródłem żądania jest projekt, w którym skonfigurowano usługę przesyłania danych: project-2
  • Projekt docelowy to projekt, w którym znajduje się obiekt Cloud Storage: project-1
principalEmail: "codelab-sa@project-2.iam.gserviceaccount.com"
egressViolations: [
0: {
servicePerimeter: "accessPolicies/987654321/servicePerimeters/perimeter-2"
source: "projects/[PROJECT2_NUMBER]"
sourceType: "Resource"
targetResource: "projects/[PROJECT1_NUMBER]"
targetResourcePermissions: [0: "storage.objects.get"]
}]
labels: {
method: "google.storage.objects.get"
project_id: "project-2"
service: "storage.googleapis.com"
}

Naprawianie naruszenia związanego z wychodzącym ruchem w Cloud Storage

Aby naprawić naruszenie zasad dotyczących wychodzącego ruchu sieciowego, musimy użyć reguły wychodzącego ruchu sieciowego, która zezwala na ruch z konta usługi z odmową dostępu do projektu z obiektmi Cloud Storage.

Reguła wychodząca zezwalająca na dostęp do konta usługi codelab.

Po zmodyfikowaniu obszaru działania usługi perimeter-2 powtórz proces, aby ponownie uruchomić przenoszenie. Podczas przenoszenia nie pojawi się błąd.

Szczegóły uruchomień przenoszenia danych po skonfigurowaniu reguły dla ruchu wychodzącego.

6. Kopiowanie zbioru danych BigQuery z projektu project-2 do projektu project-1

Po potwierdzeniu, że możemy przenieść dane z zasonika Cloud Storage w project-1 do zbioru danych BigQuery w project-2, spróbujmy skopiować zbiór danych BigQueryproject-2 do project-1. Interfejs BigQuery API jest chroniony przez ustawienia usługi VPC.

Aby utworzyć i skopiować zbiór danych, użyjemy polecenia bq mk, które korzysta z narzędzia bq.

Tworzenie docelowego zbioru danych w usłudze project-1

Zanim skopiujesz zbiór danych, musisz najpierw utworzyć zbiór danych docelowy. Aby utworzyć zbiór danych docelowy, uruchom poniższe polecenie, które tworzy zbiór danych o nazwie copied_dataset w projekcie project-1 w lokalizacji us.

bq mk \
  --dataset \
  --location=us \
  project-1:copied_dataset

Zabezpieczanie usługi BigQuery w project-2 za pomocą ustawień usługi VPC

Zmodyfikuj konfigurację obwodu perimeter-2 i dodaj BigQuery API jako usługę chronioną wraz z usługami BigQuery Data Transfer i Cloud Storage.

VPC SC skonfigurowany w celu ochrony interfejsu Cloud Storage API.

Rozpocznij kopiowanie zbioru danych

Aby skopiować zbiór danych, uruchom to polecenie bq mk, które kopiuje zbiór danych codelab_bqtransfer_dataset z projektu project-2 do zbioru danych copied_dataset w projekcie project-1, a także zastępuje zawartość zbioru danych, jeśli taka istnieje.

bq mk \
  --transfer_config \
  --project_id=project-1 \
  --target_dataset=copied_dataset \
  --data_source=cross_region_copy \
  --display_name='Dataset from project-2 to project-1' \
  --params='{
     "source_dataset_id":"codelab_bqtransfer_dataset",
     "source_project_id":"project-2",
     "overwrite_destination_table":"true"
     }'

Polecenie zostanie wykonane, a konfiguracja transferu zostanie utworzona, aby rozpocząć kopiowanie zbioru danych. Skopiowanie samego zbioru danych spowoduje naruszenie ustawień usługi VPC.

Aby znaleźć odpowiednie szczegóły naruszenia ustawień usługi VPC, sprawdź logi w project-2 (projekt źródłowego zbioru danych) za pomocą tego zapytania do logów. Zapytanie dotyczące logów filtruje logi według usługi BigQuery i nazwy zasobu zbioru danych, który jest kopiowany (codelab_bqtransfer_dataset).

resource.labels.service="bigquery.googleapis.com"
protoPayload.metadata.resourceNames:"datasets/codelab_bqtransfer_dataset"

Zaobserwowane naruszenie ustawień usługi VPC to naruszenie wychodzące z project-2 do project-1.

egressViolations: [
  0: {
   servicePerimeter: "accessPolicies/987654321/servicePerimeters/perimeter-2"
   source: "projects/[PROJECT-2-NUMBER]"
   sourceType: "Resource"
   targetResource: "projects/[PROJECT-1-NUMBER]"
   targetResourcePermissions: [
     0: "bigquery.transfers.update"
     1: "bigquery.transfers.get"
     2: "bigquery.jobs.create"
     ]
   }
]
method: "bigquery.tables.getData"
service: "bigquery.googleapis.com"

Napraw wszystkie naruszenia zasad BigQuery i ponownie uruchom kopiowanie zbioru danych

Aby naprawić naruszenie zasad dotyczące ruchu wychodzącego, musimy utworzyć regułę ruchu wychodzącego, która zezwala na odmowę zasady. Odmowa dostępu dotyczy podmiotu wykonującego polecenie mk.

reguła wyjścia, która zezwala na dostęp do wszystkich metod BigQuery;

Po utworzeniu reguły wyjścia na obwodzie perimeter-2 uruchom to samo polecenie, aby skopiować zbiór danych. Tym razem kopiowanie zbioru danych powinno się udać bez naruszenia ustawień usługi VPC.

7. Czyszczenie

Chociaż nie ma osobnych opłat za korzystanie z Ustawień usługi VPC, gdy usługa nie jest używana, zalecamy uporządkowanie konfiguracji używanej w tym laboratorium. Możesz też usunąć instancję maszyny wirtualnej lub projekty Cloud, aby uniknąć opłat. Usunięcie projektu Google Cloud powoduje zaprzestanie naliczania opłat za wszystkie zasoby używane w ramach tego projektu.

  • Aby usunąć zasobnik Cloud Storage, wykonaj te czynności:
    • W konsoli Google Cloud otwórz stronę Zasobniki Cloud Storage.
    • Zaznacz pole wyboru zasobnika, który chcesz usunąć, a następnie kliknij Usuń.
    • W oknie nakładki, które się pojawi, potwierdź, że chcesz usunąć zasobnik i jego zawartość. Usunięcie zasobnika Cloud Storage.
  • Aby usunąć zbiór danych BigQuery, wykonaj te czynności:
    • W konsoli Google Cloud otwórz stronę BigQuery.
    • W panelu Eksplorator rozwiń projekt i wybierz zbiór danych.
    • Rozwiń menu z 3 kropkami i kliknij Usuń.
    • W oknie Usuń zbiór danych wpisz delete w polu, a następnie kliknij Usuń. usunięcie zbioru danych BigQuery,
  • Aby usunąć granicę usług, wykonaj te czynności:
    • W konsoli Google Cloud wybierz Bezpieczeństwo, a następnie Ustawienia usługi VPC na poziomie, na którym określono zakres polityki dostępu, w tym przypadku na poziomie folderu.
    • Na stronie Ustawienia usługi VPC w wierszu tabeli odpowiadającym granicy, którą chcesz usunąć, kliknij Delete Icon.
  • Aby usunąć poziom dostępu, wykonaj te czynności:
    • W konsoli Google Cloud otwórz stronę Menedżer kontekstu dostępu w zakresie folderu.
    • W siatce znajdź wiersz poziomu dostępu, który chcesz usunąć, kliknij menu z 3 kropkami, a następnie wybierz Usuń.
  • Aby zatrzymać projekty, wykonaj te czynności:
    • W konsoli Google Cloud otwórz stronę Ustawienia w obszarze Administracja projektu, który chcesz usunąć.
    • Na stronie Ustawienia administracyjne i uprawnienia kliknij Wyłącz.
    • Wpisz identyfikator projektu i wybierz Wyłącz mimo to.

8. Gratulacje!

W tym ćwiczeniu w języku Python utworzysz i wdrożysz granicę Ustawień usługi VPC, a potem rozwiążesz problemy z jej działaniem.

Więcej informacji

Możesz też sprawdzić te scenariusze:

  • Dodaj project-1 w innej granicy, która chroni również BigQuery, BigQuery Data Transfer Service i Cloud Storage.
  • Przeprowadzanie transferu danych do BigQuery z innych obsługiwanych źródeł.
  • Ograniczać dostęp użytkowników na podstawie innych atrybutów, takich jak lokalizacja czy zasady dotyczące urządzenia.

Licencja

To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.