1. Genel Bakış
Bu laboratuvarda, bir 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. Varsayılan olarak, herkese açık internetten gelenler de dahil olmak üzere tüm isteklerin iletilmesine izin verilir.
IAM politikası
IAM politikaları, istekleri gönderenin kimliğine göre filtrelemenize olanak tanır ve genellikle hizmetler arası 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ırırsınız. Aşağıda gösterildiği gibi VPC ağında bir Cloud VPN ağ geçidi oluşturma da buna dahildir.
VPC'de bir atlama sunucusu kullanarak şirket içi iş yükünü simülasyon
Bu laboratuvarda, burada gösterildiği gibi 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 Gateway ile aynı ağ kaynağına sahiptir. Bu nedenle, şirket içi iş yükünden istek göndermeyi simüle etmek için bu sunucudan yararlanabilirsiniz.
2. Kurulum ve Gereksinimler
Kendi hızınıza göre 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ının görünen adıdı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 değiştirilemez (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dize otomatik olarak oluşturur. Bu dizenin ne olduğu genellikle önemli değildir. Çoğu kod laboratuvarında proje kimliğine (genellikle
PROJECT_ID
olarak tanımlanır) referans vermeniz gerekir. Oluşturulan kimliği beğenmezseniz rastgele başka bir kimlik oluşturabilirsiniz. Alternatif olarak, kendi anahtarınızı deneyerek kullanılabilir olup olmadığını görebilirsiniz. Bu adımdan sonra değiştirilemez ve proje boyunca geçerli kalır. - Bazı API'lerin kullandığı üçüncü bir değer (Proje Numarası) olduğunu belirtmek isteriz. Bu üç değer hakkında daha fazla bilgiyi dokümanlar bölümünde bulabilirsiniz.
- Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmak çok pahalı olmayacaktır. Bu eğitimden sonra faturalandırılmamak 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ğerindeki ücretsiz deneme programına uygundur.
Ortam Kurulumu
- Daha sonra oluşturulacak komutlarda kullanmak için proje kimliğiyle 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ır ve herkese açık hale getirirsiniz. Tarayıcınızdan istek gönderebildiğinizi doğruladıktan sonra hizmeti kilitler ve yalnızca dahili ağ kaynaklarından gelen isteklere izin veririz.
Aşağıdaki komutu çalıştırırken aşağıdaki talimatları uygulayın:
- Kaynak kod konumu (...): partner-registration-service dizininde olduğunuzu doğrulayın ve varsayılan ayarı kabul etmek için Enter tuşuna basın
- Hizmet adı (partner-registration-service): Varsayılan değeri kabul etmek için Enter tuşuna basın
- [partner-registration-service] hizmetine kimliği doğrulanmamış çağrılara izin verilecek mi (y/N)? Y
gcloud run deploy
Bu komut tamamlandığında Cloud Run hizmetinizin URL'sini listeler. Çıkış şu listeye 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örürsünüz:
Partner registration service: RUNNING
Hizmeti yalnızca dahili isteklere izin verecek şekilde ayarlama
Artık yalnızca dahili kaynaklardan gelen isteklere izin vermek için Cloud Run hizmetinin giriş ayarlarını kullanacaksınız. Şirket içi kaynaklar, Cloud Run hizmetiyle aynı projede (veya VPC Hizmet Kontrolleri çevresinde) bulunan VPC ağlarındaki kaynakları içerir. Bu da bu kaynağı kullanım alanımız için mükemmel kılar.
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 iş akışları 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 projesinin dahili bir kaynağından değil, harici bir ağ kaynağından gönderdiği için tam da beklediğiniz şey gerçekleşiyor. Hizmetiniz artık daha güvenli.
4. Atlama sunucusu olarak Compute Engine sanal makinesi oluşturma
Sonraki adımda, VPC'de atlama sunucusu olarak kullanılacak bir Compute Engine örneği oluşturarak şirket içi bir sunucudan gelen istekleri Cloud VPN ağ geçidi üzerinden simüle edin:
gcloud compute instances create jump-server --scopes=https://www.googleapis.com/auth/cloud-platform
Bu komutun çıkışı şuna benzer şekilde görünecektir:
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
Artık sanal makinede bir terminal açıp doğrudan VPC ağındaki makineden 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ı aşağıdaki gibi görünmelidir:
✔ Service partner-registration-service in region us-central1 URL: https://partner-registration-service-ssssssssss-uc.a.run.app Ingress: internal
Ardından URL'yi kopyalayın ve curl'i kullanarak Compute Engine örneğinden istek gönderin. Sanal makine örneği, projenizin VPC ağında çalıştığından (dahili bir kaynak olduğundan) bu istek başarılı olur.
export SERVICE_URL=https://
curl ${SERVICE_URL}
Çıkışta şu ifade yer alır:
Partner registration service: RUNNING
5. IAM tabanlı erişim denetimi ne olacak?
Bu laboratuvarda, giriş ayarlarını nasıl ve ne zaman kullanacağınız gösterilmiştir. Kuruluş içi bir iş yükünü Cloud Run'a bağlıyorsanız giriş ayarları iyi bir başlangıçtır.
IAM tabanlı erişim denetiminin uygulanması, özellikle şirket içi bir ana makineden arama yapıyorsanız daha fazla çaba gerektirir:
- IAM, uzun ömürlü hizmet hesabı kimlik bilgilerini ana makinede yönetmenizi gerektirir
- IAM, istekleri hizmet hesabı kimlik bilgilerini kullanarak imzalamak için kod değişiklikleri gerektirir.
Google, erişim denetimi için çok katmanlı bir yaklaşımı önerir. Erişimi yalnızca dahili ana makinelere kısıtlamak için giriş ayarlarını kullanmak iyi bir başlangıçtır ancak buradan vazgeçmeyin.
6. Tebrikler!
Tebrikler, kod laboratuvarını tamamladınız.
Sıradaki adım:
Diğer Cymbal Eats codelab'lerini keşfedin:
- Eventarc ile Cloud iş akışlarını tetikleme
- Cloud Storage'dan etkinlik işlemeyi tetikleme
- Cloud Run'dan Private CloudSQL'e bağlanma
- Cloud Run'dan Tümüyle Yönetilen Veritabanlara Bağlanma
- Identity-Aware Proxy (IAP) ile sunucusuz uygulamayı güvence altına alma
- Cloud Scheduler ile Cloud Run işlerini tetikleme
- Cloud Run'a Güvenli Dağıtım
- GKE Autopilot'ten özel AlloyDB'ye bağlanma
Temizleme
Bu eğiticide kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız kaynakları içeren projeyi silin veya projeyi saklayıp kaynakları tek tek silin.
Projeyi silme
Faturalandırmanı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 verilmiştir.