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-1
iproject-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-1
iproject-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-1
w tym Codelab. - W tym laboratorium kodu użyjemy konta usługi utworzonego w
project-2
jakocodelab-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
delete
w 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-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.