arrow_back

Kullanıcı Kimliği Doğrulama: Identity-Aware Proxy

Join Sign in
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Kullanıcı Kimliği Doğrulama: Identity-Aware Proxy

Lab 1 hour universal_currency_alt 1 Credit show_chart Introductory
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP499

Google Cloud Rehbersiz Laboratuvarları

Genel Bakış

Bu laboratuvarda, Google App Engine ile minimal bir web uygulaması oluşturacak, ardından uygulamaya erişimi kısıtlamak ve kullanıcı kimliği bilgileri sağlamak için Identity-Aware Proxy'yi (IAP) kullanmanın çeşitli yollarını keşfedeceksiniz. Uygulamanız şunları yapabilecek:

  • Bir karşılama sayfası gösterme
  • IAP tarafından sağlanan kullanıcı kimlik bilgilerine erişme
  • Kullanıcı kimlik bilgilerinde adres sahteciliğini önlemek için kriptografik doğrulama kullanma

Neler öğreneceksiniz?

  • Python kullanarak basit bir App Engine uygulaması yazma ve dağıtma
  • Uygulamanıza erişimi kısıtlamak için IAP'yi etkinleştirme ve devre dışı bırakma
  • Kullanıcı kimliği bilgilerini IAP'den uygulamanıza taşıma
  • Adres sahteciliğine karşı koruma sağlamak için IAP'den gelen bilgileri kriptografik olarak doğrulama

Giriş

Web uygulamanızdaki kullanıcıların kimliklerini doğrulamak çoğunlukla gereklidir ve genellikle uygulamanızda özel programlama gerektirir. Google Cloud uygulamalarında ise bu sorumlulukları Identity-Aware Proxy hizmetine bırakabilirsiniz. Yalnızca seçili kullanıcıların erişimini kısıtlamanız gerekiyorsa uygulamada herhangi bir değişiklik yapılmasına gerek yoktur. Uygulamanın, kullanıcı kimliğini bilmesi gerekiyorsa (örneğin kullanıcı tercihlerini sunucu tarafında tutmak için) Identity-Aware Proxy bunu en az miktarda uygulama kodu ile sağlayabilir.

Identity-Aware Proxy nedir?

Identity-Aware Proxy (IAP); uygulamanıza gönderilen web isteklerini karşılayan, Google Kimlik Hizmeti'ni kullanarak istekte bulunan kullanıcıların kimliğini doğrulayan ve yalnızca yetkilendirdiğiniz kullanıcılardan gelen isteklere izin veren bir Google Cloud hizmetidir. Ayrıca istek başlıklarını, kimliği doğrulanmış kullanıcı hakkında bilgi içerecek şekilde değiştirebilir.

Gerekenler

Python programlama dilinde temel düzeyde bilginizin olması, öğrenme deneyiminizi olumlu yönde etkileyecektir.

Bu laboratuvar, Google App Engine ve IAP üzerinde odaklanmıştır. Alakalı olmayan kavramlar ve kod blokları işaretlenmiştir ve yalnızca kopyalayıp yapıştırmanız için kullanımınıza sunulmuştur.

Kurulum ve şartlar

Laboratuvarı Başlat düğmesini tıklamadan önce

Buradaki talimatları okuyun. Laboratuvarlar süreli olduğundan duraklatılamaz. Laboratuvarı Başlat'ı tıkladığınızda başlayan zamanlayıcı, Google Cloud kaynaklarının ne süreyle kullanımınıza açık durumda kalacağını gösterir.

Bu uygulamalı laboratuvarı kullanarak, laboratuvar etkinliklerini gerçek bir bulut ortamında (Simülasyon veya demo ortamında değil.) gerçekleştirebilirsiniz. Bu olanağın sunulabilmesi için size yeni, geçici kimlik bilgileri verilir. Bu kimlik bilgilerini laboratuvar süresince Google Cloud'da oturum açmak ve Google Cloud'a erişmek için kullanırsınız.

Bu laboratuvarı tamamlamak için şunlar gerekir:

  • Standart bir internet tarayıcısına erişim (Chrome Tarayıcı önerilir).
Not: Bu laboratuvarı çalıştırmak için tarayıcıyı gizli pencerede açın. Aksi takdirde, kişisel hesabınızla öğrenci hesabınız arasında oluşabilecek çakışmalar nedeniyle kişisel hesabınızdan ek ücret alınabilir.
  • Laboratuvarı tamamlamak için yeterli süre. (Laboratuvarlar, başlatıldıktan sonra duraklatılamaz)
Not: Kişisel bir Google Cloud hesabınız veya projeniz varsa bu laboratuvarda kullanmayın. Aksi takdirde hesabınızdan ek ücret alınabilir.

Laboratuvarınızı başlatma ve Google Cloud Console'da oturum açma

  1. Laboratuvarı Başlat düğmesini tıklayın. Laboratuvar için ödeme yapmanız gerekiyorsa ödeme yöntemini seçebileceğiniz bir pop-up açılır. Soldaki Laboratuvar Ayrıntıları panelinde şunlar yer alır:

    • Google Console'u Aç düğmesi
    • Kalan süre
    • Bu laboratuvarda kullanmanız gereken geçici kimlik bilgileri
    • Bu laboratuvarda ilerlemek için gerekebilecek diğer bilgiler
  2. Google Console'u Aç'ı tıklayın. Laboratuvar, kaynakları çalıştırır ve sonra Oturum aç sayfasını gösteren başka bir sekme açar.

    İpucu: Sekmeleri ayrı pencerelerde, yan yana açın.

    Not: Hesap seçin iletişim kutusunu görürseniz Başka Bir Hesap Kullan'ı tıklayın.
  3. Gerekirse Laboratuvar Ayrıntıları panelinden Kullanıcı adı'nı kopyalayın ve Oturum aç iletişim kutusuna yapıştırın. Sonraki'ni tıklayın.

  4. Laboratuvar Ayrıntıları panelinden Şifre'yi kopyalayın ve Hoş geldiniz iletişim penceresine yapıştırın. Sonraki'ni tıklayın.

    Önemli: Sol paneldeki kimlik bilgilerini kullanmanız gerekir. Google Cloud Öğrenim Merkezi kimlik bilgilerinizi kullanmayın. Not: Bu laboratuvarda kendi Google Cloud hesabınızı kullanabilmek için ek ücret ödemeniz gerekebilir.
  5. Sonraki sayfalarda ilgili düğmeleri tıklayarak ilerleyin:

    • Şartları ve koşulları kabul edin.
    • Geçici bir hesap kullandığınızdan kurtarma seçenekleri veya iki faktörlü kimlik doğrulama eklemeyin.
    • Ücretsiz denemelere kaydolmayın.

Birkaç saniye sonra Cloud Console bu sekmede açılır.

Not: Soldaki Gezinme menüsü'nü tıklayarak Google Cloud ürün ve hizmetlerinin listelendiği menüyü görüntüleyebilirsiniz. Gezinme menüsü simgesi

Cloud Shell'i etkinleştirme

Cloud Shell, çok sayıda geliştirme aracı içeren bir sanal makinedir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Cloud Shell, Google Cloud kaynaklarınıza komut satırı erişimi sağlar.

  1. Google Cloud Console'un üst kısmından Cloud Shell'i etkinleştir Cloud Shell'i etkinleştir simgesi simgesini tıklayın.

Bağlandığınızda, kimliğiniz doğrulanmış olur. Proje ise PROJECT_ID'nize göre ayarlanmıştır. Çıkış, bu oturum için PROJECT_ID'yi tanımlayan bir satır içerir:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud, Google Cloud'un komut satırı aracıdır. Cloud Shell'e önceden yüklenmiştir ve sekmeyle tamamlamayı destekler.

  1. (İsteğe bağlı) Etkin hesap adını şu komutla listeleyebilirsiniz:
gcloud auth list
  1. Yetkilendir'i tıklayın.

  2. Çıkışınız aşağıdaki gibi görünecektir:

Çıkış:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (İsteğe bağlı) Proje kimliğini şu komutla listeleyebilirsiniz:
gcloud config list project

Çıkış:

[core] project = <project_ID>

Örnek çıkış:

[core] project = qwiklabs-gcp-44776a13dea667a6 Not: gcloud ile ilgili tüm belgeleri, Google Cloud'daki gcloud CLI'ya genel bakış rehberinde bulabilirsiniz.

Kodu indirme

Komut yazabilmek için Cloud Shell'de komut satırı alanını tıklayın.

Kodu, herkese açık depolama paketinden indirin ve ardından kod klasörüne geçiş yapın:

gsutil cp gs://spls/gsp499/user-authentication-with-iap.zip . unzip user-authentication-with-iap.zip cd user-authentication-with-iap

Bu klasör, bu laboratuvarın her adımı için bir alt klasör içerir. Her bir adımı gerçekleştirmek üzere doğru klasöre geçeceksiniz.

1. görev: Uygulamanızı dağıtma ve IAP ile koruma

Bu, Python'da yazılmış ve yalnızca "Hello, World" karşılama sayfasını görüntüleyen bir App Engine Standard uygulamasıdır. Uygulamayı dağıtıp test edeceğiz, ardından IAP kullanarak uygulamaya erişimi kısıtlayacağız.

Uygulama kodunu inceleme

  • Ana proje klasöründen, bu adım için gerekli kodu içeren 1-HelloWorld alt klasörüne geçin.
cd 1-HelloWorld

Uygulama kodu, main.py dosyası içindedir. Flask web çerçevesini kullanarak web isteklerine bir şablonun içeriğiyle yanıt verir. Şablon dosyası templates/index.html içindedir ve bu adım için yalnızca basit HTML içerir. İkinci bir şablon dosyası, templates/privacy.html içinde son derece temel bir örnek gizlilik politikası içerir.

Başka iki dosya da mevcuttur: requirements.txt, uygulamanın kullandığı tüm varsayılan olmayan Python kitaplıklarını listeler. app.yaml ise Google Cloud'a bunun bir Python App Engine uygulaması olduğunu bildirir.

Aşağıda gösterildiği şekilde cat komutunu kullanarak kabuktaki her dosyayı listeleyebilirsiniz:

cat main.py

Alternatif olarak, Cloud Shell penceresinin sağ üst tarafındaki kalem simgesini tıklayarak Cloud Shell kod düzenleyiciyi başlatabilir ve kodu bu şekilde inceleyebilirsiniz.

Bu adım için herhangi bir dosyayı değiştirmenize gerek yoktur.

App Engine'e dağıtma

  1. Python çalışma zamanını python39 olarak güncelleyin.
sed -i 's/python37/python39/g' app.yaml
  1. Uygulamayı Python için App Engine Standard ortamına dağıtın.
gcloud app deploy
  1. Bölge seçin ().

  2. Devam etmek isteyip istemediğiniz sorulduğunda Evet anlamında Y tuşuna basın.

Not: GAIA yayılımıyla ilgili bir hata mesajı alıyorsanız gcloud app deploy komutunu yeniden çalıştırın.

Dağıtım, birkaç dakika içinde tamamlanacaktır. gcloud app browse komutuyla uygulamanızı görüntüleyebileceğinizi bildiren bir mesaj alacaksınız.

  1. İlgili komutu girin:
gcloud app browse
  1. Yeni bir sekmede açmak için bağlantıyı tıklayın veya gerekirse kendiniz yeni bir sekme açarak bağlantıyı açtığınız sekmeye kopyalayın. Bu uygulama ilk kez çalıştırıldığı için bir bulut örneği başlatıldığı sırada görüntülenmesi birkaç saniye sürecektir, ardından aşağıdaki pencereyi görmeniz gerekir.

IAP Hello World sekmeli sayfası

İnternete bağlı herhangi bir bilgisayardan aynı URL'yi açarak o web sayfasını görebilirsiniz. Erişim, henüz kısıtlanmamıştır.

Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın. Bir App Engine uygulamasını dağıtma

IAP ile erişimi kısıtlama

  1. Cloud konsolu penceresinde gezinme menüsü Gezinme menüsü simgesi > Güvenlik > Identity-Aware Proxy'yi tıklayın.

  2. API'Yİ ETKİNLEŞTİR'i tıklayın.

  3. IDENTITY-AWARE PROXY'YE GİT'i tıklayın.

  4. İZİN EKRANINI YAPILANDIR'ı tıklayın.

  5. Kullanıcı Türü bölümünde Dahili'yi seçin ve Oluştur'u tıklayın.

  6. Gerekli alanlara uygun değerleri girin:

Alan

Değer

Uygulama adı

IAP örneği

Kullanıcı desteği e-postası

Açılır listeden laboratuvar öğrencisi e-posta adresinizi seçin.

Uygulama ana sayfası

Uygulamanızı görüntülemek için kullandığınız URL'dir. Gerekirse Cloud Shell'de gcloud app browse komutunu tekrar çalıştırarak bu URL'yi yeniden bulabilirsiniz.

Uygulamanın gizlilik politikası bağlantısı

Uygulamadaki gizlilik sayfası bağlantısıdır. Ana sayfa bağlantısının sonuna /privacy eklenerek elde edilir

Yetkilendirilen alanlar

+ ALAN ADI EKLE'yi tıklayın. Uygulamanın URL'sinin ana makine adı kısmıdır (ör. iap-example-999999.appspot.com). Bunu daha önce açmış olduğunuz Hello World web sayfasının adres çubuğunda görebilirsiniz. Söz konusu URL'nin başındaki https:// kısmını veya sonundaki / kısmını dahil etmeyin.

Geliştiricinin iletişim bilgileri

En az bir e-posta adresi girin

  1. Kaydet ve Devam Et'i tıklayın.

  2. Kapsamlar için Kaydet ve Devam Et'i tıklayın.

  3. Özet için Kontrol Paneline Dön'ü tıklayın.

Kimlik bilgileri oluşturmanız istenebilir. Bu laboratuvar için kimlik bilgileri oluşturmanız gerekmez, bu nedenle bu tarayıcı sekmesini kapatabilirsiniz.

  1. Cloud Shell'de, Flex API'yi devre dışı bırakmak için şu komutu çalıştırın:
gcloud services disable appengineflex.googleapis.com Not: App Engine'de, farklı uygulama mimarileri için optimize edilmiş standart ve esnek ortamlar bulunur. Şu anda App Engine için IAP etkinleştirilirken Flex API'nin etkin olması durumunda Google Cloud, bir Flex Hizmet Hesabı arayacaktır. Laboratuvar projeniz, kolaylık sağlamak amacıyla halihazırda etkinleştirilmiş çok sayıda API ile birlikte gelir. Ancak bu, Flex API'nin bir Hizmet Hesabı oluşturulmadan etkinleştirildiği benzersiz bir durumu meydana getirir.
  1. Identity-Aware Proxy sayfasına geri dönün ve sayfayı yenileyin. Bu noktada, koruyabileceğiniz kaynakların bir listesini göreceksiniz.

IAP'yi etkinleştirme için App Engine uygulama satırında bulunan IAP sütunundaki açma/kapatma düğmesini tıklayın.

  1. Alan adı, IAP tarafından korunacaktır. Etkinleştir'i tıklayın.

IAP'nin etkin olup olmadığını test etme

  1. Bir tarayıcı sekmesi açın ve uygulamanızın URL'sine gidin. "Google ile Oturum Aç" ekranı açılır ve uygulamaya erişmek için giriş yapmanız istenir.

  2. Konsolda oturum açmak için kullandığınız hesap ile oturum açın. Erişiminizi reddeden bir ekran ile karşılaşacaksınız.

Uygulamanızı IAP ile başarıyla korudunuz ancak hangi hesaplara izin verileceğini IAP'ye henüz bildirmediniz.

  1. Konsolun Identity-Aware Proxy sayfasına dönün, App Engine uygulamasının yanındaki onay kutusunu seçin ve sayfanın sağ tarafındaki App Engine kenar çubuğuna bakın.

Erişimine izin verilmesi gereken her e-posta adresi (ya da Google Grubu adresi veya Workspace alan adı) Üye olarak eklenmelidir.

  1. Ana Hesap Ekle'yi tıklayın.

  2. Öğrenci e-posta adresinizi girin.

  3. Ardından Cloud IAP > IAP Güvenli Web Uygulaması Kullanıcısı rolünü seçerek rolü bu adrese atayın.

Aynı şekilde daha fazla adres veya Workspace alan adı girebilirsiniz.

&quot;App Engine Uygulaması&quot; iletişim kutusunda, Cloud IAP > IAP Güvenli Web Uygulaması Kullanıcısı rolüne ana hesap ekleme

  1. Kaydet'i tıklayın.

Pencerenin altında "Politika Güncellendi" mesajı görünecektir.

Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın. IAP'yi etkinleştirme ve politika ekleme

Erişimi test etme

Uygulamanıza geri dönün ve sayfayı yeniden yükleyin. Yetki verdiğiniz kullanıcı bilgileriyle giriş yaptığınız için artık web uygulamanızı görüyor olmanız gerekir.

Hala "Erişiminiz yok" sayfasını görüyorsanız IAP, yetkilendirmenizi yeniden kontrol etmemiştir. Bu durumda, şu adımları izleyin:

  1. URL'nin sonuna /_gcp_iap/clear_login_cookie ekleyerek ana sayfayı tarayıcınızda açın; adres https://iap-example-999999.appspot.com/_gcp_iap/clear_login_cookie şeklinde görünmelidir.
  2. Hesabınızın gösterildiği yeni bir "Google ile Oturum Aç" ekranı göreceksiniz. Hesabı tıklamayın. Bunun yerine, "Başka bir hesap kullan"ı tıklayın ve kimlik bilgilerinizi yeniden girin.
Not: Rol değişikliği yaklaşık bir dakika içinde geçerlilik kazanır. Önceki adımları uyguladıktan sonra sayfada hâlâ "Erişiminiz yok" mesajını görüyorsanız bir dakika bekleyip sayfayı yenilemeyi deneyin.

Bu adımlar, IAP'nin erişiminizi yeniden kontrol etmesini sağlar, ardından da uygulamanızın ana ekranını görmeniz gerekir.

Başka bir tarayıcıya erişiminiz varsa veya tarayıcınızda Gizli Mod'u kullanabiliyorsanız ve başka bir geçerli Gmail veya Workspace hesabınız varsa uygulama sayfanıza gitmek ve diğer hesapla giriş yapmak için diğer tarayıcıyı kullanabilirsiniz. Kullandığınız hesap yetkilendirilmediği için uygulamanızı değil, "Erişiminiz Yok" ekranını göreceksiniz.

2. görev: Kullanıcı kimlik bilgilerine erişme

Bir uygulama IAP ile korunduğunda IAP'nin geçirilen web isteği başlıklarında sağladığı kimlik bilgileri kullanılabilir. Bu adımda uygulama, giriş yapan kullanıcının e-posta adresini ve Google Kimlik Hizmeti tarafından o kullanıcıya kalıcı olarak atanan benzersiz kullanıcı kimliğini alacaktır. Bu veriler, karşılama sayfasında kullanıcıya gösterilecektir.

  • Cloud Shell'de bu adımla ilgili klasöre geçin:
cd ~/user-authentication-with-iap/2-HelloUser

App Engine'e dağıtma

  1. Python çalışma zamanını python39 olarak güncelleyin.
sed -i 's/python37/python39/g' app.yaml
  1. Dağıtım birkaç dakika süreceğinden, uygulamayı Python için App Engine Standard ortamına dağıtarak başlayın:
gcloud app deploy
  1. Devam etmek isteyip istemediğiniz sorulduğunda Evet anlamında Y tuşuna basın.

Dağıtım birkaç dakika içinde tamamlanacaktır. Beklerken uygulama dosyalarını aşağıda açıklanan şekilde inceleyebilirsiniz.

Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın. Kullanıcı Kimlik Bilgilerine Erişme

Uygulama dosyalarını inceleme

Bu klasör, daha önce dağıtmış olduğunuz 1-HelloWorld uygulamasında görünenlerle aynı dosya setini içerir ancak dosyalardan ikisi değiştirilmiştir: main.py ve templates/index.html. Program, IAP'nin istek başlıklarında sağladığı kullanıcı bilgilerini alacak şekilde değiştirilmiştir ve şablonda artık bu veriler bulunmaktadır.

main.py'de, IAP tarafından sağlanan kimlik verilerini alan iki satır bulunur:

user_email = request.headers.get('X-Goog-Authenticated-User-Email') user_id = request.headers.get('X-Goog-Authenticated-User-ID')

X-Goog-Authenticated-User- başlıkları IAP tarafından sağlanır ve adlar büyük/küçük harflere duyarlı değildir. Yani tercihe bağlı olarak tamamı küçük veya büyük harflerle girilebilir. Render_template ifadesi, görüntülenebilmeleri için artık bu değerleri içerir:

page = render_template('index.html', email=user_email, id=user_id)

index.html şablonu, adları çift küme parantezi içine alarak bu değerleri gösterebilir:

Hello, {{ email }}! Your persistent ID is {{ id }}.

Gördüğünüz üzere sağlanan veriler, accounts.google.com ile başlar, bu da bilginin nereden geldiğini gösterir. Uygulamanız, ham değerleri almak için isterseniz iki nokta dahil olmak üzere her şeyi kaldırabilir.

Güncellenmiş IAP'yi test etme

Hazır olduğunda dağıtıma dönerseniz uygulamanızı gcloud app browse komutuyla görebileceğinizi belirten bir mesaj alırsınız.

  1. İlgili komutu girin:
gcloud app browse
  1. Tarayıcınızda yeni bir sekme açılmıyorsa görüntülenen bağlantıyı kopyalayın ve normal olarak yeni bir sekmede açın. Aşağıdaki gibi bir sayfa görmeniz gerekir:

IAP Hello User sekmeli sayfası

Uygulamanızın yeni sürümünün önceki sürümün yerini alması için birkaç dakika beklemeniz gerekebilir. Yukarıdakine benzer bir sayfa görmek için gerekirse sayfayı yenileyin.

IAP'yi devre dışı bırakma

IAP devre dışı bırakılırsa veya bir şekilde atlanırsa (örneğin aynı bulut projeniz üzerinde çalışan diğer uygulamalar tarafından) bu uygulamaya ne olur? Görmek için IAP'yi kapatın.

  1. Cloud konsolu penceresinde gezinme menüsü > Güvenlik > Identity-Aware Proxy'yi tıklayın.
  2. App Engine uygulamasının yanındaki IAP açma/kapatma düğmesini tıklayarak IAP'yi devre dışı bırakın. DEVRE DIŞI BIRAK'ı tıklayın.

Bu eylemin, tüm kullanıcıların uygulamaya erişmesine izin vereceğine dair bir uyarı alacaksınız.

  1. Uygulama web sayfasını yenileyin. Herhangi bir kullanıcı bilgisi olmadan, aynı sayfayı görüyor olmanız gerekir:

Kullanıcı bilgisi içermeyen IAP Hello User sekmeli sayfası

Uygulama artık korunmuyor olduğundan, bir kullanıcı IAP'den geçmiş gibi görünen bir web isteği gönderebilir. Örneğin, bunu yapmak için Cloud Shell'den aşağıdaki curl komutunu çalıştırabilirsiniz (<your-url-here> kodunu, uygulamanız için doğru olan URL ile değiştirin):

curl -X GET <your-url-here> -H "X-Goog-Authenticated-User-Email: totally fake email"

Web sayfası komut satırında görüntülenecek ve aşağıdaki gibi görünecektir:

<!doctype html> <html> <head> <title>IAP Hello User</title> </head> <body> <h1>Hello World</h1> <p> Hello, totally fake email! Your persistent ID is None. </p> <p> This is step 2 of the User Authentication with IAP</em> codelab. </p> </body> </html>

Uygulamanın IAP'nin devre dışı bırakıldığını veya atlandığını bilmesi mümkün değildir. Bunun potansiyel bir risk olduğu durumlar için Kriptografik Doğrulama bir çözüm olabilir.

3. görev: Kriptografik Doğrulama kullanma

IAP'nin kapatılma veya atlanma riski söz konusuysa uygulamanız, aldığı kimlik bilgilerinin geçerli olup olmadığını kontrol edebilir. Bu, IAP tarafından eklenen, X-Goog-IAP-JWT-Assertion şeklinde üçüncü bir web isteği başlığını kullanır. Başlığın değeri, kullanıcı kimlik verilerini de içeren, kriptografik olarak imzalanmış bir nesnedir. Uygulamanız, dijital imzayı doğrulayabilir ve bu nesnede sağlanan verileri kullanarak bunların herhangi bir değişiklik yapılmadan IAP tarafından sağlandığından emin olabilir.

Dijital imza doğrulaması, en son Google ortak anahtar kümesini almak da dahil olmak üzere birkaç ekstra adım gerektirir. IAP'nin birileri tarafından devre dışı bırakılması veya atlanması riskini göz önünde bulundurarak ve uygulamanın hassasiyetine bağlı olarak uygulamanızın bu ekstra adımlara ihtiyaç duyup duymadığına karar verebilirsiniz.

  • Cloud Shell'de bu adımla ilgili klasöre geçin:
cd ~/user-authentication-with-iap/3-HelloVerifiedUser

App Engine'e dağıtma

  1. Python çalışma zamanını python39 olarak güncelleyin.
sed -i 's/python37/python39/g' app.yaml
  1. Uygulamayı Python için App Engine Standard ortamına dağıtın:
gcloud app deploy
  1. Devam etmek isteyip istemediğiniz sorulduğunda Evet anlamında Y tuşuna basın.

Dağıtım birkaç dakika içinde tamamlanacaktır. Beklerken uygulama dosyalarını aşağıda açıklanan şekilde inceleyebilirsiniz.

Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın. Kriptografik Doğrulama Kullanma

Uygulama dosyalarını inceleme

Bu klasör, 2-HelloUser'da görünenlerle aynı dosya setini içerir ancak iki dosya değiştirilmiş ve bir yeni dosya eklenmiştir. Yeni dosya auth.py'dir ve kriptografik olarak imzalanmış kimlik bilgilerini almak ve doğrulamak için bir user() yöntemi sağlar. Değiştirilmiş dosyalar ise main.py ve templates/index.html'dir, bunlar da artık söz konusu yöntemin sonuçlarını kullanır. Son dağıtımda bulunan doğrulanmamış başlıklar da karşılaştırma amacıyla gösterilir.

  • Yeni işlev, birincil olarak user() işlevi içindedir:
def user(): assertion = request.headers.get('X-Goog-IAP-JWT-Assertion') if assertion is None: return None, None info = jwt.decode( assertion, keys(), algorithms=['ES256'], audience=audience() ) return info['email'], info['sub']

assertion, belirtilen istek başlığında sağlanan, kriptografik olarak imzalanmış veridir. Kod, bu veriyi doğrulamak ve kodunu çözmek için bir kitaplıktan yararlanır. Doğrulama işleminde, imzalanan verileri kontrol etmek ve verilerin hangi kitleye yönelik hazırlandığını (esasen korunmakta olan Google Cloud projesi) bilmek için Google'ın sağladığı ortak anahtarlar kullanılır. Yardımcı fonksiyonlar keys() ve audience(), bu değerleri toplar ve döndürür.

İmzalanmış nesnede ihtiyacımız olan iki veri parçası vardır: doğrulanmış e-posta adresi ve benzersiz kimlik değeri (abone için sub içinde sağlanmış, standart alan).

Böylece 3. adım tamamlanmış olur.

Kriptografik Doğrulama'yı test etme

Dağıtım hazır olduğunda, uygulamanızı gcloud app browse ile görüntüleyebileceğinize dair bir mesaj alacaksınız.

  • İlgili komutu girin:
gcloud app browse

Tarayıcınızda yeni bir sekme açılmıyorsa görüntülenen bağlantıyı kopyalayın ve normal olarak yeni bir sekmede açın.

Daha önce IAP'yi devre dışı bıraktığınızı, bu nedenle uygulamanın hiçbir IAP verisi sağlamadığını unutmayın. Aşağıdaki gibi bir sayfa görmeniz gerekir:

IAP Hello Verified tabbed page ID is None

Daha önce olduğu gibi, sayfanın yeni sürümünü görmek için en yeni sürüm kullanıma girene kadar birkaç dakika beklemeniz gerekebilir.

IAP devre dışı bırakıldığı için kullanıcı bilgisi mevcut değildir. Şimdi IAP'yi tekrar etkinleştirin.

  1. Cloud konsolu penceresinde gezinme menüsü > Güvenlik > Identity-Aware Proxy'yi tıklayın.

  2. App Engine uygulamasının yanındaki IAP açma/kapatma düğmesini tıklayarak IAP'yi yeniden etkinleştirin. ETKİNLEŞTİR'i tıklayın.

  3. Sayfayı yenileyin. Sayfa aşağıdaki gibi görünecektir:

Hello Verified User tabbed page, you have an ID

Doğrulanan yöntemle sağlanan e-posta adresinde accounts.google.com: ön ekinin bulunmadığına dikkat edin.

IAP'nin kapatılması veya atlanması durumunda, doğrulanan veriler eksik veya geçersiz olur, çünkü Google'ın özel anahtarlarının sahibi tarafından oluşturulmadıkça geçerli bir imzaya sahip olmaları mümkün değildir.

Tebrikler!

Bir App Engine web uygulamasını dağıttınız. İlk olarak, uygulamaya erişimi yalnızca seçtiğiniz kullanıcılarla sınırlandırdınız. Ardından, IAP'nin uygulamanıza erişim izni verdiği kullanıcıların kimliklerini aldınız ve görüntülediniz, ayrıca IAP'nin devre dışı bırakılması veya atlanması durumunda bu bilgilerde nasıl adres sahteciliği yapılabileceğini gördünüz. Son olarak, kullanıcı kimliğinin kriptografik olarak imzalanmış, adres sahteciliği için kullanılması mümkün olmayan onaylamalarını doğruladınız.

Görevinizi tamamlama

Bu yönlendirmesiz öğrenim laboratuvarı, Güvenlik ve Kimlik Hakkında Temel Bilgiler ve Google Cloud'da Ağ İletişimiyle İlgili Temel Bilgiler görevlerinin parçasıdır. Görevler, bir öğrenme rotasını oluşturan birbiriyle bağlantılı laboratuvar dizilerini ifade eder. Bir görevi tamamladığınızda başarınızın ödülü olarak rozet kazanırsınız. Rozetlerinizi herkese açık hâle getirebilir ve rozetin bağlantısını online özgeçmişinizde veya sosyal medya hesabınızda paylaşabilirsiniz. Bu laboratuvarı içeren herhangi bir göreve kaydolun ve hemen bir tamamlama kredisi kazanın. Tüm mevcut görevleri görmek için Google Cloud Öğrenim Merkezi kataloğuna bakın.

Sonraki laboratuvarınıza katılın

Görevinize Cloud KMS'yi Kullanmaya Başlama ile devam edin veya farklı bir Google Cloud Öğrenim Merkezi laboratuvarı deneyin. Örneğin:

Sonraki adımlar / Daha fazla bilgi

Lisans

Bu çalışma, Creative Commons Attribution 2.0 Genel Amaçlı Lisans ile lisans altına alınmıştır.

Google Cloud eğitimi ve sertifikası

...Google Cloud teknolojilerinden en iyi şekilde yararlanmanıza yardımcı olur. Derslerimizde teknik becerilere odaklanırken en iyi uygulamalara da yer veriyoruz. Gerekli yetkinlik seviyesine hızlıca ulaşmanız ve öğrenim maceranızı sürdürebilmeniz için sizlere yardımcı olmayı amaçlıyoruz. Temel kavramlardan ileri seviyeye kadar farklı eğitim programlarımız mevcut. Ayrıca, yoğun gündeminize uyması için talep üzerine sağlanan, canlı ve sanal eğitim alternatiflerimiz de var. Sertifikasyonlar ise Google Cloud teknolojilerindeki becerilerinizi ve uzmanlığınızı doğrulamanıza ve kanıtlamanıza yardımcı oluyor.

Kılavuzun Son Güncellenme Tarihi: 28 Şubat 2024

Laboratuvarın Son Test Edilme Tarihi: 28 Şubat 2024

Telif Hakkı 2024 Google LLC Tüm hakları saklıdır. Google ve Google logosu, Google LLC şirketinin ticari markalarıdır. Diğer tüm şirket ve ürün adları ilişkili oldukları şirketlerin ticari markaları olabilir.