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ż:
- Jak utworzyć folder
- Jak utworzyć projekt w folderze lub przenieść istniejący projekt do folderu
- Jak utworzyć ograniczoną zasadę dostępu
- Jak utworzyć i skonfigurować granicę usługi w konsoli Google Cloud
- Jak znaleźć dzienniki naruszeń w dzienniku kontrolnym
Konfiguracja
Nasz początkowy proces konfiguracji wygląda tak:
- Organizacja Google Cloud.
- Folder w organizacji. W tym ćwiczeniu nazwiemy go
codelab-folder. - 2 projekty Google Cloud w folderze
codelab-folder. W tym ćwiczeniu projekty nazywamyproject-1iproject-2.- Jeśli nie masz jeszcze utworzonego folderu ani projektów, w konsoli Google Cloud utwórz folder w organizacji i utwórz 2 nowe projekty.
- Wymagane uprawnienia: role uprawnień do zarządzania folderami, role uprawnień do zarządzania projektami, role uprawnień wymagane do konfigurowania ustawień usługi VPC, role uprawnień do zarządzania BigQuery oraz role uprawnień do zarządzania Cloud Storage.
- Konto rozliczeniowe dla obu projektów:
project-1iproject-2.
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.
- Utwórz ograniczoną zasadę dostępu, 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ę, nazwijmy ją
perimeter-2, i dodaj projektproject-2.
Na obwodzie perimeter-2 ogranicz BigQuery Data Transfer API.

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 lokalizacji i Lokalizacja, w której dane zasobnika będą przechowywane na stałe. W tym ćwiczeniu użyjemy us (wiele regionów w Stanach Zjednoczonych).

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

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
- Utwórz zbiór danych BigQuery w projekcie
project-2, wykonując te czynności.- W polu Identyfikator zbioru danych wpisz wyjątkową nazwę zbioru danych. W tym ćwiczeniu używamy:
codelab_bqtransfer_dataset. - 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).

- W polu Identyfikator zbioru danych wpisz wyjątkową nazwę zbioru danych. W tym ćwiczeniu używamy:
- Utwórz tabelę BigQuery w ramach utworzonego zbioru 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 Tabela wpisz nazwę tabeli, którą chcesz utworzyć. W tym ćwiczeniu używamy nazwy
codelab-bqtransfer-table. - Sprawdź, czy pole Typ tabeli ma wartość Tabela natywnych.
- 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 Service w project-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:
- Otwórz stronę BigQuery w konsoli Google Cloud w
project-2. - Kliknij Przeniesienie 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.

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:
- Kliknij + Utwórz przeniesienie.
- 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ć Rozpocznij teraz. W przeciwnym razie transfer danych rozpocznie się dopiero po skonfigurowaniu Częstotliwości powtarzania.
- W sekcji Ustawienia zbioru docelowego jako Docelowy zbiór danych wybierz zbiór 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 użyjemy tabeli utworzonej wcześniej:
codelab-bqtransfer-table - 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 - W sekcji Sposób zapisu pozostaw wartość
APPEND(lub wybierzMIRROR). - 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.
- W sekcji Format pliku wybierz CSV.
- W sekcji Opcje przenoszenia, w sekcji 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 użyjemy tabeli utworzonej wcześniej:
- W menu Konto usługi wybierz konto usługi spośród kont usługi 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, jak i w
project-1w tym Codelab. - W tym laboratorium kodu 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, jak i w
- 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:
- Otwórz stronę BigQuery w konsoli Google Cloud.
- Kliknij Przeniesienie danych.
- Wyświetla się lista skonfigurowanych transferów.

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

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.
Ten diagram przedstawia dostęp zainicjowany przez 2 podmioty (
user@example.com i user2@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.
- 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.
- 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.
- 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:
- W konsoli Google Cloud otwórz stronę Menedżera kontekstu dostępu.
- 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ę. Na potrzeby tego ćwiczenia nazwijmy je
project_2_al. - W sekcji Warunki kliknij + przed Podsieci IP.
- W polu Podsieci IP wybierz Publiczny adres IP.
- Możesz też wybrać opcję Prywatny adres IP, aby użyć wewnętrznego adresu IP w poziomach dostępu. W tym przypadku używamy jednak publicznego adresu IP.
- Wpisz co najmniej 1 zakres IPv4 lub IPv6 w postaci bloków CIDR.
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.

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.

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.

Po zabezpieczeniu interfejsu Cloud Storage API poczekaj na następne zaplanowane przeniesienie danych lub ręcznie wywołaj przeniesienie, wykonując te czynności:
- Otwórz stronę BigQuery w konsoli Google Cloud.
- Kliknij Przeniesienie danych.
- Wybierz na liście transfer: w tym przypadku używamy transferu Codelab.
- Kliknij Uruchom przeniesienie teraz.
- 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.

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.

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

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 BigQuery z project-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.

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.

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ść.

- 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
deletew polu, a następnie kliknij Usuń.
- 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-1w 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.