1. Wprowadzenie
W tym ćwiczeniu dowiesz się, jak chronić BigQuery Data Transfer Service za pomocą Ustawień usługi VPC podczas przesyłania danych z Cloud Storage do zbioru danych BigQuery. Następnie chronimy Cloud Storage i powtarzamy proces, aby przenieść dane z Cloud Storage do BigQuery. Ochrona Cloud Storage powoduje naruszenie ustawień usługi VPC, które należy naprawić, aby przenieść dane. 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 laboratorium pokażemy, jak naprawiać naruszenia dotyczące ruchu przychodzącego i wychodzącego za pomocą odpowiednich reguł ruchu przychodzącego i wychodzącego. Użyjemy też poziomu dostępu, aby naprawić naruszenie reguł dotyczących ruchu przychodzącego BigQuery Przenoszenie danych. Cele tych ćwiczeń to:
- Dowiedz się, jak rozwiązywać problemy z naruszeniami zasad dotyczących ruchu przychodzącego i wychodzącego za pomocą odpowiednich reguł w różnych usługach, w tym Cloud Storage, BigQuery i BigQuery Data Transfer Service.
- Dowiedz się, dlaczego doszło do konkretnego naruszenia.
2. Konfiguracja i wymagania dotyczące zasobów
Zanim zaczniesz
W tym ćwiczeniu zakładamy, że znasz już:
- Jak utworzyć folder
- Jak utworzyć projekt w folderze lub przenieść istniejący projekt do folderu
- Jak utworzyć zasadę dostępu o ograniczonym zakresie
- Jak utworzyć i skonfigurować granicę usług w konsoli Google Cloud
- Jak znaleźć logi naruszeń w logach kontrolnych
Konfiguracja
Nasza konfiguracja początkowa wygląda tak:
- organizację Google Cloud;
- Folder w organizacji. W tym ćwiczeniu będziemy go nazywać
codelab-folder. - 2 projekty Google Cloud w folderze
codelab-folder. W tym ćwiczeniu nazywamy projektyproject-1iproject-2.- Jeśli nie masz jeszcze utworzonego folderu i projektów, w konsoli Google Cloud utwórz folder w organizacji i utwórz 2 nowe projekty.
- Wymagane uprawnienia: role IAM do zarządzania folderami, role IAM do zarządzania projektami, role IAM wymagane do konfigurowania Ustawień usługi VPC, role IAM do zarządzania BigQuery i role IAM do zarządzania Cloud Storage.
- Konto rozliczeniowe dla projektów
project-1iproject-2.
Tworzenie zasady o ograniczonym zakresie i standardowej granicy usług
W tym ćwiczeniu użyjemy standardowej granicy usług chroniącej project-2.
- Utwórz zasadę dostępu o ograniczonym zakresie, która jest ograniczona do poziomu folderu
codelab-folder. W tym ćwiczeniu zakładamy, że utworzona zasada dostępu ma identyfikator987654321. - Utwórz zwykłą granicę, nazwij ją
perimeter-2i dodaj do niej projektproject-2.
W granicy perimeter-2 ogranicz BigQuery Data Transfer API.

Tworzenie zasobnika Cloud Storage i zbioru danych BigQuery
Na potrzeby tego ćwiczenia wystarczy dowolny plik CSV, niezależnie od jego zawartości. Główne ograniczenie dotyczy wymogu kolokacji, który wymusza:
- Jeśli Twój zbiór danych BigQuery znajduje się w wielu regionach, zasobnik Cloud Storage zawierający przenoszone dane musi znajdować się w wielu regionach lub w lokalizacji, która jest częścią tego regionu.
- Jeśli Twój zbiór danych znajduje się w regionie, zasobnik Cloud Storage musi być w tym samym regionie.
W tym ćwiczeniu będziemy dbać o to, aby zasobnik Cloud Storage i zbiór danych BigQuery znajdowały się w tym samym regionie lub w regionie obejmującym wiele lokalizacji.
Tworzenie nowego zasobnika Cloud Storage w projekcie project-1
Aby utworzyć nowy zasobnik Cloud Storage, wykonaj czynności opisane w tym artykule.
- Wpisz nazwę zasobnika, która spełnia wymagania dotyczące nazw zasobników. W tym ćwiczeniu będziemy nazywać zasobnik
codelab-bqtransfer-bucket. - W przypadku miejsca przechowywania danych, czyli lokalizacji zasobnika, wybierz Typ lokalizacji i Lokalizację, w której dane zasobnika będą przechowywane na stałe. W tym ćwiczeniu użyjemy opcji us (wiele regionów w Stanach Zjednoczonych).

Tworzenie pliku CSV
Na komputerze lokalnym lub w Cloud Shell możemy 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

Możesz sprawdzić, czy plik został przesłany do utworzonego zasobnika, wyświetlając listę obiektów w zasobniku lub uruchamiając to polecenie:
gcloud storage ls --recursive gs://codelab-bqtransfer-bucket/**
Utworzenie zbioru danych i tabeli BigQuery w project-2
- Utwórz zbiór danych BigQuery w projekcie
project-2, wykonując te czynności.- W polu Identyfikator zbioru danych wpisz unikalną nazwę zbioru danych. W tym ćwiczeniu z programowania używamy:
codelab_bqtransfer_dataset. - W sekcji Typ lokalizacji wybierz lokalizację geograficzną zbioru danych. W tym ćwiczeniu używamy tej samej lokalizacji co zasobnik Cloud Storage: US (wiele regionów w Stanach Zjednoczonych).

- W polu Identyfikator zbioru danych wpisz unikalną nazwę zbioru danych. W tym ćwiczeniu z programowania używamy:
- Utwórz tabelę BigQuery w utworzonym zbiorze danych
codelab_bqtransfer_dataset, wykonując te czynności.- W sekcji Źródło na liście Utwórz tabelę z wybierz Pusta tabela.
- W polu Table (Tabela) wpisz nazwę tabeli, którą chcesz utworzyć. W tym ćwiczeniu z programowania używamy nazwy:
codelab-bqtransfer-table. - Sprawdź, czy w polu Typ tabeli jest ustawiona wartość Tabela natywna.
- W sekcji Schemat wpisz definicję schematu. Informacje o schemacie możesz wprowadzić, klikając Edytuj jako tekst i wpisując ten schemat, który jest 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ć płatności w projektach project-2 i project-1. Zalecamy wyłączenie używanych zasobów, aby uniknąć naliczania opłat po zakończeniu tego samouczka.
Zasobami, które generują koszty, są BigQuery i Cloud Storage. Szacunkowy koszt znajdziesz w kalkulatorze cen BigQuery i kalkulatorze Cloud Storage.
3. Konfigurowanie przenoszenia danych z obiektu Cloud Storage do tabeli BigQuery
Teraz spróbujemy utworzyć usługę przenoszenia danych (w project-2), aby przenosić dane z Cloud Storage (w project-1) do BigQuery (w project-2), przy czym usługa BigQuery Data Transfer Service w project-2 będzie chroniona przez ustawienia usługi VPC. Ochrona tylko BigQuery Data Transfer Service (bez ochrony BigQuery i Cloud Storage) ogranicza uprawnienia podmiotów zabezpieczeń do tworzenia transferów danych i zarządzania nimi (np. ręcznego rozpoczynania transferu danych).
Konfigurowanie przesyłania danych z Cloud Storage
Aby utworzyć przesyłanie danych, wykonaj te czynności:
- Otwórz stronę BigQuery w konsoli Google Cloud w
project-2. - Kliknij Przenoszenie danych.

Sprawdzanie naruszenia podczas uzyskiwania dostępu do strony Przenoszenie danych
W konsoli Google Cloud możemy zobaczyć unikalny identyfikator ustawień usługi VPC. Użyj tego samego identyfikatora, aby filtrować logi i identyfikować szczegóły naruszenia (zastąp OBSERVED_VPCSC_DENIAL_UNIQUE_ID zaobserwowanym identyfikatorem odmowy):
protoPayload.metadata.@type="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
protoPayload.metadata.vpcServiceControlsUniqueId="OBSERVED_VPCSC_DENIAL_UNIQUE_ID"
Wykryte naruszenie to NO_MATCHING_ACCESS_LEVEL, czyli naruszenie związane z ruchem przychodzącym, o szczegółach podobnych 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"
}
Dostęp do strony Przesyłanie danych powoduje próbę wyświetlenia listy skonfigurowanych transferów danych, co stanowi naruszenie metody ListTransferConfigs.
Naprawianie naruszenia w usłudze bigquerydatatransfer.googleapis.com
Aby naprawić naruszenie zasad dotyczących ruchu przychodzącego, możesz użyć poziomu dostępu lub reguły dotyczącej ruchu przychodzącego. W tym ćwiczeniu użyjemy reguły ruchu przychodzącego skonfigurowanej z odrzuconą tożsamością użytkownika, która umożliwia dostęp do usługi bigquerydatatransfer.googleapis.com i wszystkich metod.

Po utworzeniu reguły ruchu przychodzącego dostęp do strony Przesyłanie danych powinien działać bez problemów.
Wznawianie konfiguracji przesyłania danych z Cloud Storage
Po wykonaniu poprzednich kroków na stronie Przesyłanie danych (po kliknięciu Przesyłanie danych) wykonaj te czynności:
- Kliknij + Utwórz przelew.
- W sekcji Typ źródła w polu Źródło wybierz Google Cloud Storage.
- W sekcji Nazwa konfiguracji transferu w polu Wyświetlana nazwa wpisz nazwę transferu, np.
Codelab Transfer. - W sekcji Opcje planowania:
- Wybierz Częstotliwość powtarzania, np. 15 minut.
- Pamiętaj, aby wybrać Zacznij teraz. W przeciwnym razie przesyłanie danych rozpocznie się dopiero po skonfigurowaniu Częstotliwości powtarzania.
- W sekcji Ustawienia zbioru docelowego jako Docelowy zbiór danych wybierz zbiór danych utworzony na potrzeby przechowywania danych:
codelab_bqtransfer_dataset - W sekcji Szczegóły źródła danych:
- W polu Tabela docelowa wpisz nazwę tabeli docelowej. Nazwa tabeli docelowej musi być zgodna z regułami dotyczącymi nazewnictwa tabel. W tym ćwiczeniu w Codelabs użyjemy utworzonej wcześniej tabeli:
codelab-bqtransfer-table - W polu Identyfikator URI obiektu w Cloud Storage wpisz identyfikator URI obiektu w Cloud Storage. W tym ćwiczeniu użyjemy utworzonego zasobnika i pliku:
codelab-bqtransfer-bucket/codelab-test-file.csv - W sekcji Sposób zapisu pozostaw
APPEND(lub wybierzMIRROR). - NIE wybieraj opcji usuwania plików po przeniesieniu (ponieważ będziemy wielokrotnie używać tego samego pliku). Możesz jednak użyć wielu plików i usunąć pliki źródłowe po przeniesieniu.
- W sekcji Format pliku wybierz CSV.
- W sekcji Opcje przesyłania w obszarze CSV wpisz przecinek („,”) jako Separator pól.
- W polu Tabela docelowa wpisz nazwę tabeli docelowej. Nazwa tabeli docelowej musi być zgodna z regułami dotyczącymi nazewnictwa tabel. W tym ćwiczeniu w Codelabs użyjemy utworzonej wcześniej tabeli:
- W menu Konto usługi wybierz konto usługi spośród kont powiązanych z Twoim projektem Google Cloud
- .
- Wybrane konto usługi musi mieć wymagane uprawnienia zarówno w Cloud Storage w projekcie hostującym zasobnik pamięci masowej, jak i w
project-1w tym ćwiczeniu. - W tym ćwiczeniu użyjemy konta usługi utworzonego w
project-2jakocodelab-sa@project-2.iam.gserviceaccount.com.
- Wybrane konto usługi musi mieć wymagane uprawnienia zarówno w Cloud Storage w projekcie hostującym zasobnik pamięci masowej, jak i w
- Kliknij Zapisz.
Jako opcję harmonogramu wybraliśmy Zacznij teraz, więc po kliknięciu Zapisz rozpocznie się pierwsze przenoszenie.
Sprawdzanie stanu usługi przenoszenia danych
Aby sprawdzić stan skonfigurowanego przenoszenia danych:
- Otwórz stronę BigQuery w konsoli Google Cloud.
- Kliknij Przenoszenie danych.
- Wyświetli się lista skonfigurowanych transferów.

Kliknij Codelab Transfer (w sekcji Nazwa wyświetlana), aby wyświetlić listę wszystkich dotychczasowych przebiegów.

Przenoszenie danych powinno się zakończyć bez naruszenia ustawień usługi VPC zarówno w przypadku przenoszenia wywoływanego ręcznie, jak i zaplanowanego. Pamiętaj, że tylko ręcznie wywoływane przenoszenie wymaga reguły ruchu przychodzącego, która zezwala na dostęp do podmiotu zabezpieczeń inicjującego przenoszenie ręcznie.
4. Ograniczenia adresów IP w przypadku ręcznie wywoływanych transferów danych
Obecnie skonfigurowane reguły ruchu przychodzącego zezwalają skonfigurowanej tożsamości na ręczne wywoływanie przesyłania danych z dowolnego adresu IP.
Dzięki poziomom dostępu ustawienia usługi VPC umożliwiają ograniczenie dozwolonego dostępu według określonych atrybutów żądania do interfejsu API, w szczególności:
- 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 geolokalizacji adresu IP.
- Podmioty: sprawdza, czy żądanie pochodzi z określonego konta.
- Zasady dotyczące urządzeń: sprawdzają, czy żądanie pochodzi z urządzenia, które spełnia określone wymagania.
Aby wymusić weryfikację tych atrybutów wraz z już skonfigurowaną regułą ruchu przychodzącego, musimy utworzyć poziom dostępu, który zezwala na żądane atrybuty, a następnie dodać utworzony poziom dostępu jako źródło w regule ruchu przychodzącego.
Ten diagram ilustruje dostęp inicjowany przez 2 podmioty zabezpieczeń (
user@example.com i user2@example.com) w 3 scenariuszach. Pokazuje, jak usługa Ustawienia usługi VPC ocenia źródła (poziom dostępu do ruchu przychodzącego) i atrybuty tożsamości jako warunek AND, w którym oba muszą być zgodne.
- Użytkownik user@example.com ma dozwolony dostęp, gdy próbuje uzyskać dostęp z adresu IP dozwolonego przez poziom dostępu, ponieważ jego adres IP i konto użytkownika pasują do konfiguracji w regule ruchu przychodzącego.
- Użytkownik user@example.com ma zablokowany dostęp, gdy jego adres IP nie pasuje do dozwolonego adresu IP, mimo że jego konto jest skonfigurowane w regule ruchu przychodzącego.
- Użytkownik user2@example.com ma zablokowany dostęp pomimo próby uzyskania dostępu z dozwolonego adresu IP, ponieważ jego konto nie jest dozwolone przez regułę wejścia.
Tworzenie poziomu dostępu
Aby utworzyć poziom dostępu, który ogranicza dostęp według adresu IP:
- Otwórz stronę Menedżer kontekstu dostępu w konsoli Google Cloud.
- Jeśli pojawi się taka prośba, wybierz folder
codelab-folder.
- Jeśli pojawi się taka prośba, wybierz folder
- U góry strony Menedżer kontekstu dostępu kliknij UTWÓRZ POZIOM DOSTĘPU.
- W panelu Nowy poziom dostępu nadaj nowemu poziomowi dostępu nazwę. W tym ćwiczeniu będziemy go nazywać
project_2_al. - W sekcji Warunki kliknij + obok opcji Podsieci IP.
- W polu Podsieci IP wybierz Publiczny adres IP
- .
- Możesz też wybrać opcję Użyj prywatnego adresu IP, aby używać wewnętrznego adresu IP na poziomach dostępu. W tym samouczku używamy jednak publicznego adresu IP.
- Wpisz co najmniej jeden zakres IPv4 lub IPv6 w formacie bloków CIDR.
Dodawanie poziomu dostępu w regule ruchu przychodzącego
W regule ruchu przychodzącego poziom dostępu jest określany w polu sources, które jest polem wymaganym zgodnie z dokumentacją w informacjach o regule ruchu przychodzącego. Aby zezwolić na ruch przychodzący do zasobów, Ustawienia usługi VPC oceniają atrybuty sources i identityType jako warunek AND. Reguła dostępu używa tożsamości podmiotu zabezpieczeń, który ręcznie wywołuje przesyłanie danych, a nie konta usługi określonego w konfiguracji przesyłania danych.

Ponowne uruchomienie przenoszenia z konfiguracjami ograniczającymi dostęp według adresu IP
Aby ocenić skuteczność zastosowanych konfiguracji, ponownie uruchom transfer w tych scenariuszach:
- używając adresu IP z zakresu dozwolonego na poziomie dostępu, do którego odwołuje się reguła ruchu przychodzącego.
- używanie adresu IP nie jest dozwolone w konfiguracjach,
Dostęp z dozwolonych adresów IP powinien być możliwy, a dostęp z niedozwolonych adresów IP powinien być niemożliwy i powodować naruszenie ustawień usługi VPC.
Łatwym sposobem na przetestowanie działania z użyciem innego adresu IP jest zezwolenie na adres IP przypisany podczas korzystania z konsoli Google Cloud, a następnie przetestowanie działania podczas korzystania z Cloud Shell.
W Cloud Shell uruchom to polecenie, aby ręcznie wywołać transfer. Zastąp w nim wartości RUN_TIME i RESOURCE_NAME:
bq mk \
--transfer_run \
--run_time='RUN_TIME' \
RESOURCE_NAME
Na przykład to polecenie zostanie natychmiast uruchomione w przypadku konfiguracji przesyłania 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
Obserwowane dane wyjściowe wskazują naruszenie ustawień usługi VPC, co jest zgodne z oczekiwaniami, ponieważ adres IP jest niedozwolony.

Wykryte 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 jednoczesnej ochronie usługi Cloud Storage
Ponieważ przeprowadzamy transfer z Cloud Storage do BigQuery, dodajmy Cloud Storage do usług chronionych przez Ustawienia usługi VPC i sprawdźmy, czy transfer nadal się powiedzie.
W konfiguracji perimeter-2 dodaj Cloud Storage API jako jedną z usług objętych ograniczeniami wraz z BigQuery Data Transfer API.

Po zabezpieczeniu interfejsu Cloud Storage API poczekaj na następne zaplanowane przesyłanie danych lub ręcznie wywołaj transfer, wykonując te czynności:
- Otwórz stronę BigQuery w konsoli Google Cloud.
- Kliknij Przenoszenie danych.
- Wybierz transfer z listy. W tym samouczku używamy transferu Codelab Transfer.
- Kliknij Uruchom przeniesienie teraz.
- Kliknij OK.
Rozpocznie się kolejne przenoszenie. Aby ją zobaczyć, może być konieczne odświeżenie strony. Tym razem przenoszenie się nie powiedzie z powodu naruszenia ustawień usługi VPC.

Sprawdzanie naruszenia ustawień usługi VPC w Cloud Storage
Filtruj dzienniki kontrolne za pomocą ikony vpcServiceControlsUniqueIdentifier widocznej w podsumowaniu transferu.
Wykryte naruszenie to RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER naruszenie ruchu wychodzącego z tymi szczegółami:
- Podmiot zabezpieczeń to konto usługi skonfigurowane w Data Transfer Service (niezależnie od tego, czy przesyłanie danych zostało uruchomione ręcznie, czy jest uruchamiane zgodnie z harmonogramem, odrzucony podmiot zabezpieczeń będzie taki sam).
- Usługa, której dotyczy problem, to Cloud Storage
- Źródłem żądania jest projekt, w którym skonfigurowano usługę Data Transfer Service:
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 ruchem wychodzącym z Cloud Storage
Aby rozwiązać problem z naruszeniem reguły ruchu wychodzącego, musimy użyć reguły ruchu wychodzącego, która zezwala na ruch z odrzuconego konta usługi do projektu z obiektami Cloud Storage.

Po zmodyfikowaniu granicy usługperimeter-2 powtórz proces, aby ponownie uruchomić przenoszenie. Przeniesienie nie będzie zawierać błędu.

6. Kopiowanie zbioru danych BigQuery z projektu 2 do projektu 1
Po potwierdzeniu, że możemy przenieść dane z zasobnika Cloud Storage w project-1 do zbioru danych BigQuery w project-2, skopiujmy zbiór danych BigQuery z project-2 do project-1, podczas gdy 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 project-1
Przed skopiowaniem zbioru danych należy najpierw utworzyć docelowy zbiór danych. Aby utworzyć docelowy zbiór danych, możemy uruchomić to 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
Ochrona usługi BigQuery w project-2 za pomocą ustawień usługi VPC
Zmodyfikuj konfigurację granicy perimeter-2 i dodaj BigQuery API jako chronioną usługę wraz z usługami BigQuery Data Transfer i Cloud Storage.

Rozpocznij kopiowanie zbioru danych
Aby skopiować zbiór danych, uruchom to polecenie bq mk, które kopiuje zbiór danych codelab_bqtransfer_dataset w projekcie project-2 do zbioru danych copied_dataset w project-1 i nadpisuje 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 uruchomione, a konfiguracja przenoszenia zostanie utworzona. Następnie rozpocznie się operacja kopiowania zbioru danych. Kopiowanie samego zbioru danych nie powiedzie się z powodu naruszenia ustawień usługi VPC.
Aby znaleźć 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 do logów filtruje logi w usłudze BigQuery i nazwę zasobu kopiowanego zbioru danych (codelab_bqtransfer_dataset).
resource.labels.service="bigquery.googleapis.com"
protoPayload.metadata.resourceNames:"datasets/codelab_bqtransfer_dataset"
Wykryte naruszenie ustawień usługi VPC to naruszenie zasad ruchu wychodzącego 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 rozpocznij kopiowanie zbioru danych
Aby naprawić naruszenie zasad ruchu wychodzącego, musimy utworzyć regułę ruchu wychodzącego, która zezwala na dostęp do odrzuconego podmiotu. Podmiot zabezpieczeń, któremu odmówiono dostępu, to ten, który uruchamia polecenie mk.

Gdy reguła ruchu wychodzącego będzie już obowiązywać, na granicy usług 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
Za korzystanie z Ustawień usługi VPC, gdy usługa nie jest używana, nie są naliczane żadne opłaty, ale zalecamy wyczyszczenie konfiguracji użytej w tym laboratorium. Aby uniknąć obciążenia konta opłatami, możesz też usunąć instancję maszyny wirtualnej lub projekty Cloud. Usunięcie projektu w chmurze spowoduje zaprzestanie naliczania opłat za wszystkie zasoby wykorzystywane 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 obok zasobnika, który chcesz usunąć, a następnie kliknij Usuń.
- W wyświetlonym oknie potwierdź, że chcesz usunąć zasobnik i jego zawartość.

- 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 w polu
delete, a potem kliknij Usuń.
- Aby usunąć granicę usług, wykonaj te czynności:
- W konsoli Google Cloud wybierz Zabezpieczenia, a następnie Ustawienia usługi VPC na poziomie, na którym jest określony zakres zasad 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 potem wybierz Usuń.
- Aby zamknąć projekty, wykonaj te czynności:
- W konsoli Google Cloud otwórz stronę Ustawienia w obszarze Administracja projektu, który chcesz usunąć.
- Na stronie Ustawienia w obszarze Administracja kliknij Wyłącz.
- Wpisz identyfikator projektu i kliknij Wyłącz mimo to.
8. Gratulacje!
W tym ćwiczeniu utworzyliśmy granicę Ustawień usługi VPC, wymusiliśmy jej stosowanie i rozwiązaliśmy problemy z nią związane.
Więcej informacji
Możesz też sprawdzić te scenariusze:
- Dodaj
project-1w innej granicy, która chroni też BigQuery, BigQuery Data Transfer Service i Cloud Storage. - Przeprowadź przesyłanie danych BigQuery z innych obsługiwanych źródeł.
- Ogranicz dostęp użytkowników na podstawie innych atrybutów, takich jak lokalizacja lub zasady dotyczące urządzenia.
Licencja
To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.