1. Genel Bakış
Güvenliği artırmak için bir hizmeti Cloud Run'a dağıtmayla ilgili varsayılan adımları değiştirecek ve ardından dağıtılan uygulamaya güvenli bir şekilde nasıl erişeceğinizi göreceksiniz. Bu uygulama, Cymbal Eats ile çalışan şirketlerin yemek siparişlerini işlemede kullandığı Cymbal Eats uygulamasının "iş ortağı kayıt hizmeti"dir.
Öğrenecekleriniz
Bir uygulamayı Cloud Run'a dağıtmak için gereken minimum varsayılan adımlarda birkaç küçük değişiklik yaparak uygulamanın güvenliğini önemli ölçüde artırabilirsiniz. Mevcut bir uygulamayı ve dağıtım talimatlarını alıp dağıtım adımlarını değiştirerek dağıtılan uygulamanın güvenliğini artıracaksınız.
Ardından, uygulamaya erişimi yetkilendirme ve yetkili isteklerde bulunma hakkında bilgi edineceksiniz.
Bu doküman, uygulama dağıtımı güvenliğine kapsamlı bir bakış sunmaz. Bunun yerine, gelecekteki tüm uygulama dağıtımlarınızda yapabileceğiniz ve çok az çabayla güvenliği artıracak değişikliklere odaklanır.
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.
Cloud Shell'i etkinleştirme
- Cloud Console'da Cloud Shell'i etkinleştir 'i
tıklayın.

Cloud Shell'i daha önce hiç başlatmadıysanız ne olduğunu açıklayan bir ara ekran (ekranın alt kısmı) gösterilir. Bu durumda Devam'ı tıkladığınızda bu ekranı bir daha görmezsiniz. Bu tek seferlik ekran aşağıdaki gibi görünür:

Cloud Shell'in temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır.

Bu sanal makine, ihtiyaç duyduğunuz tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin bulunur ve Google Cloud'da çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki çalışmalarınızın neredeyse tamamını yalnızca bir tarayıcı veya Chromebook'unuzla yapabilirsiniz.
Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin, proje kimliğinize ayarlandığını görürsünüz.
- Kimliğinizin doğrulandığını onaylamak için Cloud Shell'de şu komutu çalıştırın:
gcloud auth list
Komut çıkışı
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- gcloud komutunun projeniz hakkında bilgi sahibi olduğunu onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud config list project
Komut çıkışı
[core] project = <PROJECT_ID>
Değilse şu komutla ayarlayabilirsiniz:
gcloud config set project <PROJECT_ID>
Komut çıkışı
Updated property [core/project].
Ortam Kurulumu
Bu laboratuvarda komutları Cloud Shell komut satırında çalıştıracaksınız. Komutları genellikle kopyalayıp olduğu gibi yapıştırabilirsiniz. Ancak bazı durumlarda yer tutucu değerleri doğru değerlerle değiştirmeniz gerekir.
- 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 SERVICE_NAME=partner-registration-service
- Uygulamanızı çalıştıracak Cloud Run hizmeti API'sini, NoSQL veri depolama alanı sağlayacak Firestore API'sini, dağıtım komutu tarafından kullanılacak Cloud Build API'sini ve oluşturulduğunda uygulama kapsayıcısını tutmak için kullanılacak Artifact Registry'yi etkinleştirin:
gcloud services enable \
run.googleapis.com \
firestore.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com
- Firestore veritabanını Native modda başlatın. Bu komut App Engine API'yi kullandığından önce etkinleştirilmesi gerekir.
Komut, App Engine için bir bölge belirtmelidir. Bu bölgeyi kullanmayacağız ancak geçmiş nedenlerden dolayı oluşturmamız gerekir. Ayrıca, veritabanı için de bir bölge belirtilmelidir. App Engine için us-central, veritabanı için nam5 kullanılacaktır. nam5, ABD'deki çok bölgeli konumdur. Çoklu bölge konumları, veritabanının kullanılabilirliğini ve dayanıklılığını en üst düzeye çıkarır.
gcloud services enable appengine.googleapis.com
gcloud app create --region=us-central
gcloud firestore databases create --region=nam5
- Örnek uygulama deposunu klonlayın ve dizine gidin.
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git
cd cymbal-eats/partner-registration-service
3. BENİOKU dosyasını inceleyin
Düzenleyiciyi açın ve uygulamayı oluşturan dosyalara bakın. Bu uygulamayı dağıtmak için gereken adımları açıklayan README.md dosyasını görüntüleyin. Bu adımlardan bazıları, dikkate alınması gereken örtülü veya açık güvenlik kararları içerebilir. Burada açıklandığı gibi, dağıtılan uygulamanızın güvenliğini artırmak için bu seçeneklerden birkaçını değiştireceksiniz:
3. adım: npm install komutunu çalıştırın
Bir uygulamada kullanılan üçüncü taraf yazılımların kaynağını ve bütünlüğünü bilmek önemlidir. Yazılım tedarik zinciri güvenliğini yönetmek, yalnızca Cloud Run'a dağıtılan uygulamalar için değil, tüm yazılımların geliştirilmesi için önemlidir. Bu laboratuvar dağıtıma odaklandığı için bu alanı ele almaz ancak konuyu ayrı olarak araştırmak isteyebilirsiniz.
4. ve 5. adım: deploy.sh düzenleme ve çalıştırma
Bu adımlar, çoğu seçeneği varsayılan değerinde bırakarak uygulamayı Cloud Run'a dağıtır. Bu adımı, dağıtımı iki temel şekilde daha güvenli hale getirecek şekilde değiştireceksiniz:
- Kimliği doğrulanmamış erişime izin vermeyin. Keşif sırasında deneme amaçlı olarak buna izin vermek uygun olabilir ancak bu, ticari iş ortakları tarafından kullanılacak bir web hizmetidir ve kullanıcılarını her zaman doğrulamalıdır.
- Uygulamanın, ihtiyaç duyulandan daha fazla API ve kaynak erişimine sahip olması muhtemel olan varsayılan bir hesap yerine yalnızca gerekli ayrıcalıklarla uyarlanmış özel bir hizmet hesabı kullanması gerektiğini belirtin. Bu, en az ayrıcalık ilkesi olarak bilinir ve uygulama güvenliğinin temel bir kavramıdır.
6-11. adımlar: Doğru davranışı doğrulamak için örnek web istekleri oluşturun
Uygulama dağıtımı artık kimlik doğrulama gerektirdiğinden bu istekler, talep sahibinin kimliğine dair kanıt içermelidir. Bu dosyaları değiştirmek yerine doğrudan komut satırından istekte bulunursunuz.
4. Hizmeti güvenli bir şekilde dağıtma
deploy.sh komut dosyasında gerekli olduğu belirlenen iki değişiklik vardı: kimliği doğrulanmamış erişime izin verilmemesi ve minimum ayrıcalıklara sahip özel bir hizmet hesabının kullanılması.
Önce yeni bir hizmet hesabı oluşturacak, ardından deploy.sh komut dosyasını bu hizmet hesabına referans verecek ve kimliği doğrulanmamış erişime izin vermeyecek şekilde düzenleyeceksiniz.Son olarak, değiştirilen deploy.sh komut dosyasını çalıştırmadan önce değiştirilen komut dosyasını çalıştırarak hizmeti dağıtacaksınız.
Hizmet hesabı oluşturun ve Firestore/Datastore'a erişim izni verin
gcloud iam service-accounts create partner-sa
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:partner-sa@${PROJECT_ID}.iam.gserviceaccount.com" \
--role=roles/datastore.user
deploy.sh öğesini düzenle
deploy.sh dosyasını, kimliği doğrulanmamış erişime izin vermeyecek şekilde(–no-allow-unauthenticated) ve dağıtılan uygulama için yeni hizmet hesabını belirtecek şekilde(–service-account) değiştirin. GOOGLE_PROJECT_ID'yi kendi projenizin kimliği olacak şekilde düzeltin.
İlk iki satırı sileceksiniz ve diğer üç satırı aşağıda gösterildiği gibi değiştireceksiniz.
gcloud run deploy $SERVICE_NAME \
--source . \
--platform managed \
--region ${REGION} \
--no-allow-unauthenticated \
--project=$PROJECT_ID \
--service-account=partner-sa@${PROJECT_ID}.iam.gserviceaccount.com
Hizmeti dağıtma
Komut satırından deploy.sh komut dosyasını çalıştırın:
./deploy.sh
Dağıtım tamamlandığında komut çıktısının son satırında yeni uygulamanın hizmet URL'si gösterilir. URL'yi bir ortam değişkenine kaydedin:
export SERVICE_URL=<URL from last line of command output>
Şimdi curl aracını kullanarak uygulamadan sipariş getirmeyi deneyin:
curl -i -X GET $SERVICE_URL/partners
curl komutunun -i işareti, çıkışa yanıt üstbilgilerinin dahil edilmesini sağlar. Çıkışın ilk satırı şu şekilde olmalıdır:
HTTP/2 403
Uygulama, kimliği doğrulanmamış isteklerin engellenmesi seçeneğiyle dağıtıldı. Bu curl komutu kimlik doğrulama bilgisi içermediğinden Cloud Run tarafından reddedilir. Gerçek dağıtılan uygulama bu istekten herhangi bir veri çalıştırmaz veya almaz.
5. Kimliği doğrulanmış isteklerde bulunma
Dağıtılan uygulama, web istekleri gönderilerek çağrılır. Cloud Run'ın bu isteklere izin vermesi için artık kimlik doğrulaması yapılması gerekir. Web istekleri, şu biçimde bir Authorization üstbilgisi eklenerek kimliği doğrulanır:
Authorization: Bearer identity-token
Kimlik jetonu, güvenilir bir kimlik doğrulama sağlayıcısı tarafından verilen, kısa süreli, kriptografik olarak imzalanmış ve kodlanmış bir dizedir. Bu durumda, geçerlilik süresi dolmamış, geçerli ve Google tarafından verilmiş bir kimlik jetonu gerekir.
Kullanıcı hesabınızla istekte bulunma
Google Cloud CLI aracı, varsayılan kimliği doğrulanmış kullanıcı için jeton sağlayabilir. Kendi hesabınız için kimlik jetonu almak ve bunu ID_TOKEN ortam değişkenine kaydetmek üzere bu komutu çalıştırın:
export ID_TOKEN=$(gcloud auth print-identity-token)
Google tarafından verilen kimlik jetonları varsayılan olarak bir saat geçerlidir. Daha önce yetkilendirilmediği için reddedilen isteği göndermek üzere aşağıdaki curl komutunu çalıştırın. Bu komut, gerekli başlığı içerir:
curl -i -X GET $SERVICE_URL/partners \
-H "Authorization: Bearer $ID_TOKEN"
Komut çıkışı, isteğin kabul edilebilir olduğunu ve yerine getirildiğini belirten HTTP/2 200 ile başlamalıdır. (Bir saat bekleyip bu isteği tekrar denerseniz jetonun süresi dolmuş olacağından istek başarısız olur.) Yanıtın gövdesi, çıkışın sonunda boş bir satırdan sonra yer alır:
{"status":"success","data":[]}
Henüz iş ortağı yok.
Dizindeki örnek JSON verilerini kullanarak iki curl komutla iş ortaklarını kaydedin:
curl -X POST \
-H "Authorization: Bearer $ID_TOKEN" \
-H "Content-Type: application/json" \
-d "@example-partner.json" \
$SERVICE_URL/partner
ve
curl -X POST \
-H "Authorization: Bearer $ID_TOKEN" \
-H "Content-Type: application/json" \
-d "@example-partner2.json" \
$SERVICE_URL/partner
Kayıtlı tüm iş ortaklarını görmek için önceki GET isteğini tekrarlayın:
curl -i -X GET $SERVICE_URL/partners \
-H "Authorization: Bearer $ID_TOKEN"
Kayıtlı iki iş ortağı hakkında bilgi veren, çok daha fazla içerik içeren JSON verileri görmeniz gerekir.
Yetkisiz bir hesap olarak istekte bulunma
Son adımda yapılan kimliği doğrulanmış istek, yalnızca kimliği doğrulandığı için değil, aynı zamanda kimliği doğrulanmış kullanıcı (hesabınız) yetkilendirildiği için de başarılı oldu. Yani hesabın uygulamayı çağırma izni vardı. Kimliği doğrulanmış hesapların tümü bunu yapmaya yetkili değildir.
Önceki istekte kullanılan varsayılan hesap, uygulamayı içeren projeyi oluşturan hesap olduğu için yetkilendirilmişti. Bu durum, hesaba varsayılan olarak hesaptaki tüm Cloud Run uygulamalarını çağırma izni veriyordu. Bu izin gerekirse iptal edilebilir. Bu durum, üretim uygulamalarında tercih edilir. Şimdi bunu yapmak yerine, ayrıcalık veya rol atanmamış yeni bir hizmet hesabı oluşturacak ve dağıtılan uygulamaya erişmeyi denemek için bu hesabı kullanacaksınız.
testeradlı bir hizmet hesabı oluşturun.
gcloud iam service-accounts create tester
- Bu yeni hesap için, varsayılan hesabınızda daha önce aldığınız şekilde bir kimlik jetonu alırsınız. Ancak bu işlem için varsayılan hesabınızın hizmet hesaplarına kimlik taklidi yapma izni olması gerekir. Hesabınıza bu izni verin.
export USER_EMAIL=$(gcloud config list account --format "value(core.account)")
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$USER_EMAIL" \
--role=roles/iam.serviceAccountTokenCreator
- Şimdi, bu yeni hesap için bir kimlik jetonunu TEST_IDENTITY ortam değişkenine kaydetmek üzere aşağıdaki komutu çalıştırın. Komut hata mesajı gösterirse bir veya iki dakika bekleyip tekrar deneyin.
export TEST_TOKEN=$( \
gcloud auth print-identity-token \
--impersonate-service-account \
"tester@$PROJECT_ID.iam.gserviceaccount.com" \
)
- Kimliği doğrulanmış web isteğini daha önce olduğu gibi yapın ancak bu kimlik jetonunu kullanarak:
curl -i -X GET $SERVICE_URL/partners \
-H "Authorization: Bearer $TEST_TOKEN"
İstek kimliği doğrulanmış olsa da yetkilendirilmediği için komut çıkışı tekrar HTTP/2 403 ile başlayacak. Yeni hizmet hesabının bu uygulamayı çağırma izni yok.
Hesabı yetkilendirme
Bir kullanıcı veya hizmet hesabının, Cloud Run hizmetine istekte bulunabilmesi için bu hizmette Cloud Run Invoker rolüne sahip olması gerekir. Aşağıdaki komutla test kullanıcısı hizmet hesabına bu rolü verin:
export REGION=us-central1
gcloud run services add-iam-policy-binding ${SERVICE_NAME} \
--member="serviceAccount:tester@$PROJECT_ID.iam.gserviceaccount.com" \
--role=roles/run.invoker \
--region=${REGION}
Yeni rolün güncellenmesi için bir veya iki dakika bekledikten sonra kimliği doğrulanmış isteği tekrarlayın. İlk kaydedilmesinden bu yana bir saat veya daha uzun süre geçtiyse yeni bir TEST_TOKEN kaydedin.
curl -i -X GET $SERVICE_URL/partners \
-H "Authorization: Bearer $TEST_TOKEN"
Komut çıkışı artık HTTP/1.1 200 OK ile başlıyor ve son satırda JSON yanıtı yer alıyor. Bu istek Cloud Run tarafından kabul edildi ve uygulama tarafından işlendi.
6. Programların kimliğini doğrulama ile kullanıcıların kimliğini doğrulama arasındaki fark
Şu ana kadar yaptığınız kimliği doğrulanmış isteklerde curl komut satırı aracı kullanıldı. Bunun yerine kullanılabilecek başka araçlar ve programlama dilleri vardır. Ancak, kimliği doğrulanmış Cloud Run istekleri düz web sayfaları içeren bir web tarayıcısı kullanılarak yapılamaz. Bir kullanıcı bir bağlantıyı tıkladığında veya bir web sayfasında form göndermek için bir düğmeyi tıkladığında tarayıcı, kimliği doğrulanmış istekler için Cloud Run'ın gerektirdiği Authorization üstbilgisini eklemez.
Cloud Run'ın yerleşik kimlik doğrulama mekanizması, son kullanıcılar tarafından değil programlar tarafından kullanılmak üzere tasarlanmıştır.
Not:
Cloud Run, kullanıcıya yönelik web uygulamalarını barındırabilir ancak bu tür uygulamaların, kullanıcıların web tarayıcılarından gelen kimliği doğrulanmamış isteklere izin verecek şekilde Cloud Run'ı ayarlaması gerekir. Uygulamalar kullanıcı kimlik doğrulaması gerektiriyorsa Cloud Run'dan bunu yapmasını istemek yerine uygulamalar bu işlemi kendileri yapmalıdır. Uygulama bunu, Cloud Run dışındaki web uygulamalarının yaptığı gibi yapabilir. Bu işlemin nasıl yapılacağı bu codelab'in kapsamı dışındadır.
Şimdiye kadar örnek isteklere verilen yanıtların web sayfası değil, JSON nesnesi olduğunu fark etmiş olabilirsiniz. Bunun nedeni, bu iş ortağı kayıt hizmetinin programların kullanması için tasarlanmış olması ve JSON'un bu programlar için uygun bir biçim olmasıdır. Ardından, bu verileri kullanmak için bir program yazıp çalıştıracaksınız.
Python programından gelen kimliği doğrulanmış istekler
Bir program, standart HTTP web istekleri aracılığıyla güvenli bir Cloud Run uygulamasında kimliği doğrulanmış istekler yapabilir ancak Authorization üstbilgisi ekleyebilir. Bu programlar için tek yeni zorluk, bu üstbilgiye yerleştirilecek geçerli ve süresi dolmamış bir kimlik jetonu almaktır. Bu jeton, Google Cloud Identity and Access Management (IAM) kullanılarak Cloud Run tarafından doğrulanır. Bu nedenle, jetonun IAM tarafından tanınan bir yetkili tarafından verilmesi ve imzalanması gerekir. Programların bu tür bir jetonun verilmesini istemek için kullanabileceği birçok dilde istemci kitaplıkları mevcuttur. Bu örnekte kullanılacak istemci kitaplığı Python google.auth istemci kitaplığıdır. Genel olarak web istekleri oluşturmak için çeşitli Python kitaplıkları vardır. Bu örnekte, popüler requests modülü kullanılmaktadır.
İlk adım, iki istemci kitaplığını yüklemektir:
pip install google-auth
pip install requests
Varsayılan kullanıcı için kimlik jetonu isteğinde bulunmak üzere kullanılan Python kodu:
credentials, _ = google.auth.default()
credentials.refresh(google.auth.transport.requests.Request())
identity_token = credentials.id_token
Cloud Shell veya kendi bilgisayarınızdaki standart terminal kabuğu gibi bir komut kabuğu kullanıyorsanız varsayılan kullanıcı, bu kabukta kimliği doğrulanmış olan kullanıcıdır. Cloud Shell'de bu genellikle Google'da oturum açan kullanıcıdır. Diğer durumlarda ise gcloud auth login veya başka bir gcloud komutuyla kimliği doğrulanan kullanıcıdır. Kullanıcı hiç giriş yapmadıysa varsayılan kullanıcı olmaz ve bu kod başarısız olur.
Başka bir programa istek gönderen bir program için genellikle kişinin kimliğini değil, istekte bulunan programın kimliğini kullanmak istersiniz. Hizmet hesapları tam da bu işe yarar. Cloud Run hizmetini, Cloud Firestore gibi API isteklerinde kullanacağı kimliği sağlayan özel bir hizmet hesabıyla dağıttınız. Bir program Google Cloud platformunda çalıştırıldığında istemci kitaplıkları, varsayılan kimlik olarak kendisine atanmış hizmet hesabını otomatik olarak kullanır. Bu nedenle, aynı program kodu her iki durumda da çalışır.
Eklenmiş bir Yetkilendirme başlığıyla istekte bulunmak için kullanılan Python kodu:
auth_header = {"Authorization": "Bearer " + identity_token}
response = requests.get(url, headers=auth_header)
Aşağıdaki eksiksiz Python programı, tüm kayıtlı iş ortaklarını almak için Cloud Run hizmetine kimliği doğrulanmış bir istekte bulunur, ardından adlarını ve atanan kimliklerini yazdırır. Bu kodu print_partners.py dosyasına kaydetmek için aşağıdaki komutu kopyalayıp çalıştırın.
cat > ./print_partners.py << EOF
def print_partners():
import google.auth
import google.auth.transport.requests
import requests
credentials, _ = google.auth.default()
credentials.refresh(google.auth.transport.requests.Request())
identity_token = credentials.id_token
auth_header = {"Authorization": "Bearer " + identity_token}
response = requests.get("${SERVICE_URL}/partners", headers=auth_header)
parsed_response = response.json()
partners = parsed_response["data"]
for partner in partners:
print(f"{partner['partnerId']}: {partner['name']}")
print_partners()
EOF
Bu programı bir kabuk komutuyla çalıştıracaksınız. Programın bu kimlik bilgilerini kullanabilmesi için önce varsayılan kullanıcı olarak kimliğinizi doğrulamanız gerekir. Aşağıdaki gcloud auth komutunu çalıştırın:
gcloud auth application-default login
Giriş işlemini tamamlamak için talimatları uygulayın. Ardından programı komut satırından çalıştırın:
python print_partners.py
Çıkış aşağıdaki gibi görünür:
10102: Zippy food delivery
67292: Foodful
Programın isteği, kimliğinizle kimliği doğrulandığı için Cloud Run hizmetine ulaştı. Bu projenin sahibi olduğunuzdan, varsayılan olarak programı çalıştırma yetkiniz var. Bu programın bir hizmet hesabının kimliği altında çalışması daha yaygındır. Cloud Run veya App Engine gibi çoğu Google Cloud ürününde çalıştırıldığında varsayılan kimlik bir hizmet hesabı olur ve kişisel hesap yerine kullanılır.
7. 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 Giriş Trafiğinin Güvenliğini Sağlama
- 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.