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ğınızı öğreneceksiniz. Ardından Cloud Storage'ı korur ve Cloud Storage'dan BigQuery'ye veri aktarma işlemini tekrarlarız. Cloud Storage'ın koruması, başarılı bir aktarım için düzeltilmesi gereken bir VPC Hizmet Kontrolleri ihlaline neden oluyor. 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 ihlal oluşturur.

Bu laboratuvarda, sırasıyla giriş ve çıkış kurallarını kullanarak hem giriş hem de çıkış ihlallerinin nasıl düzeltileceğini göreceğiz. BigQuery Veri Aktarım giriş ihlallerini düzeltmek için de erişim düzeyini kullanırız. Bu codelab'in hedefleri şunlardır:

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

2. Kaynak Kurulumu ve Şartları

Başlamadan önce

Bu kod laboratuvarının hedef kitlesi, aşağıdaki konularda bilgi sahibi olan kullanıcılardır:

Kurulum

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

Codelab ilk kurulum şeması

Kapsamlı bir politika ve normal bir hizmet çevresi oluşturma

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

perimeter-2 çevresinde BigQuery Data Transfer API'ı kısıtlayın.

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

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

Bu codelab'in amacı için içeriğinden bağımsız olarak herhangi bir CSV dosyası yeterlidir. Ana sınırlama, aşağıdakileri zorunlu tutan yakın yerleşim şartıyla ilgilidir:

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

Bundan sonra bu kod laboratuvarının hem Cloud Storage paketinin hem de BigQuery veri kümesinin aynı bölgede veya çoklu bölgede olduğundan emin olacağı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 dokümanlardaki adımları uygulayın.

  • Paketin adı için paket adı koşullarını karşılayan bir ad girin. Bu codelab'de paketi codelab-bqtransfer-bucket olarak adlandıracağız.
  • Verilerin depolanacağı yer için paket konumu, Konum türü ve paket verilerinin kalıcı olarak depolanacağı Konum'u seçin. Bu codelab için 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 makinenizde veya Cloud Shell'i kullanarak echo komutunu kullanarak aşağıdaki komutları uygulayarak örnek bir CSV dosyası (codelab-test-file.csv) oluşturabilirsiniz:

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.

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

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

project-2'te BigQuery veri kümesi ve tablosu oluşturma

  1. project-2 projesinde bu adımları uygulayarak 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 codelab_bqtransfer_dataset kullanacağız.
    2. Konum türü için veri kümesi için coğrafi bir konum seçin. Bu kod laboratuvarında, Cloud Storage paketiyle aynı konumu kullanırız: US (Amerika Birleşik Devletleri'nde birden fazla bölge). BigQuery veri kümesi oluşturma.
  2. Oluşturulan codelab_bqtransfer_dataset veri kümesi altında bu adımları uygulayarak bir BigQuery tablosu oluşturun.
    1. Kaynak bölümünde, Şu kaynaktan tablo oluştur listesinde Boş tablo'yu seçin.
    2. Tablo alanına, oluşturmak istediğiniz tablonun adını girin. Bu codelab için 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 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 kod laboratuvarının dışında faturalandırma yapılmasını önlemek için kullanılan kaynakları kapatmanızı öneririz.

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

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

Şimdi, project-2'te bulunan Cloud Storage'dan (project-1) project-2'te bulunan BigQuery'ye veri aktarmak için bir Veri Aktarım Hizmeti (project-2'te) oluşturmaya çalışacağız. Bu sırada project-2'te BigQuery Veri Aktarım Hizmeti'ni koruyan VPC Hizmet Denetimleri'ni kullanacağız. Yalnızca BigQuery Veri Aktarım Hizmeti'ni korumak (BigQuery ve Cloud Storage'ı korumadan), asıl kullanıcıları yalnızca veri aktarımı oluşturmaya ve yönetmeye (ör. veri aktarımını manuel olarak başlatmaya) kısıtlamaktadır.

Cloud Storage'dan veri aktarımı ayarlama

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

  1. project-2'nin Google Cloud Console'daki BigQuery sayfasına gidin.
  2. Veri aktarımları'nı 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ğıdakilere benzer ayrıntılara sahip bir giriş ihlali olan NO_MATCHING_ACCESS_LEVEL'tür:

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şmek, yapılandırılmış tüm veri aktarmalarını listelemeyi dener. Bu nedenle ListTransferConfigs yöntemi ihlal edilmiştir.

bigquerydatatransfer.googleapis.com hizmetiyle ilgili ihlali düzeltme

Giriş ihlalini düzeltmek için 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ılan bir giriş kuralı kullanalım.

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

Giriş kuralı uygulandıktan sonra Veri aktarımları sayfasına sorunsuz bir şekilde erişebilirsiniz.

Cloud Storage'dan veri aktarma ayarlarını devam ettirme

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

  1. + Aktarım 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 Codelab Transfer gibi bir ad girin.
  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ılmış Yineleme sıklığı'ndan sonra başlar.
  5. Hedef ayarları bölümünde, 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 alanına 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 alanına Cloud Storage URI'sini girin. Bu codelab için oluşturulan paketi ve dosyayı kullanırız: codelab-bqtransfer-bucket/codelab-test-file.csv
    3. Yaz tercihi için APPEND değerini koruyun (veya MIRROR'ı seçin).
    4. Aktarımdan sonra dosyaları silmeyi SEÇMEYİN (Aynı dosyayı birden fazla kez yeniden kullanacağımız için. Ancak birden fazla dosya kullanabilir ve aktarma işleminden sonra kaynak dosyaları silebilirsiniz.)
    5. Dosya biçimi için CSV'yi seçin.
    6. Aktarma Seçenekleri'nin CSV bölümünde, Alan ayırıcı olarak virgül(",") girin.
  7. Hizmet Hesabı menüsünde, Google Cloud projenizle ilişkili hizmet hesaplarından bir hizmet hesabı seçin
    1. Seçilen hizmet hesabının, depolama havuzunu barındıran projedeki (bu kod laboratuvarındaki project-1) Cloud Storage için gerekli izinlere sahip olması gerekir.
    2. Bu kod laboratuvarında, project-2'te codelab-sa@project-2.iam.gserviceaccount.com olarak oluşturulmuş bir hizmet hesabı kullanacağız.
  8. Kaydet'i tıklayın.

Programlama seçeneği olarak Hemen Başlat'ı seçtiğimiz için Kaydet seçilir seçilmez ilk aktarım başlar.

Veri aktarma hizmetinin durumunu doğrulama

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

Veri Aktarım Hizmeti işleri.

Codelab Transfer simgesini (Görünen ad altında) tıkladığınızda, o güne 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ı.

Veri aktarımı çalıştırması başarılı olmalı ve hem manuel olarak tetiklenen hem de planlanmış veri aktarımı için VPC Hizmet Kontrolleri ihlali olmamalıdır. Yalnızca manuel olarak tetiklenen aktarımın, aktarımı manuel olarak başlatan asıl kullanıcıya erişim izni vermek için giriş kuralına ihtiyaç duyduğunu unutmayın.

4. Manuel Olarak Tetiklenen Veri Aktarımları İç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 verir.

VPC Hizmet Kontrolleri, erişim düzeyini kullanarak izin verilen erişimi belirli API istek özelliklerine göre sınırlama olanağı sunar. Özellikle:

  • 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.
  • Müdürler: İ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.

Halihazırda yapılandırılan giriş kuralıyla birlikte bu özelliklerin doğrulamasını 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 Hizmet Kontrolleri ile korunan erişim Bu şema, iki asıl kullanıcı (user@example.com ve user2@example.com) tarafından üç senaryoda başlatılan erişimi gösterir. VPC Hizmet Kontrolleri'nin kaynakları (giriş erişim düzeyi) ve kimlik özelliklerini her ikisinin de eşleşmesi gereken bir VE koşulu olarak nasıl değerlendirdiğini gösterir.

  1. IP adresi ve kullanıcı hesabı, giriş kuralındaki yapılandırmalarla eşleştiği için user@example.com kullanıcısına, erişim düzeyi tarafından izin verilen bir IP adresinden erişim girişiminde bulunduğunda erişime izin verilir.
  2. Giriş kuralında yapılandırılmış hesap olmasına rağmen, IP adresi izin verilen IP adresiyle eşleşmeyen user@example.com kullanıcısının erişimi engellenir.
  3. user2@example.com kullanıcısının erişimi, giriş kuralı hesabına izin vermediği için izin verilen bir IP adresinden erişmeye çalışmasına rağmen engellenir.

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. Erişim Bağlam Yöneticisi sayfasının en üstünde ERİŞİM DÜZEYİ OLUŞTUR'u 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 Herkese açık IP'yi seçin

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

Erişim düzeyine, giriş kuralındaki sources alanından referans verilir. Bu alan, giriş kuralı referansında belirtildiği gibi zorunlu bir alandır. VPC Hizmet Kontrolleri, kaynaklara girişe izin vermek için sources ve identityType özelliklerini VE koşulu olarak değerlendirir. Giriş kuralı, veri aktarımı yapılandırmasında belirtilen hizmet hesabını değil, veri aktarımını manuel olarak tetikleyen asıl kullanıcının kimliğini kullanır.

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ının atıfta bulunduğu erişim düzeyinde izin verilen aralıktaki IP adresini kullanarak.
  • Yapılandırmalar tarafından izin verilmeyen bir IP adresi kullanmak

İzin verilen IP adreslerinden erişim başarılı olurken izin verilmeyen IP adreslerinden erişim başarısız olur ve VPC Hizmet Kontrolleri ihlali ile sonuçlanır.

Farklı bir IP adresi kullanarak test etmenin kolay yollarından biri, 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 parametrelerini değiştirerek 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 aktarımı 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österilir.

İzin verilmeyen IP adresinden VPC SC ihlali.

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

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ı Başlatma

Cloud Storage'dan BigQuery'ye aktarım yaptığımızdan Cloud Storage'ı VPC Hizmet Kontrolleri ile korunan hizmetler arasına ekleyip aktarımın başarılı olup olmadığını kontrol edelim.

perimeter-2 yapılandırmasında, BigQuery Veri Aktarım API ile birlikte Kısıtlanmış Hizmetlerden biri olarak Cloud Storage API'yi ekleyin.

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

Cloud Storage API'yi güvence altına aldıktan 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 aktarımları'nı tıklayın.
  3. Listeden transferinizi seçin: Bu kod laboratuvarında Codelab Transfer transferini kullanıyoruz.
  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 mesajı görmek için sayfayı yenilemeniz gerekebilir. Bu kez aktarım, VPC Hizmet Kontrolleri ihlali nedeniyle başarısız olur.

BigQuery veri kümesini kopyalama nedeniyle VPC SC ihlali.

Cloud Storage VPC Hizmet Kontrolleri ihlalini inceleme

Aktarımın Özeti bölümünde gösterilen vpcServiceControlsUniqueIdentifier'ü kullanarak denetleme günlüklerini filtreleyin.

Tespit edilen ihlal, aşağıdaki ayrıntılara sahip bir RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER çıkış ihlali:

  • Ana, Veri Aktarımı Hizmeti'nde yapılandırılan hizmet hesabıdır (planlanmış veri aktarımı manuel olarak tetiklensin veya çalıştırılsın, reddedilen ana 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ış ihlali düzeltme

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

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

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

Çıkış kuralı yapılandırıldıktan sonra veri aktarımının ayrıntıları.

6. BigQuery veri kümesini 2. projeden 1. projeye kopyalama

project-1'teki Cloud Storage paketinden project-2'taki BigQuery veri kümesine veri aktarabileceğimizi onayladıktan sonra, BigQuery API'si VPC Hizmet Kontrolleri tarafından korunurken project-2'teki BigQuery veri kümesini project-1'e kopyalayalım.

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

project-1'te hedef veri kümesi oluşturma

Veri kümesini kopyalamadan ö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, project-1 adlı projede us konumuyla copied_dataset adlı bir veri kümesi oluşturur.

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

project-2'teki BigQuery hizmetini VPC Hizmet Kontrolleri ile koruma

perimeter-2 çevresinin yapılandırmasını değiştirin ve BigQuery Veri Aktarım ve Cloud Storage hizmetlerinin yanı sıra BigQuery API'yi de korunan hizmet olarak ekleyin.

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

Veri kümesi kopyasını 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'daki 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ıştırılı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 kopyalanması, VPC Hizmet Kontrolleri ihlali nedeniyle başarısız olur.

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

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

Gözlemlenen VPC Hizmet Kontrolleri ihlali, project-2 ile project-1 arasında gerçekleşen bir çıkış ihlali.

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 kimliğe 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 perimeter-2 çevresinde aynı komutu çalıştırın. Bu kez, VPC Hizmet Kontrolleri ihlali olmadan veri kümesini başarıyla kopyalamalıdır.

7. Temizleme

Hizmet kullanılmadığında VPC Hizmet Kontrolleri'nin kullanımı için ayrı bir ücret alınmasa da bu laboratuvarda kullanılan kurulumu temizlemek en iyi uygulamadır. Ücret ödememek için sanal makine örneğini ve/veya Cloud projelerini de silebilirsiniz. Cloud projesi silindiğinde, söz konusu projede kullanılan tüm kaynakların faturalandırması durdurulur.

  • Cloud Storage paketini silmek için aşağıdaki adımları uygulayın:
    • Google Cloud Console'da Cloud Storage Paketleri sayfasına gidin.
    • Silinecek paketin onay kutusunu işaretleyin ve ardından Sil'i tıklayın.
    • Açılan yer paylaşımı penceresinde paketi ve içindekileri silmek istediğinizi onaylayın. Cloud Storage paketinin silinmesi.
  • BigQuery veri kümesini silmek için aşağıdaki adımları uygulayı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 kutusunda alana delete yazın ve ardından Sil'i tıklayın. BigQuery veri kümesinin silinmesi.
  • Hizmet çevresini silmek için aşağıdaki adımları uygulayın:
    • Google Cloud Console'da Güvenlik'i, ardından erişim politikasının kapsamının belirlendiği düzeyde (bu durumda 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ı uygulayın:
    • Google Cloud Console'da, Klasör kapsamında Bağlam Erişim Yöneticisi sayfasını 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ı uygulayı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, bunu uyguladınız ve çevreyle ilgili sorunları giderdiniz.

Daha fazla bilgi

Aşağıdaki senaryoları da inceleyebilirsiniz:

  • project-1'yi BigQuery, BigQuery Veri Aktarım Hizmeti ve Cloud Storage'ı da koruyan farklı bir çevre içine ekleyin.
  • 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.