1. Genel Bakış
Bu laboratuvarda, Cloud Run hizmetine erişimi nasıl kısıtlayacağınız ve yalnızca şirket içinde veya projenizin VPC'sinde çalışan bir iş yükünden gelen isteklere nasıl izin vereceğiniz gösterilmektedir. Kullanabileceğiniz iki erişim denetimi katmanı vardır: giriş ayarları ve Kimlik ve Erişim Yönetimi (IAM) politikaları.

Giriş ayarları
Giriş ayarları, istekleri ağ kaynağına (dahili veya harici) göre filtrelemenize olanak tanır. Herkese açık internetten gelenler de dahil olmak üzere tüm isteklerin geçmesine varsayılan olarak izin verilir.
IAM politikası
IAM politikaları, istekleri gönderenin kimliğine göre filtrelemenize olanak tanır ve genellikle hizmetten hizmete isteklerin kimliğini doğrulamak için kullanılır.
Bu laboratuvarda, giriş ayarlarını nasıl ve ne zaman kullanacağınızı öğreneceksiniz.
Şirket içi ana makineler VPC üzerinden bağlanır
Bu laboratuvarda, şirket içi bir iş yükünü simüle edeceğiz. Şirket içi bir ana makineyi Cloud Run'a bağlamak için şirket içi ana makineler için Özel Google Erişimi'ni yapılandırmanız gerekir. Bu, VPC ağında Cloud VPN ağ geçidi oluşturmayı içerir (aşağıda gösterildiği gibi).

VPC'deki bir atlama sunucusunu kullanarak şirket içi iş yükünü simüle etme
Bu laboratuvarda, VPC'deki bir Compute Engine sanal makinesinden istek göndererek şirket içi bir ana makineden istek göndermeyi simüle edeceksiniz.

Atlama sunucusu olarak kullanacağınız Compute Engine sanal makinesi, Cloud VPN ağ geçidiyle aynı ağ kaynağına sahiptir. Bu nedenle, şirket içi iş yükünden istek göndermeyi simüle etmek için bu makineyi kullanabilirsiniz.
2. Kurulum ve Gereksinimler
Yönlendirmesiz ortam kurulumu
- Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.



- Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Dilediğiniz zaman bunu güncelleyebilirsiniz.
- Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğine (genellikle
PROJECT_IDolarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince geçerli kalır. - Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
- Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırma ücreti alınmaması için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projenin tamamını silebilirsiniz. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.
Ortam Kurulumu
- Daha sonraki komutlarda kullanılmak üzere proje kimliği için bir ortam değişkeni ayarlayın:
export PROJECT_ID=$(gcloud config get-value project)
export REGION=us-central1
export ZONE=us-central1-a
- Bu laboratuvarı yürütmek için gereken API'leri etkinleştirin.
gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
compute.googleapis.com \
artifactregistry.googleapis.com
- Örnek uygulama deposunu klonlayın ve dizine gidin.
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git
cd cymbal-eats/partner-registration-service
- Compute Engine ve Cloud Run için varsayılan bölgeyi ve alt bölgeyi ayarlama
gcloud config set compute/region ${REGION}
gcloud config set run/region ${REGION}
gcloud config set compute/zone ${ZONE}
3. Hizmeti dağıtma
Öncelikle hizmeti dağıtıp herkese açık erişime bırakırsınız. Tarayıcınızdan istek gönderebildiğinizi doğruladıktan sonra hizmeti kilitleriz ve yalnızca dahili ağ kaynaklarından gelen isteklere izin veririz.
Aşağıdaki komutu çalıştırdığınızda bu talimatları uygulayın:
- Kaynak kodu konumu (...): partner-registration-service dizininde olduğunuzu doğrulayın ve varsayılanı kabul etmek için Enter tuşuna basın
- Hizmet adı (partner-registration-service): Varsayılanı kabul etmek için Enter tuşuna basın
- [partner-registration-service] hizmetine kimliği doğrulanmamış çağrıların gönderilmesine izin verilsin mi? (y/N) Y
gcloud run deploy
Bu komut tamamlandığında Cloud Run hizmetinizin URL'si listelenir. Çıkış, bu listelemeye benzer şekilde görünür:
Service [partner-registration-service] revision [partner-registration-service-00001-haz] has been deployed and is serving 100 percent of traffic. Service URL: https://partner-registration-service-ssssssssss-uc.a.run.app
Hizmet URL'sini tarayıcınızda açın. Aşağıdaki çıkışı görmeniz gerekir:
Partner registration service: RUNNING
Hizmeti yalnızca dahili isteklere izin verecek şekilde ayarlayın.
Artık yalnızca dahili kaynaklardan gelen isteklere izin vermek için Cloud Run hizmetinin giriş ayarlarını kullanacaksınız. Dahili kaynaklar, Cloud Run hizmetiyle aynı projede (veya VPC Hizmet Kontrolleri çevresinde) bulunan VPC ağlarındaki kaynakları içerir. Bu nedenle, kullanım alanımız için mükemmeldir.
Ayrıca, VPC'nin parçası olmasalar bile diğer Google Cloud ürünlerinden gelen istekler dahili olarak kabul edilir. Bu ürünlere örnek olarak Pub/Sub ve Workflows verilebilir.
Bu kaynaklardan gelen istekler, hizmetinize run.app URL'sinden erişseler bile Google ağında kalır ve herkese açık erişim yasaktır.
Hizmeti yalnızca dahili isteklere izin verecek şekilde güncelleyin:
gcloud run services update partner-registration-service --ingress=internal
Hizmet URL'sini tekrar açarsanız "Hata: Yasaklandı - Erişim yasaklandı" mesajı gösterilir.
Tarayıcınız isteği Google Cloud projesi için dahili bir kaynaktan değil, harici bir ağ kaynağından gönderdiğinden tam olarak bu durumun gerçekleşmesini beklersiniz. Hizmetiniz artık daha güvenli.
4. Atlama sunucusu olarak Compute Engine sanal makinesi oluşturma
Bir sonraki adım, VPC'de bir Compute Engine örneği oluşturarak şirket içi sunucudan gelen istekleri Cloud VPN ağ geçidi üzerinden simüle etmektir. Bu örnek, atlama sunucusu olarak kullanılır:
gcloud compute instances create jump-server --scopes=https://www.googleapis.com/auth/cloud-platform
Bu komutun çıkışı şuna benzer olmalıdır:
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS jump-server us-central1-a n1-standard-1 10.128.0.10 34.170.108.8 RUNNING
Compute Engine örneğinden hizmete istek gönderme
Şimdi sanal makinede bir terminal açıp VPC ağındaki makineden doğrudan istek göndereceksiniz.
Aşağıdaki komut, Cloud Shell'de SSH'yi ayarlamanızı isterse talimatları uygulayın:
gcloud compute ssh jump-server
Aşağıdaki komutla Cloud Run hizmetinin URL'sini alın:
gcloud run services describe partner-registration-service --region us-central1
Çıkışın ilk birkaç satırı şu şekilde görünmelidir:
✔ Service partner-registration-service in region us-central1 URL: https://partner-registration-service-ssssssssss-uc.a.run.app Ingress: internal
Şimdi URL'yi kopyalayın ve curl kullanarak Compute Engine örneğinden bir istek gönderin. Sanal makine örneği projenizin VPC ağında çalıştığı için bu istek başarılı olur. Bu, dahili bir kaynaktır.
export SERVICE_URL=https://
curl ${SERVICE_URL}
Çıkışta şu ifade yer almalıdır:
Partner registration service: RUNNING
5. IAM tabanlı erişim denetimi hakkında ne söylenebilir?
Bu laboratuvarda, giriş ayarlarının nasıl ve ne zaman kullanılacağı gösterildi. Şirket içi bir iş yükünü Cloud Run'a bağlıyorsanız giriş ayarları, iyi bir başlangıç noktasıdır.
IAM tabanlı erişim denetiminin uygulanması, özellikle şirket içi bir ana makineden çağrı yapıyorsanız daha fazla çaba gerektirir:
- IAM, uzun süreli hizmet hesabı kimlik bilgilerini ana makinede yönetmenizi gerektirir.
- IAM, hizmet hesabı kimlik bilgilerini kullanarak istekleri imzalamak için kod değişiklikleri gerektirir.
Google, erişim denetimi için çok katmanlı bir yaklaşım önerir. Giriş ayarlarını kullanarak erişimi yalnızca dahili ana makinelerle sınırlamak başlangıç için harika bir adım olsa da bu yeterli değildir.
6. Tebrikler!
Tebrikler, codelab'i tamamladınız.
Sıradaki adım:
Diğer Cymbal Eats codelab'lerini keşfedin:
- Eventarc ile Cloud Workflows'u tetikleme
- Cloud Storage'dan etkinlik işlemeyi tetikleme
- Cloud Run'dan özel Cloud SQL'e bağlanma
- Cloud Run'dan tam olarak yönetilen veritabanlarına bağlanma
- Identity-Aware Proxy (IAP) ile Sunucusuz Uygulamaları Güvenli Hale Getirme
- Cloud Scheduler ile Cloud Run İşlerini Tetikleme
- Cloud Run'a güvenli bir şekilde dağıtma
- GKE Autopilot'tan özel AlloyDB'ye bağlanma
Temizleme
Bu eğitimde kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini önlemek amacıyla kaynakları içeren projeyi silin veya projeyi koruyup tek tek kaynakları silin.
Projeyi silme
Faturalandırılmanın önüne geçmenin en kolay yolu, eğitim için oluşturduğunuz projeyi silmektir.
Faydalı referanslar
Cloud Run'daki iki erişim denetimi katmanı hakkında daha fazla bilgi edinmenize yardımcı olacak ek kaynakları aşağıda bulabilirsiniz.