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. Uygulama, Cymbal Eats uygulamasının "iş ortağı kayıt hizmeti"dir. Yemek siparişlerini işlemek için Cymbal Eats ile çalışan şirketler tarafından kullanılır.
Öğ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ılan uygulamanın güvenliğini artırmak için dağıtım adımlarını değiştirirsiniz.
Ardından, uygulamaya erişimi nasıl yetkilendireceğinizi ve yetkili istekler nasıl göndereceğinizi göreceksiniz.
Bu makalede, uygulama dağıtım güvenliğine dair kapsamlı bir inceleme yapılmamaktadır. Bunun yerine, gelecekteki tüm uygulama dağıtımlarınızda çok az çabayla güvenliklerini artıracak değişikliklere yer verilmektedir.
2. Kurulum ve Gereksinimler
Kendi hızınızda 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.
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 Cloud Shell'in ne olduğunu açıklayan bir ara ekran (ekranın altında) gösterilir. Bu durumda Devam'ı tıklayın (bu ekranı bir daha görmezsiniz). Tek seferlik ekran aşağıdaki gibi görünür:
Cloud Shell'e bağlanmak ve ortam oluşturmak yalnızca birkaç dakikanızı alır.
Bu sanal makinede ihtiyacınız olan tüm geliştirme araçları yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud'da çalışır. Bu sayede ağ performansını ve kimlik doğrulamayı büyük ölçüde iyileştirir. Bu kod laboratuvarındaki çalışmanızın tamamı olmasa da büyük bir kısmı yalnızca bir tarayıcı veya Chromebook'unuzla yapılabilir.
Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin proje kimliğinize göre ayarlandığını görürsünüz.
- Kimliğinizi doğrulamak için Cloud Shell'de aşağıdaki 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>
Aksi takdirde aşağıdaki komutla ayarlayabilirsiniz:
gcloud config set project <PROJECT_ID>
Komut çıkışı
Updated property [core/project].
Ortam Kurulumu
Bu laboratuvarda Cloud Shell komut satırında komutlar çalıştıracaksınız. Genellikle komutları kopyalayıp olduğu gibi yapıştırabilirsiniz ancak bazı durumlarda yer tutucu değerlerini doğru değerlerle değiştirmeniz gerekir.
- 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 SERVICE_NAME=partner-registration-service
- Uygulamanızı çalıştıracak Cloud Run hizmet API'sini, NoSQL veri depolama alanı sağlayacak Firestore API'yi, dağıtım komutu tarafından kullanılacak Cloud Build API'yi ve oluşturulurken 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ı yerel modda başlatın. Bu komut App Engine API'yi kullandığından önce bu API'nin etkinleştirilmesi gerekir.
Komut, App Engine için bir bölge (kullanmayacağız ancak geçmiş nedenlerle oluşturmamız gerekir) ve veritabanı için bir bölge belirtmelidir. App Engine için us-central, veritabanı için nam5 kullanacağız. 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. README dosyasını inceleyin
Düzenleyiciyi açıp 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ımların bazıları, dikkate alınması gereken dolaylı 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
dosyasını ç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 uygulamalarla değil, herhangi bir yazılımın geliştirilmesiyle ilgilidir. Bu laboratuvar dağıtıma odaklandığından bu konuyu ele almıyor ancak konuyu ayrı olarak araştırmak isteyebilirsiniz.
4. ve 5. adımlar: deploy.sh
dosyasını düzenleyip çalıştırma
Bu adımlar, uygulamayı Cloud Run'a dağıtır ve çoğu seçeneği varsayılan ayarlarında bırakır. Dağıtım işlemini daha güvenli hale getirmek için bu adımı iki önemli şekilde değiştireceksiniz:
- Kimlik doğrulaması yapılmamış erişime izin vermeyin. Keşif sırasında bir şeyleri denemek için buna izin vermek uygun olabilir ancak bu, ticari iş ortaklarının kullanması için tasarlanmış bir web hizmetidir ve her zaman kullanıcılarının kimliğini doğrulamalıdır.
- Uygulamanın, muhtemelen ihtiyaç duyulandan daha fazla API ve kaynak erişimine sahip olacak varsayılan bir hesap yerine yalnızca gerekli ayrıcalıklara sahip ö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 ila 11. adımlar: Doğru davranışı doğrulamak için örnek web istekleri gönderin
Uygulama dağıtımı artık kimlik doğrulama gerektirdiğinden, bu istekler artık istek sahibinin kimliğini kanıtlamalıdır. Bu dosyaları değiştirmek yerine doğrudan komut satırından istek gönderirsiniz.
4. Hizmeti güvenli bir şekilde dağıtma
deploy.sh
komut dosyasında yapılması gereken iki değişiklik tespit edildi: kimliği doğrulanmamış erişime izin vermemek ve minimum ayrıcalıklara sahip özel bir hizmet hesabı kullanmak.
Önce yeni bir hizmet hesabı oluşturur, ardından deploy.sh
komut dosyasını bu hizmet hesabını referans alacak ve kimliği doğrulanmamış erişime izin vermeyecek şekilde düzenler, ardından değiştirilmiş deploy.sh komut dosyasını çalıştırmadan önce değiştirilmiş komut dosyasını çalıştırarak hizmeti dağıtırsınız.
Bir hizmet hesabı oluşturun ve bu hesaba Firestore/Datastore'a gerekli erişimi 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(–no-allow-unauthenticated) ve dağıtılan uygulama için yeni hizmet hesabını(–service-account) belirtecek şekilde değiştirin. GOOGLE_PROJECT_ID değerini kendi projenizin kimliğiyle düzeltin.
İlk iki satırı siler ve diğer üç satırı aşağıda gösterildiği gibi değiştirirsiniz.
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 bir sipariş getirmeyi deneyin:
curl -i -X GET $SERVICE_URL/partners
curl
komutu için -i
işareti, yanıt üst bilgilerini çıktıya eklemesini söyler. Çıktının ilk satırı şu şekilde olmalıdır:
HTTP/2 403
Uygulama, kimliği doğrulanmayan isteklere izin vermeme seçeneğiyle dağıtıldı. Bu curl komutu kimlik doğrulama bilgisi içermediğinden Cloud Run tarafından reddedilir. Gerçekten dağıtılan uygulama, bu istekle çalıştırılmaz veya bu istekten veri almaz.
5. Kimlik doğrulanmış istekler gönderme
Dağıtılan uygulama, web istekleri gönderilerek çağrılır. Bu isteklerin Cloud Run'un izin vermesi için kimlik doğrulaması yapılması gerekir. Web isteklerinin kimliği, formun Authorization
başlığı eklenerek doğrulanır:
Authorization: Bearer
identity-token
identity-token, güvenilir bir kimlik doğrulama sağlayıcısı tarafından verilen kısa süreli, kriptografik olarak imzalanmış, kodlanmış bir dizedir. Bu durumda, süresi dolmamış, geçerli, Google tarafından verilen bir kimlik jetonu gereklidir.
Kullanıcı hesabınızla istek gönderme
Google Cloud CLI aracı, varsayılan olarak kimliği doğrulanmış kullanıcı için jeton sağlayabilir. Kendi hesabınız için kimlik jetonu almak ve bu jetonu ID_TOKEN ortam değişkenine kaydetmek üzere aşağıdaki 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 yapmak ü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 çıktısı HTTP/2 200
ile başlamalıdır. Bu, isteğin kabul edildiğini ve yerine getirildiğini gösterir. (Bir saat bekleyip bu isteği tekrar denerseniz jetonun süresi dolduğu için istek başarısız olur.) Yanıtın gövdesi, boş bir satırdan sonra çıkışın sonunda yer alır:
{"status":"success","data":[]}
Henüz iş ortağı yok.
İki curl
komutuyla dizindeki örnek JSON verilerini kullanarak 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"
İki kayıtlı iş ortağı hakkında bilgi veren, çok daha fazla içeriğe sahip JSON verilerini görürsünüz.
Yetkisiz hesap olarak istek gönderme
Son adımda yapılan kimliği doğrulanmış istek, yalnızca kimliği doğrulandığı için değil, kimliği doğrulanmış kullanıcının (hesabınız) yetkili olduğu için de başarılı oldu. Yani hesabın, uygulamayı çağırma izni vardı. Kimliği doğrulanmış tüm hesapların bunu yapmaya yetkisi yoktur.
Önceki isteğinde kullanılan varsayılan hesap, uygulamayı içeren projeyi oluşturan hesap olduğu ve varsayılan olarak hesaptaki tüm Cloud Run uygulamalarını çağırma izni verdiği için yetkilendirilmiştir. Gerekirse bu izin iptal edilebilir. Bu, üretim uygulamasında istenilen bir durumdur. Bunu şimdi yapmak yerine, atanmış ayrıcalıkları veya rolleri olmayan yeni bir hizmet hesabı oluşturup dağıtılan uygulamaya erişmeye çalışmak için bu hesabı kullanırsınız.
tester
adlı bir hizmet hesabı oluşturun.
gcloud iam service-accounts create tester
- Bu yeni hesap için, daha önce varsayılan hesabınız için aldığınıza benzer bir kimlik jetonu alırsınız. Ancak bunun için varsayılan hesabınızın, hizmet hesaplarının kimliğine bürünme iznine sahip 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
- Ardından, bu yeni hesap için kimlik jetonunu TEST_IDENTITY ortam değişkenine kaydetmek üzere aşağıdaki komutu çalıştırın. Komut bir hata mesajı gösteriyorsa bir iki dakika bekleyip tekrar deneyin.
export TEST_TOKEN=$( \
gcloud auth print-identity-token \
--impersonate-service-account \
"tester@$PROJECT_ID.iam.gserviceaccount.com" \
)
- Kimlik doğrulaması yapılmış web isteğini, önceki gibi yapın ancak bu kimlik jetonunu kullanın:
curl -i -X GET $SERVICE_URL/partners \
-H "Authorization: Bearer $TEST_TOKEN"
İstek kimliği doğrulanmış olsa da yetkilendirilmediği için komut çıktısı yine HTTP/2 403
ile başlar. Yeni hizmet hesabının bu uygulamayı çağırma izni yok.
Hesabı yetkilendirme
Bir kullanıcı veya hizmet hesabının, Cloud Run hizmetine istek gönderebilmesi için Cloud Run Çağırıcı rolüne sahip olması gerekir. Test kullanıcısı hizmet hesabına aşağıdaki komutu kullanarak 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 kimlik doğrulaması yapılmış isteği tekrarlayın. İlk kaydedildikten 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şlar ve son satırda JSON yanıtı bulunur. Bu istek Cloud Run tarafından kabul edildi ve uygulama tarafından işlendi.
6. Programların kimliğini doğrulama ve kullanıcıların kimliğini doğrulama
Şimdiye kadar gönderdiğiniz kimlik doğrulaması yapılmış istekler için 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ına sahip bir web tarayıcısı kullanılarak yapılamaz. Kullanıcı bir bağlantıyı veya bir web sayfasındaki formu göndermek için bir düğmeyi tıkladığında tarayıcı, kimliği doğrulanmış istekler için Cloud Run tarafından gereken Authorization
üstbilgisini eklemez.
Cloud Run'un 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ılara yönelik web uygulamalarını barındırabilir ancak bu tür uygulamalar, Cloud Run'u kullanıcıların web tarayıcılarından gelen kimliği doğrulanmamış isteklere izin verecek şekilde ayarlamalıdır. Uygulamalar kullanıcı kimlik doğrulaması gerektiriyorsa Cloud Run'dan bunu yapmasını istemek yerine uygulamanın bunu yapması gerekir. Uygulama bunu Cloud Run dışındaki web uygulamalarının yaptığı şekilde yapabilir. Bunun nasıl yapıldığı bu codelab'in kapsamı dışındadır.
Şimdiye kadarki örnek isteklerin yanıtlarının web sayfaları değil, JSON nesneleri olduğunu fark etmiş olabilirsiniz. Bunun nedeni, bu iş ortağı kaydı hizmetinin programların kullanması için tasarlanmış olması ve JSON'un programların kullanabileceği uygun bir biçim olmasıdır. Ardından, bu verileri tüketmek ve 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 üzerinden güvenli bir Cloud Run uygulamasına kimliği doğrulanmış istekler gönderebilir ancak bu istekler Authorization
üst bilgisi içermelidir. Bu programlar için tek yeni zorluk, bu üstbilgiye yerleştirilecek geçerli ve süresi dolmamış bir kimlik jetonu elde etmektir. Bu jeton, Google Cloud Identity and Access Management (IAM) kullanılarak Cloud Run tarafından doğrulanacağından jetonun IAM tarafından tanınan bir yetkili tarafından yayınlanması 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 Python google.auth
istemci kitaplığı kullanılacaktır. Genel olarak web isteği göndermek için birkaç Python kitaplığı 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 bulunmaya yarayan Python kodu:
credentials, _ = google.auth.default()
credentials.refresh(google.auth.transport.requests.Request())
identity_token = credentials.id_token
Cloud Shell gibi bir komut kabuğu veya kendi bilgisayarınızda standart terminal kabuğu kullanıyorsanız varsayılan kullanıcı, söz konusu kabukta kimlik doğrulaması yapan kullanıcıdır. Cloud Shell'de bu genellikle Google'da oturum açmış kullanıcıdır. Diğer durumlarda, gcloud auth login
veya başka bir gcloud
komutuyla kimlik doğrulaması yapan 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 programdan istek alan bir program için genellikle bir kişinin kimliğini değil, istek gönderen programın kimliğini kullanmak istersiniz. Hizmet hesapları bu amaçla kullanılır. 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 kimliği olarak kendisine atanan hizmet hesabını otomatik olarak kullanır. Bu nedenle, aynı program kodu her iki durumda da çalışır.
Eklenmiş bir Yetkilendirme başlığıyla istek göndermek için Python kodu:
auth_header = {"Authorization": "Bearer " + identity_token}
response = requests.get(url, headers=auth_header)
Aşağıdaki eksiksiz Python programı, kayıtlı tüm iş ortaklarını almak için Cloud Run hizmetine kimlik doğrulaması yapılmış bir istek gönderir ve 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ırırsı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ış şu şekilde görünür:
10102: Zippy food delivery
67292: Foodful
Program, kimliğinizle kimlik doğrulaması yapıldığı için Cloud Run hizmetine ulaştı. Bu projenin sahibi olduğunuzdan ve varsayılan olarak çalıştırma yetkiniz olduğundan programın isteği Cloud Run hizmetine ulaştı. Bu programın bir hizmet hesabının kimliği altında çalıştırılması 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, 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 giriş trafiğinin güvenliğini sağlama
- 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.