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:
- Klasör oluşturma
- Klasörde proje oluşturma veya mevcut projeyi bir klasöre taşıma
- Kapsamlı erişim politikası oluşturma
- Google Cloud Console'dan hizmet çevresi oluşturma ve yapılandırma
- Denetleme günlüklerinden ihlal günlüklerini bulma
Kurulum
İlk kurulumumuz aşağıdaki gibi tasarlanmıştır:
- Google Cloud kuruluşu.
- Kuruluş altında bir klasör. Bu codelab'de
codelab-folder
olarak adlandıracağız. codelab-folder
klasöründe iki Google Cloud projesi. Bu codelab'de projelereproject-1
veproject-2
adını veriyoruz.- Henüz oluşturulmuş klasör ve projeniz yoksa Google Cloud Console'da Kuruluş altında bir klasör oluşturun ve iki yeni proje oluşturun.
- Gerekli izinler: Klasörleri yönetmek için IAM rolleri, Projeleri yönetmek için IAM rolleri, VPC Hizmet Kontrolleri'ni yapılandırmak için gereken IAM rolleri, BigQuery'yi yönetmek için IAM rolleri ve Cloud Storage'ı yönetmek için IAM rolleri.
- Hem
project-1
hem deproject-2
projeleri için faturalandırma hesabı.
Kapsamlı bir politika ve normal bir hizmet çevresi oluşturma
Bu codelab'de, project-2
hizmetini koruyan normal bir hizmet çevresi kullanacağız.
- Klasör
codelab-folder
seviyesinde kapsamlı bir kapsamlı erişim politikası oluşturun. Bu kod laboratuvarının oluşturulan erişim politikasının kimliğinin987654321
olduğunu varsayıyoruz. perimeter-2
olarak adlandırdığımız normal bir çevre oluşturun veproject-2
projesini ekleyin.
perimeter-2
çevresinde BigQuery Data Transfer API
'ı kısıtlayın.
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.
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
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
project-2
projesinde bu adımları uygulayarak bir BigQuery veri kümesi oluşturun.- Veri kümesi kimliği için benzersiz bir veri kümesi adı girin. Bu codelab'de
codelab_bqtransfer_dataset
kullanacağız. - 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).
- Veri kümesi kimliği için benzersiz bir veri kümesi adı girin. Bu codelab'de
- Oluşturulan
codelab_bqtransfer_dataset
veri kümesi altında bu adımları uygulayarak bir BigQuery tablosu oluşturun.- Kaynak bölümünde, Şu kaynaktan tablo oluştur listesinde Boş tablo'yu seçin.
- Tablo alanına, oluşturmak istediğiniz tablonun adını girin. Bu codelab için
codelab-bqtransfer-table
adını kullanıyoruz. - Tablo türü alanının Yerel tablo olarak ayarlandığını doğrulayın.
- Ş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:
project-2
'nin Google Cloud Console'daki BigQuery sayfasına gidin.- Veri aktarımları'nı tıklayın.
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.
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:
- + Aktarım oluştur'u tıklayın.
- Kaynak türü bölümünde, Kaynak için Google Cloud Storage'ı seçin.
- 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. - Planlama seçenekleri bölümünde:
- 15 dakika gibi bir tekrar sıklığı seçin.
- 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.
- 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
- Veri kaynağı ayrıntıları bölümünde
- 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
- 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
- Yaz tercihi için
APPEND
değerini koruyun (veyaMIRROR
'ı seçin). - 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.)
- Dosya biçimi için CSV'yi seçin.
- Aktarma Seçenekleri'nin CSV bölümünde, Alan ayırıcı olarak virgül(",") girin.
- 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:
- Hizmet Hesabı menüsünde, Google Cloud projenizle ilişkili hizmet hesaplarından bir hizmet hesabı seçin
- 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. - Bu kod laboratuvarında,
project-2
'tecodelab-sa@project-2.iam.gserviceaccount.com
olarak oluşturulmuş bir hizmet hesabı kullanacağız.
- Seçilen hizmet hesabının, depolama havuzunu barındıran projedeki (bu kod laboratuvarındaki
- 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:
- Google Cloud Console'daki BigQuery sayfasına gidin.
- Veri aktarımları'nı tıklayın.
- Yapılandırılmış aktarımın listesi gösterilir.
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ı ç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.
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.
- 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.
- 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.
- 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:
- Google Cloud Console'da Bağlam Erişim Yöneticisi sayfasını açın.
- İstenirse
codelab-folder
klasörünü seçin.
- İstenirse
- Erişim Bağlam Yöneticisi sayfasının en üstünde ERİŞİM DÜZEYİ OLUŞTUR'u tıklayın.
- 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. - Koşullar bölümünde, IP alt ağları'nın önündeki + simgesini tıklayın.
- IP Alt Ağları kutusunda Herkese açık IP'yi seçin
- Alternatif olarak, erişim düzeylerinde dahili IP adresini kullanmak için özel IP'yi kullanmayı seçebilirsiniz. Ancak bu kod laboratuvarında herkese açık bir IP kullanıyoruz.
- CIDR blokları olarak biçimlendirilmiş bir veya daha fazla IPv4 ya da IPv6 aralığı girin.
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ş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.
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 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:
- Google Cloud Console'da BigQuery sayfasına gidin.
- Veri aktarımları'nı tıklayın.
- Listeden transferinizi seçin: Bu kod laboratuvarında Codelab Transfer transferini kullanıyoruz.
- Aktarımı şimdi çalıştır'ı tıklayın.
- 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.
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.
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.
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.
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.
Çı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.
- 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.
- 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.