1. Giriş
Genel Bakış
Bu codelab'de, Cloud Run'da Identity-Aware Proxy'yi nasıl etkinleştireceğiniz ve kimlik doğrulama için IAP'ye yönlendirerek Cloud Run hizmetine giden trafiği nasıl güvenli hale getireceğiniz açıklanmaktadır. Cloud Run'da IAP'yi etkinleştirerek varsayılan run.app URL'leri ve yük dengeleyiciler dahil olmak üzere tüm giriş yollarından tek bir tıklamayla trafik yönlendirebilirsiniz.
Bu codelab'de hello kapsayıcı hizmetini dağıtacaksınız. Hizmete yalnızca uygulama içi satın alma kullanılarak izin verilenler listesine eklenen kullanıcılar erişebilir.
Diğer bilinen sınırlamalar için lütfen Cloud Run'da IAP belgelerine göz atın.
Neler öğreneceksiniz?
- Cloud Run için tek tıklamayla IAP'yi etkinleştirme
- IAP aracılığıyla bir kullanıcı kimliğine Cloud Run hizmetine erişim izni verme
2. Başlamadan önce
API'leri etkinleştir
Bu codelab'i kullanmaya başlamadan önce aşağıdaki API'leri etkinleştirin:
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
iap.googleapis.com \
run.googleapis.com \
cloudresourcemanager.googleapis.com
3. Ortam değişkenleri oluşturma
Bu codelab boyunca kullanılacak ortam değişkenlerini ayarlayın.
export PROJECT_ID=<YOUR_PROJECT_ID>
export REGION=<YOUR_REGION>
export SERVICE_NAME=iap-example
export SERVICE_ACCOUNT_NAME=iap-example-sa
export PROJECT_NUMBER=$(gcloud projects describe "${PROJECT_ID}" --format="value(projectNumber)")
4. IAP'nin etkin olduğu bir hizmet dağıtma
Aşağıdaki komutu çalıştırarak hizmet hesabını (Cloud Run hizmet kimliği olarak kullanılır) oluşturun:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
--display-name="IAP codelab CR identity"
IAP etkinleştirilmiş hello container görüntüsünü dağıtın.
gcloud beta run deploy ${SERVICE_NAME} \
--image=us-docker.pkg.dev/cloudrun/container/hello \
--region=${REGION} \
--service-account $SERVICE_ACCOUNT_NAME@${PROJECT_ID}.iam.gserviceaccount.com \
--no-allow-unauthenticated \
--iap
Not: Uygulamaya şimdi erişmeye çalışırsanız You don't have access hata sayfasını görürsünüz. Sonraki adımda, bir kullanıcıya IAP üzerinden erişim izni vereceksiniz.
5. IAP erişim denetimini yapılandırma
IAP hizmet aracısını oluşturun.
gcloud beta services identity create --service=iap.googleapis.com --project=${PROJECT_ID}
IAP hizmet hesabına Cloud Run Çağırıcı rolünü atayın.
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-iap.iam.gserviceaccount.com" \
--role="roles/run.invoker"
IAP aracılığıyla belirli kullanıcılara veya gruplara izin vererek kullanıcılara erişim izni verme
EMAIL_ADDRESS=<YOUR_EMAIL>
gcloud beta iap web add-iam-policy-binding \
--resource-type=cloud-run \
--service=${SERVICE_NAME} \
--region=${REGION} \
--member=user:${EMAIL_ADDRESS} \
--role=roles/iap.httpsResourceAccessor \
--condition=None
Not: İsterseniz üye parametresinde group:your-group@example.com adresini de kullanabilirsiniz.
6. Uygulamayı test etme
Uygulamaya erişimi doğrulama
Örnek Cloud Run hizmetinin URL'sini alın.
gcloud run services describe ${SERVICE_NAME} --region ${REGION} --format 'value(status.url)'
URL'yi tarayıcınızda açtığınızda "It's Running!" (Çalışıyor!) mesajını görmeniz gerekir. Tebrikler, Cloud Run'a başarıyla bir container görüntüsü dağıttınız."
Uygulamaya erişimin kaldırıldığını doğrulayın
Aşağıdaki komutu çalıştırarak uygulamaya erişiminizi kaldırabilirsiniz.
gcloud beta iap web remove-iam-policy-binding \
--resource-type=cloud-run \
--service=${SERVICE_NAME} \
--region=${REGION} \
--member=user:${EMAIL_ADDRESS} \
--role=roles/iap.httpsResourceAccessor
IAM politikasının yayılması için birkaç dakika bekleyin. Şimdi URL'yi tarayıcınızda açmayı deneyin. You don't have access hata sayfasını görürsünüz.
7. Tebrikler!
Tebrikler, codelab'i tamamladınız.
Cloud Run IAP dokümanlarını incelemenizi öneririz.
İşlediğimiz konular
- Cloud Run için tek tıklamayla IAP'yi etkinleştirme
- IAP aracılığıyla bir kullanıcı kimliğine Cloud Run hizmetine erişim izni verme
8. Temizleme
Örneğin, Cloud Run hizmetleri ücretsiz katmandaki aylık Cloud Run çağırma tahsisinizden daha fazla sayıda çağrılırsa yanlışlıkla ücretlendirilmemek için 6. adımda oluşturduğunuz Cloud Run hizmetini iap-example silebilirsiniz.
Cloud Run hizmetini silmek için https://console.cloud.google.com/run adresinden Cloud Run Cloud Console'a gidin ve iap-example hizmetini silin.
Projenin tamamını silmek için Kaynakları Yönet'e gidin, projenizi seçin ve Sil'i tıklayın. Projeyi silerseniz Cloud SDK'nızda projeleri değiştirmeniz gerekir. gcloud projects list komutunu çalıştırarak kullanılabilir tüm projelerin listesini görüntüleyebilirsiniz.