VPC Hizmet Kontrolleri - BigQuery Veri Aktarım Hizmeti Koruması

1. Giriş

Bu laboratuvarda, Cloud Storage'dan BigQuery veri kümesine veri aktarırken VPC Hizmet Kontrolleri'ni kullanarak BigQuery Veri Aktarım Hizmeti'ni nasıl koruyacağımızı öğreneceğiz. Ardından Cloud Storage'ı koruruz ve Cloud Storage'dan BigQuery'ye veri aktarmak için işlemi tekrarlarız. Cloud Storage'ın korunması, başarılı aktarım için düzeltilmesi gereken bir VPC Hizmet Kontrolleri ihlaline neden olur. Son olarak, BigQuery'yi de koruruz ve ardından veri kümesini projeler arasında kopyalamaya çalışırız. Bu da düzeltilmesi gereken bir ihlale neden olur.

Bu laboratuvar boyunca, sırasıyla giriş ve çıkış kurallarını kullanarak hem giriş hem de çıkış ihlallerini nasıl düzelteceğimizi göreceğiz. BigQuery Veri Aktarım Hizmeti giriş ihlalini düzeltmek için de bir erişim düzeyi kullanacağız. Bu codelab'in hedefleri şunlardır:

  • Giriş ve çıkış kurallarını kullanarak farklı hizmetlerde (özellikle Cloud Storage, BigQuery ve BigQuery Veri Aktarım Hizmeti) giriş ve çıkış ihlallerini nasıl düzelteceğinizi öğrenin.
  • Belirli bir ihlalin neden gerçekleştiğini anlama

2. Kaynak kurulumu ve şartları

Başlamadan önce

Bu codelab'de, aşağıdaki konuları bildiğiniz varsayılmaktadır:

Kurulum

İlk kurulumumuz aşağıdaki gibi tasarlanmıştır:

Codelab ilk kurulum şeması

Kapsamlı politika ve normal hizmet çevresi oluşturma

Bu codelab'de, project-2 hizmetini koruyan normal bir hizmet çevresi kullanacağız.

Çevre perimeter-2 içinde BigQuery Data Transfer API kısıtlayın.

Veri Aktarım Hizmeti'ni koruyan VPC SC yapılandırmaları.

Cloud Storage paketi ve BigQuery veri kümesi oluşturma

Bu codelab'de içerikten bağımsız olarak herhangi bir CSV dosyası yeterlidir. Temel sınırlama, birlikte yerleştirme şartıyla ilgilidir. Bu şart şunları zorunlu kılar:

  • BigQuery veri kümeniz çok bölgeli bir bölgedeyse aktardığınız verileri içeren Cloud Storage paketi aynı çok bölgeli bölgede veya çok bölgeli bölge içinde yer alan bir konumda olmalıdır.
  • Veri kümeniz bir bölgedeyse Cloud Storage paketiniz de aynı bölgede olmalıdır.

Bu nedenle, bu codelab'de hem Cloud Storage paketi hem de BigQuery veri kümesinin aynı bölgede veya çoklu bölgede olmasını sağlayacağız.

project-1 projesinde yeni bir Cloud Storage paketi oluşturun.

Yeni bir Cloud Storage paketi oluşturmak için yeni paket oluşturma ile ilgili belgelenmiş adımları uygulayın.

  • Paketin adı için paket adı gereksinimlerini karşılayan bir ad girin. Bu codelab'de, pakete codelab-bqtransfer-bucket adını vereceğiz.
  • Verilerin depolanacağı yer, paket konumu için bir Konum türü ve paket verilerinin kalıcı olarak depolanacağı Konum seçin. Bu codelab'de us (Amerika Birleşik Devletleri'nde birden fazla bölge) seçeneğini kullanacağız.

Cloud Storage oluşturma yapılandırması.

CSV dosyası oluşturma

Yerel makinenizden veya Cloud Shell'i kullanarak aşağıdaki komutlarla örnek bir CSV dosyası (codelab-test-file.csv) oluşturmak için echo komutunu kullanabiliriz:

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;

CSV dosyasını Cloud Storage paketine yükleme

CSV dosyası oluşturulduktan sonra dosya nesnesini oluşturulan pakete yüklemek için aşağıdaki komutu çalıştırın:

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

CSV dosyasını Cloud Storage'a yüklemek için cp komutunu çalıştırın.

Paketteki nesneleri listeleyerek veya aşağıdaki komutu çalıştırarak dosyanın oluşturulan pakete yüklendiğini doğrulayabilirsiniz:

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

project-2 içinde BigQuery veri kümesi ve tablosu oluşturma

  1. Bu adımları uygulayarak project-2 projesinde bir BigQuery veri kümesi oluşturun.
    1. Veri Kümesi Kimliği için benzersiz bir veri kümesi adı girin. Bu codelab'de şunları kullanıyoruz: codelab_bqtransfer_dataset.
    2. Konum türü için veri kümesinin coğrafi konumunu seçin. Bu codelab'de Cloud Storage paketiyle aynı konumu kullanıyoruz: ABD (Amerika Birleşik Devletleri'nde birden fazla bölge). BigQuery veri kümesi oluşturma
  2. Bu adımları uygulayarak oluşturulan veri kümesi codelab_bqtransfer_dataset altında bir BigQuery tablosu oluşturun.
    1. Kaynak bölümündeki Şu kaynaktan tablo oluşturun listesinde Boş tablo'yu seçin.
    2. Tablo alanına oluşturmak istediğiniz tablonun adını girin. Bu codelab'de codelab-bqtransfer-table adını kullanıyoruz.
    3. Tablo türü alanının Yerel tablo olarak ayarlandığını doğrulayın.
    4. Şema bölümüne şema tanımını girin. Metin olarak düzenle'yi tıklayıp oluşturulan CSV dosyasının biçimine uygun olan aşağıdaki şemayı girerek şema bilgilerini girebilirsiniz.
    [{
    "name": "name",
    "type": "STRING",
    "mode": "NULLABLE",
    "description": "The name"
    },
    {
    "name": "age",
    "type": "INTEGER",
    "mode": "NULLABLE",
    "description": "The age"
    }]
    

Maliyet

Cloud kaynaklarını/API'lerini kullanmak için project-2 ve project-1 projelerinde faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'in ötesinde faturalandırmayla karşılaşmamak için kullanılan kaynakları kapatmanızı öneririz.

Maliyete neden olan kaynaklar BigQuery ve Cloud Storage'dır. Tahmini maliyeti BigQuery fiyat hesaplayıcısında ve Cloud Storage hesaplayıcısında bulabilirsiniz.

3. Cloud Storage Nesnesinden BigQuery Tablosuna Veri Aktarımını Yapılandırma

Şimdi, project-2 konumundaki BigQuery Veri Aktarım Hizmeti'ni VPC Hizmet Kontrolleri ile korurken Cloud Storage'dan (project-1 konumunda) BigQuery'ye (project-2 konumunda) veri aktarmak için bir Veri Aktarım Hizmeti (project-2 konumunda) oluşturmayı deneyeceğiz. Yalnızca BigQuery Veri Aktarım Hizmeti'nin korunması (BigQuery ve Cloud Storage'ın korunmaması) asıl kullanıcıların yalnızca veri aktarımları oluşturup yönetmesiyle (ör. veri aktarımını manuel olarak başlatma) sınırlıdır.

Cloud Storage'dan veri aktarımını ayarlama

Veri aktarımı oluşturmak için aşağıdaki adımları uygulayın:

  1. project-2 Google Cloud Console'da BigQuery sayfasına gidin.
  2. Veri transferleri'ni tıklayın.

Veri Aktarım Hizmeti sayfasında VPC Hizmet Kontrolleri ihlali.

Veri aktarımları sayfasına erişirken ihlali inceleme

Google Cloud Console'da VPC Hizmet Kontrolleri'nin benzersiz tanımlayıcısını görebiliriz. Günlükleri filtrelemek ve ihlal ayrıntılarını belirlemek için aynı tanımlayıcıyı kullanın (OBSERVED_VPCSC_DENIAL_UNIQUE_ID yerine gözlemlenen ret kimliğini girin):

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

Gözlemlenen ihlal, aşağıdaki gibi ayrıntılara sahip bir giriş ihlali olan NO_MATCHING_ACCESS_LEVEL ihlalidir:

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"
}

Veri aktarımları sayfasına erişildiğinde, yapılandırılmış tüm veri aktarımları listelenmeye çalışılır. Bu nedenle, ListTransferConfigs yöntemi ihlal edilir.

bigquerydatatransfer.googleapis.com hizmetindeki ihlali düzeltme

Giriş ihlalini düzeltmek için bir erişim düzeyi veya giriş kuralı kullanılabilir. Bu codelab'de, bigquerydatatransfer.googleapis.com hizmetine ve tüm yöntemlere erişime izin veren, reddedilen kullanıcı kimliğiyle yapılandırılmış bir giriş kuralı kullanalım.

Veri aktarım yöntemlerine izin veren giriş kuralı.

Giriş kuralı uygulandıktan sonra Veri aktarımları sayfasına erişim sorunsuz bir şekilde çalışır.

Cloud Storage'dan veri aktarma kurulumuna devam etme

Önceki adımlarda Veri aktarımları sayfasındayken (Veri aktarımları'nı tıkladıktan sonra) aşağıdaki adımlarla devam edin:

  1. + Transfer oluştur'u tıklayın.
  2. Kaynak türü bölümünde, Kaynak için Google Cloud Storage'ı seçin.
  3. Aktarım yapılandırması adı bölümündeki Görünen ad alanına, aktarım için bir ad girin (ör. Codelab Transfer).
  4. Planlama seçenekleri bölümünde:
    1. 15 dakika gibi bir Tekrar sıklığı seçin.
    2. Hemen başlat'ı seçtiğinizden emin olun. Aksi takdirde, veri aktarımı yalnızca yapılandırılan Yinelenme sıklığı'ndan sonra başlar.
  5. Hedef ayarları bölümündeki Hedef veri kümesi için verilerinizi depolamak üzere oluşturduğunuz veri kümesini seçin: codelab_bqtransfer_dataset
  6. Veri kaynağı ayrıntıları bölümünde
    1. Hedef tablo için hedef tablonuzun adını girin. Hedef tablo, tablo adlandırma kurallarına uymalıdır. Bu codelab'de daha önce oluşturduğumuz tabloyu kullanacağız: codelab-bqtransfer-table
    2. Cloud Storage URI için Cloud Storage URI'sını girin. Bu codelab'de, oluşturulan paketi ve dosyayı kullanıyoruz: codelab-bqtransfer-bucket/codelab-test-file.csv
    3. Yazma tercihi için APPEND işaretini koruyun (veya MIRROR işaretini seçin).
    4. Aktarımdan sonra dosyaları silme seçeneğini BELİRLEMEYİN (Çünkü aynı dosyayı birden fazla kez kullanacağız. Ancak, birden fazla dosya kullanabilir ve aktarımdan sonra kaynak dosyaları silebilirsiniz.)
    5. Dosya biçimi için CSV'yi seçin.
    6. Transfer Seçenekleri'nde, CSV bölümünde Alan sınırlayıcı olarak virgül(",") girin.
  7. Hizmet Hesabı menüsünde, Google Cloud projenizle ilişkili hizmet hesapları arasından bir hizmet hesabı seçin.
    1. Seçilen hizmet hesabının, bu codelab'de project-1 depolama paketi barındıran projedeki Cloud Storage için gerekli izinlere sahip olması gerekir.
    2. Bu codelab'de, project-2 içinde oluşturulan bir hizmet hesabını codelab-sa@project-2.iam.gserviceaccount.com olarak kullanacağız.
  8. Kaydet'i tıklayın.

Zamanlama seçeneği olarak Hemen Başlat'ı seçtiğimiz için Kaydet'i seçtiğimiz anda ilk transfer başlar.

Veri aktarımı hizmetinin durumunu doğrulama

Yapılandırılan veri aktarımının durumunu doğrulamak için:

Veri Aktarım Hizmeti işleri.

Codelab Transfer simgesini (Görünen adın altında) tıkladığınızda şimdiye kadar gerçekleştirilen tüm çalıştırmaların listesi gösterilir.

Veri Aktarım Hizmeti çalıştırmalarının ayrıntıları.

Hem manuel olarak tetiklenen hem de planlanan veri aktarımı için veri aktarımı çalıştırması başarılı olmalı ve VPC Hizmet Kontrolleri ihlali olmamalıdır. Yalnızca manuel olarak tetiklenen aktarımda, aktarımı manuel olarak başlatan asıl kullanıcıya erişime izin vermek için giriş kuralı gerekir.

4. Manuel olarak tetiklenen veri aktarımları için IP adresi kısıtlamaları

Mevcut yapılandırılmış giriş kuralları, yapılandırılmış kimliğin herhangi bir IP adresinden veri aktarımını manuel olarak tetiklemesine izin veriyor.

VPC Hizmet Kontrolleri, erişim düzeyi kullanılarak belirli API isteği özelliklerine göre izin verilen erişimi sınırlama olanağı sağlar. Bu özellikler şunlardır:

  • IP alt ağları: İsteğin belirli bir IP adresinden gelip gelmediğini kontrol eder.
  • Bölgeler: İsteğin, IP adresinin coğrafi konumuna göre belirlenen belirli bir bölgeden gelip gelmediğini kontrol eder.
  • Asıl kullanıcılar: İsteğin belirli bir hesaptan gelip gelmediğini kontrol eder.
  • Cihaz politikası: İsteğin, belirli koşulları karşılayan bir cihazdan gelip gelmediğini kontrol eder.

Bu özelliklerin doğrulanmasını, önceden yapılandırılmış giriş kuralıyla birlikte zorunlu kılmak için istenen özelliklere izin veren bir erişim düzeyi oluşturmamız ve ardından oluşturulan erişim düzeyini giriş kuralına kaynak olarak eklememiz gerekir.

Kullanıcı IP adresine göre VPC SC ile korunan erişim Bu diyagramda, iki sorumlu (user@example.com ve user2@example.com) tarafından başlatılan erişim üç senaryoda gösterilmektedir. Bu senaryolarda, VPC Hizmet Kontrolleri'nin kaynakları (giriş erişim düzeyi) ve kimlik özelliklerini nasıl değerlendirdiği gösterilmektedir. Bu değerlendirmede, her ikisinin de eşleşmesi gereken bir VE koşulu kullanılır.

  1. user@example.com kullanıcısı, erişim düzeyinin izin verdiği bir IP adresinden erişmeye çalıştığında IP adresi ve kullanıcı hesabı, giriş kuralındaki yapılandırmalarla eşleştiği için erişime izin verilir.
  2. user@example.com kullanıcısının IP adresi, giriş kuralında yapılandırılan hesap olmasına rağmen izin verilen IP adresiyle eşleşmediği için erişimi engelleniyor.
  3. user2@example.com kullanıcısı, izin verilen bir IP adresinden erişmeye çalışmasına rağmen hesabı giriş kuralı tarafından engellendiği için erişimi engelleniyor.

Erişim düzeyi oluşturma

Erişimi IP adresine göre sınırlayan bir erişim düzeyi oluşturmak için:

  1. Google Cloud Console'da Bağlam Erişim Yöneticisi sayfasını açın.
    • İstenirse codelab-folder klasörünü seçin.
  2. Bağlam Erişim Yöneticisi sayfasının üst kısmında CREATE ACCESS LEVEL'ı (Erişim düzeyi oluştur) tıklayın.
  3. Yeni Erişim Düzeyi bölmesinde, yeni erişim düzeyine bir Başlık verin. Bu codelab'de project_2_al olarak adlandıracağız.
  4. Koşullar bölümünde, IP alt ağları'nın önündeki + simgesini tıklayın.
  5. IP Alt Ağları kutusunda Genel IP'yi seçin.

Giriş kuralına erişim düzeyi ekleme

Giriş kuralında, erişim düzeyi giriş kuralı referansında belgelendiği gibi zorunlu bir alan olan sources alanında referans alınır. VPC Hizmet Kontrolleri, kaynaklara girişe izin vermek için sources ve identityType özelliklerini AND koşulu olarak değerlendirir. Giriş kuralı, veri aktarımını manuel olarak tetikleyen asıl öğenin kimliğini kullanır. Veri aktarımı yapılandırmasında belirtilen hizmet hesabını kullanmaz.

Erişim düzeyiyle yapılandırılmış giriş kuralı.

Erişimi IP adresine göre sınırlayan yapılandırmalarla aktarımı yeniden çalıştırma

Uygulanan yapılandırmaların etkinliğini değerlendirmek için aşağıdaki senaryoları kullanarak aktarımı tekrar tetikleyin:

  • Giriş kuralı tarafından referans verilen erişim düzeyinde izin verilen aralıktaki IP adresini kullanarak.
  • yapılandırmaların izin vermediği bir IP adresi kullanılıyorsa

İzin verilen IP adreslerinden erişim başarılı olmalı, izin verilmeyen IP adreslerinden erişim ise başarısız olmalı ve VPC Hizmet Kontrolleri ihlaline neden olmalıdır.

Farklı bir IP adresi kullanarak test etmenin kolay bir yolu, Google Cloud Console'u kullanırken atanan IP adresine izin vermek ve ardından Cloud Shell'i kullanırken test etmektir.

Cloud Shell'de, hem RUN_TIME hem de RESOURCE_NAME yerine kendi değerlerinizi girerek aktarımı manuel olarak tetiklemek için aşağıdaki komutu çalıştırın:

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

Örneğin, aşağıdaki örnek komut, 1234567890 projesindeki bir 12345678-90ab-cdef-ghij-klmnopqrstuv yapılandırması için hemen çalıştırılır.

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

Gözlemlenen çıkışta, IP adresine izin verilmediğinden beklendiği gibi bir VPC Hizmet Kontrolleri ihlali gösteriliyor.

İzin verilmeyen IP adresinden VPC SC ihlali.

Gözlemlenen ihlal, DataTransferService.StartManualTransferRuns yönteminde.

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. Cloud Storage hizmetini korurken veri aktarımını başlatma

Cloud Storage'dan BigQuery'ye aktarım yaptığımız için VPC Hizmet Kontrolleri ile korunan hizmetler arasına Cloud Storage'ı ekleyelim ve aktarımın başarılı olup olmadığını kontrol edelim.

perimeter-2 yapılandırmasında, Cloud Storage API'yi BigQuery Data Transfer API ile birlikte Kısıtlanmış Hizmetler'den biri olarak ekleyin.

Cloud Storage'ı koruyan VPC SC yapılandırmaları.

Cloud Storage API'yi güvenli hale getirdikten sonra, bir sonraki planlanmış veri aktarımını bekleyin veya aşağıdaki adımları uygulayarak aktarımı manuel olarak tetikleyin:

  1. Google Cloud Console'da BigQuery sayfasına gidin.
  2. Veri transferleri'ni tıklayın.
  3. Listeden transferinizi seçin: Bu codelab'de Codelab Transferi transferi kullanılmaktadır.
  4. Aktarımı şimdi çalıştır'ı tıklayın.
  5. Tamam'ı tıklayın.

Başka bir aktarım başlatılır. Bu seçeneği görmek için sayfayı yenilemeniz gerekebilir. Bu kez aktarım, VPC Hizmet Kontrolleri ihlali nedeniyle başarısız olur.

BigQuery veri kümesi kopyalanırken VPC SC ihlali.

Cloud Storage VPC Hizmet Kontrolleri ihlalini inceleme

Aktarım Özetinde gösterildiği gibi vpcServiceControlsUniqueIdentifier kullanarak denetleme günlüklerini filtreleyin.

Gözlemlenen ihlal, aşağıdaki ayrıntılara sahip bir RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER çıkış ihlalidir:

  • Asıl, Veri Aktarımı Hizmeti'nde yapılandırılan hizmet hesabıdır (manuel olarak tetiklenmiş veya planlanmış veri aktarımı çalıştırılmış olsun, reddedilen asıl aynı olacaktır).
  • Etkilenen hizmet Cloud Storage
  • İsteğin kaynağı, Veri Aktarımı Hizmeti'nin yapılandırıldığı projedir: project-2
  • Hedef proje, Cloud Storage nesnesinin bulunduğu projedir: 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"
}

Cloud Storage çıkış ihlalini düzeltme

Çıkış ihlalini düzeltmek için, reddedilen hizmet hesabından Cloud Storage nesneleri içeren projeye trafik akışına izin veren bir çıkış kuralı kullanmamız gerekir.

Codelab hizmet hesabına izin veren çıkış kuralı.

Hizmet çevresini değiştirdikten sonra perimeter-2, aktarımı tekrar tetiklemek için işlemi tekrarlayın. Aktarımda hata gösterilmez.

Çıkış kuralı yapılandırıldıktan sonraki veri aktarımı çalıştırmalarının ayrıntıları.

6. BigQuery veri kümesini project-2'den project-1'e kopyalama

project-1 içindeki Cloud Storage paketinden project-2 içindeki BigQuery veri kümesine veri aktarabileceğimiz onaylandıktan sonra, BigQuery API, VPC Hizmet Kontrolleri ile korunurken project-2 içindeki BigQuery veri kümesini project-1'ya kopyalayalım.

Veri kümesini oluşturup kopyalamak için bq aracını kullanan bq mk komutunu kullanacağız.

project-1 içinde hedef veri kümesi oluşturma

Veri kümesi kopyalanmadan önce hedef veri kümesinin oluşturulması gerekir. Hedef veri kümesini oluşturmak için aşağıdaki komutu çalıştırabiliriz. Bu komut, copied_dataset adlı bir veri kümesini project-1 projesinde us konumunda oluşturur.

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

project-2 bölgesindeki BigQuery hizmetini VPC Hizmet Kontrolleri ile koruma

Sınırın yapılandırmasını değiştirin perimeter-2 ve BigQuery API'yi, BigQuery Veri Aktarımı ve Cloud Storage hizmetleriyle birlikte korunan hizmet olarak ekleyin.

Cloud Storage API'yi korumak için VPC SC yapılandırılmış olmalıdır.

Veri kümesi kopyalama işlemini başlatma

Veri kümesini kopyalamak için aşağıdaki bq mk komutunu çalıştırın. Bu komut, project-2 projesindeki codelab_bqtransfer_dataset veri kümesini project-1 içindeki copied_dataset veri kümesine kopyalar ve varsa veri kümesi içeriğinin üzerine yazar.

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"
     }'

Komut başarıyla çalışır. Bu sırada, veri kümesini kopyalama işlemini başlatmak için aktarım yapılandırması başarıyla oluşturulur. Veri kümesinin kendisini kopyalama işlemi, VPC Hizmet Kontrolleri ihlali nedeniyle başarısız olur.

İlgili VPC Hizmet Kontrolleri ihlali ayrıntılarını bulmak için project-2 (kaynak veri kümesi projesi) içindeki günlükleri aşağıdaki günlük sorgusuyla kontrol edin. Günlük sorgusu, kopyalanan veri kümesinin BigQuery hizmetindeki ve kaynak adındaki günlükleri filtreler (codelab_bqtransfer_dataset).

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

Gözlemlenen VPC Hizmet Kontrolleri ihlali, project-2 hizmetinden project-1 hizmetine çıkış ihlalidir.

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"

Tüm BigQuery ihlallerini düzeltin ve veri kümesi kopyalama işlemini tekrar başlatın.

Çıkış ihlalini düzeltmek için reddedilen asıl öğeye izin veren bir çıkış kuralı oluşturmamız gerekir. Reddedilen ana hesap, mk komutunu çalıştıran hesaptır.

Tüm BigQuery yöntemlerine erişime izin veren çıkış kuralı.

Çıkış kuralı uygulandıktan sonra, veri kümesini kopyalamak için çevre perimeter-2 üzerinde aynı komutu çalıştırın. Bu kez, veri kümesini VPC Hizmet Kontrolleri ihlali olmadan başarıyla kopyalaması gerekir.

7. Temizleme

Hizmet kullanılmadığında VPC Hizmet Kontrolleri'nin kullanımı için ayrı bir ücret alınmaz ancak bu laboratuvarda kullanılan kurulumu temizlemek en iyi uygulamadır. Ücretlendirilmemek için sanal makine örneğini ve/veya Cloud projelerini de silebilirsiniz. Cloud projesinin silinmesi, bu proje içinde kullanılan tüm kaynakların faturalandırılmasını durdurur.

  • Cloud Storage paketini silmek için aşağıdaki adımları tamamlayın:
    • Google Cloud Console'da Cloud Storage paketleri sayfasına gidin.
    • Silinecek paketin onay kutusunu işaretleyin ve Sil'i tıklayın.
    • Görünen yer paylaşımı penceresinde, paketi ve içeriğini silmek istediğinizi onaylayın. Cloud Storage paketinin silinmesi.
  • BigQuery veri kümesini silmek için aşağıdaki adımları tamamlayın:
    • Google Cloud Console'da BigQuery sayfasına gidin.
    • Gezgin bölmesinde projenizi genişletin ve bir veri kümesi seçin.
    • Üç nokta menüsünü genişletip Sil'i tıklayın.
    • Veri kümesini sil iletişim kutusundaki alana delete yazın ve Sil'i tıklayın. BigQuery veri kümesinin silinmesi.
  • Hizmet çevresini silmek için aşağıdaki adımları tamamlayın:
    • Google Cloud Console'da Güvenlik'i, ardından erişim politikasının kapsamının belirlendiği düzeyde (bu örnekte klasör düzeyinde) VPC Hizmet Kontrolleri'ni seçin.
    • VPC Hizmet Kontrolleri sayfasında, silmek istediğiniz çevreye karşılık gelen tablo satırında Delete Icon simgesini seçin.
  • Erişim düzeyini silmek için aşağıdaki adımları tamamlayın:
    • Google Cloud Console'da, Bağlam Erişim Yöneticisi sayfasını klasör kapsamında açın.
    • Izgarada, silmek istediğiniz erişim düzeyinin satırını bulun, üç noktalı menüyü ve ardından Sil'i seçin.
  • Projeleri kapatmak için aşağıdaki adımları tamamlayın:
    • Google Cloud Console'da, silmek istediğiniz projenin IAM ve Yönetici Ayarları sayfasına gidin.
    • IAM ve Yönetici Ayarları sayfasında Kapat'ı seçin.
    • Proje kimliğini girin ve Yine de kapat'ı seçin.

8. Tebrikler!

Bu codelab'de bir VPC Hizmet Kontrolleri çevresi oluşturdunuz, zorunlu kıldınız ve sorunlarını giderdiniz.

Daha fazla bilgi

Aşağıdaki senaryoları da inceleyebilirsiniz:

  • BigQuery, BigQuery Veri Aktarım Hizmeti ve Cloud Storage'ı da koruyan farklı bir çevre ekleyin.project-1
  • Diğer desteklenen kaynaklardan BigQuery veri aktarımı gerçekleştirin.
  • Kullanıcı erişimini konum veya cihaz politikası gibi diğer özelliklere göre kısıtlayın.

Lisans

Bu çalışma, Creative Commons Attribution 2.0 Genel Amaçlı Lisans ile lisans altına alınmıştır.