arrow_back

Uwierzytelnianie użytkowników: Identity-Aware Proxy

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

Uwierzytelnianie użytkowników: Identity-Aware Proxy

Lab 1 godz. universal_currency_alt 1 punkt show_chart Wprowadzające
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP499

Moduły Google Cloud do samodzielnego ukończenia

Opis

W tym module utworzysz niewielką aplikację internetową w Google App Engine, a następnie poznasz różne sposoby ograniczania dostępu do tej aplikacji i przekazywania do niej informacji o tożsamości użytkowników z wykorzystaniem Identity-Aware Proxy (IAP). Twoja aplikacja będzie:

  • wyświetlać stronę powitalną,
  • uzyskiwać dostęp do pochodzących z IAP informacji o tożsamości użytkowników,
  • zapobiegać podszywaniu się i podawaniu fałszywych informacji o tożsamości przy użyciu weryfikacji kryptograficznej.

Czego się nauczysz

  • Jak pisać i wdrażać proste aplikacje App Engine w języku Python.
  • Jak ograniczać dostęp do aplikacji przy użyciu IAP i wyłączać te ograniczenia.
  • Jak pobierać informacje o tożsamości użytkowników z IAP i przekazywać je do aplikacji.
  • Jak kryptograficznie sprawdzać informacje z IAP i chronić aplikację przed podszywaniem się.

Wstęp

Uwierzytelnianie użytkowników aplikacji internetowej jest często niezbędne i zwykle wymaga zaprogramowania aplikacji w specjalny sposób. W przypadku aplikacji Google Cloud za te zadania jest odpowiedzialna usługa Identity-Aware Proxy. Jeśli chcesz przyznać dostęp tylko wybranym użytkownikom, nie musisz wprowadzać w aplikacji żadnych zmian. Jeśli do aplikacji muszą być przekazywane informacje o tożsamości użytkownika (aby na przykład przechowywać jego preferencje na serwerze), zadanie to może wykonać Identity-Aware Proxy, przy czym wymaga to minimalnej ingerencji w kod aplikacji.

Co to jest Identity-Aware Proxy?

Identity-Aware Proxy (IAP) to usługa Google Cloud, która przechwytuje wysyłane do aplikacji żądania sieciowe, uwierzytelnia użytkownika, przesyłając żądania do usługi tożsamości Google, i przekazuje do aplikacji tylko te z nich, które pochodzą od autoryzowanego użytkownika. Dodatkowo może modyfikować nagłówki żądań, dodając do nich informacje o uwierzytelnionym użytkowniku.

Czego potrzebujesz

Podstawowa wiedza o programowaniu w języku Python może ułatwić naukę.

Ten moduł dotyczy głównie Google App Engine i IAP. Nieistotne koncepcje i bloki kodu zostały zamaskowane. Można je po prostu skopiować i wkleić.

Konfiguracja i wymagania

Zanim klikniesz przycisk Rozpocznij moduł

Zapoznaj się z tymi instrukcjami. Moduły mają limit czasowy i nie można ich zatrzymać. Gdy klikniesz Rozpocznij moduł, na liczniku wyświetli się informacja o tym, na jak długo udostępniamy Ci zasoby Google Cloud.

W tym praktycznym module możesz spróbować swoich sił w wykonywaniu opisywanych działań w prawdziwym środowisku chmury, a nie w jego symulacji lub wersji demonstracyjnej. Otrzymasz nowe, tymczasowe dane logowania, dzięki którym zalogujesz się i uzyskasz dostęp do Google Cloud na czas trwania modułu.

Do ukończenia modułu potrzebne będą:

  • dostęp do standardowej przeglądarki internetowej (zalecamy korzystanie z przeglądarki Chrome).
Uwaga: uruchom ten moduł w oknie incognito lub przeglądania prywatnego. Dzięki temu unikniesz konfliktu między swoim kontem osobistym a kontem do nauki, co mogłoby spowodować naliczanie oddatkowych opłat na koncie osobistym.
  • Odpowiednia ilość czasu na ukończenie modułu – pamiętaj, że gdy rozpoczniesz, nie możesz go wstrzymać.
Uwaga: jeśli masz już osobiste konto lub projekt w Google Cloud, nie używaj go w tym module, aby uniknąć naliczania opłat na koncie.

Rozpoczynanie modułu i logowanie się w konsoli Google Cloud

  1. Kliknij przycisk Rozpocznij moduł. Jeśli moduł jest odpłatny, otworzy się wyskakujące okienko, w którym możesz wybrać formę płatności. Po lewej stronie znajduje się panel Szczegóły modułu z następującymi elementami:

    • przyciskiem Otwórz konsolę Google;
    • czasem, który Ci pozostał;
    • tymczasowymi danymi logowania, których musisz użyć w tym module;
    • innymi informacjami potrzebnymi do ukończenia modułu.
  2. Kliknij Otwórz konsolę Google. Moduł uruchomi zasoby, po czym otworzy nową kartę ze stroną logowania.

    Wskazówka: otwórz karty obok siebie w osobnych oknach.

    Uwaga: jeśli pojawi się okno Wybierz konto, kliknij Użyj innego konta.
  3. W razie potrzeby skopiuj nazwę użytkownika z panelu Szczegóły modułu i wklej ją w oknie logowania. Kliknij Dalej.

  4. Skopiuj hasło z panelu Szczegóły modułu i wklej je w oknie powitania. Kliknij Dalej.

    Ważne: musisz użyć danych logowania z panelu po lewej stronie, a nie danych logowania Google Cloud Skills Boost. Uwaga: korzystanie z własnego konta Google Cloud w tym module może wiązać się z dodatkowymi opłatami.
  5. Na kolejnych stronach wykonaj następujące czynności:

    • Zaakceptuj Warunki korzystania z usługi.
    • Nie dodawaj opcji odzyskiwania ani uwierzytelniania dwuskładnikowego (ponieważ konto ma charakter tymczasowy).
    • Nie rejestruj się w bezpłatnych wersjach próbnych.

Poczekaj, aż na karcie otworzy się konsola Google Cloud.

Uwaga: aby wyświetlić menu z listą produktów i usług Google Cloud Console, w lewym górnym rogu kliknij menu nawigacyjne. Ikona menu nawigacyjnego

Aktywowanie Cloud Shell

Cloud Shell to maszyna wirtualna oferująca wiele narzędzi dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud. Dzięki wierszowi poleceń Cloud Shell zyskujesz dostęp do swoich zasobów Google Cloud.

  1. Kliknij Aktywuj Cloud Shell Ikona aktywowania Cloud Shell na górze konsoli Google Cloud.

Po połączeniu użytkownik od razu jest uwierzytelniony. Uruchomi się Twój projekt o identyfikatorze PROJECT_ID. Dane wyjściowe zawierają wiersz z zadeklarowanym identyfikatorem PROJECT_ID dla tej sesji:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud to narzędzie wiersza poleceń Google Cloud. Jest ono już zainstalowane w Cloud Shell i obsługuje funkcję autouzupełniania po naciśnięciu tabulatora.

  1. (Opcjonalnie) Aby wyświetlić listę aktywnych kont, użyj tego polecenia:
gcloud auth list
  1. Kliknij Autoryzuj.

  2. Dane wyjściowe powinny wyglądać tak:

Dane wyjściowe:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Opcjonalnie) Aby wyświetlić identyfikator projektu, użyj tego polecenia:
gcloud config list project

Dane wyjściowe:

[core] project = <project_ID>

Przykładowe dane wyjściowe:

[core] project = qwiklabs-gcp-44776a13dea667a6 Uwaga: pełną dokumentację gcloud w Google Cloud znajdziesz w opisie narzędzia wiersza poleceń gcloud.

Pobieranie kodu

Kliknij obszar wiersza poleceń w Cloud Shell, aby móc wpisywać polecenia.

Pobierz kod z publicznego zasobnika a następnie przejdź do folderu kodu:

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

Ten folder zawiera po 1 podfolderze dla każdego kroku tego modułu. Podczas wykonywania określonego kroku przejdź do odpowiadającego mu folderu.

Zadanie 1. Wdrażanie aplikacji i zabezpieczanie jej przy użyciu IAP

To jest aplikacja standardowego środowiska App Engine napisana w języku Python, która wyświetla po prostu stronę powitalną „Hello, World”. Wdrożymy i przetestujemy ją, a następnie ograniczymy do niej dostęp przy użyciu IAP.

Przeglądanie kodu aplikacji

  • Przejdź z głównego folderu projektu do podfolderu 1-HelloWorld, który zawiera kod dotyczący tego kroku.
cd 1-HelloWorld

Kod aplikacji znajduje się w pliku main.py. Odpowiada on na żądania sieciowe, przesyłając zawartość szablonu przy użyciu sieciowej platformy programistycznej Flask. Szablon znajduje się w pliku templates/index.html. W przypadku tego kroku zawiera on tylko zwykły kod HTML. Drugi szablon zawiera szkielet przykładowego dokumentu polityki prywatności i znajduje się w pliku templates/privacy.html.

Dostępne są także 2 inne pliki: requirements.txt zawiera listę wszystkich innych niż domyślne bibliotek Python, które są używane w aplikacji, a app.yaml informuje Google Cloud, że jest to aplikacja App Engine w języku Python.

Każdy z tych plików można wyświetlić w powłoce przy użyciu polecenia cat, na przykład:

cat main.py

Kod można także przejrzeć, uruchamiając edytor kodu Cloud Shell i klikając ikonę ołówka w prawym górnym rogu okna Cloud Shell.

W tym kroku nie trzeba modyfikować żadnych plików.

Wdrażanie w App Engine

  1. Zmień środowisko wykonawcze Pythona na python39.
sed -i 's/python37/python39/g' app.yaml
  1. Wdróż aplikację w standardowym środowisku App Engine języka Python.
gcloud app deploy
  1. Wybierz region .

  2. Gdy pojawi się pytanie, czy chcesz kontynuować, wpisz Y (Tak).

Uwaga: jeśli wyświetli się błąd związany z propagacją Gaia, powtórz polecenie gcloud app deploy.

Aplikacja zostanie wdrożona w ciągu kilku minut. Pojawi się komunikat informujący o możliwości wyświetlenia aplikacji za pomocą polecenia gcloud app browse.

  1. Wpisz polecenie:
gcloud app browse
  1. Kliknij wyświetlony link, aby otworzyć go w nowej karcie lub w razie potrzeby skopiuj go i wklej w ręcznie otwartej nowej karcie. Ponieważ aplikacja jest uruchamiana po raz pierwszy, pojawi się po kilku sekundach. W tym czasie jest uruchamiana instancja w chmurze. Zostanie wyświetlone następujące okno.

Karta IAP Hello World

Ten adres URL można otworzyć na dowolnym komputerze podłączonym do internetu i wyświetlić tę stronę internetową. Dostęp nie został jeszcze ograniczony.

Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło. Wdrożenie aplikacji App Engine

Ograniczanie dostępu przy użyciu IAP

  1. W oknie konsoli Cloud kliknij menu nawigacyjne Ikona menu nawigacyjnego > Zabezpieczenia > Identity-Aware Proxy.

  2. Kliknij WŁĄCZ API.

  3. Kliknij PRZEJDŹ DO IDENTITY AWARE PROXY.

  4. Kliknij SKONFIGURUJ EKRAN ZGODY.

  5. Jako Typ użytkownika wybierz Wewnętrzny i kliknij Utwórz.

  6. Podaj odpowiednie wartości w wymaganych, pustych polach:

Pole

Wartość

Nazwa aplikacji

Przykład IAP

Adres e-mail dla użytkowników potrzebujących pomocy

Z menu wybierz adres e-mail ucznia.

Strona główna aplikacji

Adres URL wyświetlonej aplikacji. Możesz wyszukać go ponownie, jeszcze raz uruchamiając polecenie wyszukiwania aplikacji gcloud w Cloud Shell.

Link do polityki prywatności aplikacji

Link do strony prywatności w aplikacji. Jest on taki sam jak link strony głównej, jednak ma na końcu fragment /privacy.

Autoryzowane domeny

Kliknij + DODAJ DOMENĘ i wpisz nazwę hosta z adresu URL aplikacji, np. iap-example-999999.appspot.com. Ten adres widać na pasku adresu otwartej wcześniej strony internetowej Hello World. Nie dołączaj początkowego fragmentu https:// ani znajdującego się na końcu adresu URL znaku /.

Dane kontaktowe programisty

Wpisz co najmniej 1 adres e-mail

  1. Kliknij Zapisz i kontynuuj.

  2. Przy opcji Zakresy kliknij Zapisz i kontynuuj.

  3. Przy Podsumowaniu kliknij Powrót do panelu.

Może pojawić się prośba o utworzenie danych logowania. Nie musisz tworzyć danych logowania w tym module, więc możesz po prostu zamknąć tę kartę przeglądarki.

  1. W Cloud Shell uruchom to polecenie, aby wyłączyć interfejs API Flex:
gcloud services disable appengineflex.googleapis.com Uwaga: App Engine dysponuje standardowymi elastycznymi środowiskami zoptymalizowanymi pod kątem innych architektur aplikacji. Obecnie przy włączaniu IAP w App Engine, jeśli włączony jest interfejs Flex API, Google Cloud wyszukuje konto usługi Flex. Dla Twojej wygody w ramach projektu modułu jest automatycznie włączonych wiele interfejsów API. Powoduje to jednak wyjątkową sytuację, w której interfejs API Flex jest włączony pomimo braku konta usługi.
  1. Wróć na stronę Identity-Aware Proxy i odśwież ją. Powinna być teraz widoczna lista zasobów, które można zabezpieczyć.

Kliknij przycisk przełączania w kolumnie IAP w wierszu aplikacji App Engine, aby włączyć IAP.

  1. Ta domena będzie chroniona przez IAP. Kliknij Włącz.

Sprawdzanie, czy usługa IAP jest włączona

  1. Otwórz kartę przeglądarki i przejdź na adres URL swojej aplikacji. Zostanie wyświetlony ekran Zaloguj się przez Google, na którym trzeba będzie się zalogować, aby uzyskać dostęp do aplikacji.

  2. Zaloguj się na koncie używanym do logowania się w konsoli. Pojawi się ekran z odmową dostępu.

Aplikacja została zabezpieczona przy użyciu IAP, ale nie przesłano jeszcze na ten serwer informacji o kontach, które mają być akceptowane.

  1. Wróć na stronę konsoli Identity-Aware Proxy, zaznacz pole wyboru obok aplikacji App Engine i zwróć uwagę na pasek boczny App Engine po prawej stronie ekranu.

Każdy adres e-mail, adres grupy dyskusyjnej Google lub nazwę domeny Workspace, które mają mieć dostęp, należy dodać jako użytkownika.

  1. Kliknij Dodaj podmiot zabezpieczeń.

  2. Wpisz swój adres e-mail ucznia.

  3. Następnie wybierz rolę Cloud IAP > Użytkownik aplikacji internetowej zabezpieczonej przez IAP i przypisz ją do tego adresu.

Możesz w ten sam sposób wpisać więcej adresów lub domen Workspace.

Dodaj podmioty zabezpieczeń w oknie „Aplikacja App Engine”, Cloud IAP > Użytkownik aplikacji internetowej zabezpieczonej przez IAP

  1. Kliknij Zapisz.

U dołu okna pojawi się komunikat „Zasada zaktualizowana”.

Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło. Włączanie zasady i dodawanie jej do IAP

Testowanie dostępu

Wróć do aplikacji i załaduj ponownie stronę. Teraz aplikacja powinna być widoczna, ponieważ nastąpiło logowanie przy użyciu autoryzowanego konta użytkownika.

Jeśli nadal jest wyświetlana strona „Nie masz dostępu”, IAP nie sprawdził ponownie Twojej autoryzacji. W tym przypadku wykonaj te czynności:

  1. Otwórz w przeglądarce stronę o adresie składającym się z adresu URL strony głównej i dodanego na końcu tekstu /_gcp_iap/clear_login_cookie, na przykład https://iap-example-999999.appspot.com/_gcp_iap/clear_login_cookie.
  2. Pojawi się nowy ekran Zaloguj się przez Google, na którym jest już wyświetlane Twoje konto. Nie klikaj tego konta. Zamiast tego kliknij Użyj innego konta i wpisz ponownie swoje dane logowania.
Uwaga: zastosowanie zmiany roli zajmie minutę. Jeśli po wykonaniu powyższych czynności nadal jest wyświetlana strona „Nie masz dostępu”, poczekaj minutę, a następnie odśwież stronę.

Wykonanie tych czynności spowoduje, że IAP ponownie sprawdzi Twój dostęp – ekran główny aplikacji powinien być już widoczny.

Jeśli masz inne ważne konto Gmail lub Workspace i dostęp do innej przeglądarki albo możesz użyć trybu incognito, przejdź w tej przeglądarce na stronę swojej aplikacji i zaloguj się przy użyciu tego innego konta. Ponieważ to konto nie zostało autoryzowane, zamiast aplikacji pojawi się ekran „Nie masz dostępu”.

Zadanie 2. Uzyskiwanie dostępu do informacji o tożsamości użytkowników

Aplikacja zabezpieczona przy użyciu IAP może używać informacji o tożsamości dostarczanych przez IAP w nagłówkach przekazywanych żądań sieciowych. W tym kroku aplikacja pobierze adres e-mail i stały, unikalny identyfikator zalogowanego użytkownika przypisany do niego przez usługę tożsamości Google. Te dane zostaną wyświetlone na stronie powitalnej.

  • Aby ukończyć ten krok, przejdź do następującego folderu w Cloud Shell:
cd ~/user-authentication-with-iap/2-HelloUser

Wdrażanie w App Engine

  1. Zmień środowisko wykonawcze Pythona na python39.
sed -i 's/python37/python39/g' app.yaml
  1. Rozpocznij od wdrożenia aplikacji w standardowym środowisku App Engine dla Pythona, ponieważ ten proces potrwa kilka minut:
gcloud app deploy
  1. Gdy pojawi się pytanie, czy chcesz kontynuować, wpisz Y (Tak).

Aplikacja powinna zostać wdrożona w ciągu kilku minut. Czekając na zakończenie tego procesu, możesz przejrzeć pliki aplikacji w opisany poniżej sposób.

Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło. Uzyskiwanie dostępu do informacji o tożsamości użytkowników

Przeglądanie plików aplikacji

Ten folder zawiera ten sam zestaw plików co poprzednio uruchomiona aplikacja 1-HelloWorld, jednak dwa pliki zostały zmodyfikowane: main.pytemplates/index.html. Program został zmieniony tak, aby mógł pobierać informacje o użytkownikach dostarczane przez IAP w nagłówkach. Szablon wyświetla teraz te dane.

W pliku main.py znajdują się 2 wiersze, które umożliwiają pobieranie przekazywanych przez IAP danych o tożsamości:

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

Nagłówki X-Goog-Authenticated-User- są dostarczane przez IAP, a w nazwach jest rozróżniana wielkość liter, więc możesz je wpisywać w całości małymi lub wielkimi literami. Instrukcja render_template zawiera teraz te wartości, więc można je wyświetlić:

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

Te wartości można wyświetlić przy użyciu szablonu index.html, umieszczając nazwy w podwójnych nawiasach klamrowych:

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

Jak widać dostarczone dane są poprzedzone prefiksem accounts.google.com, który informuje o tym, skąd one pochodzą. W razie potrzeby Twoja aplikacja może usunąć wszystko, co znajduje się przed dwukropkiem (oraz sam dwukropek), uzyskując w ten sposób czyste wartości.

Testowanie zaktualizowanego IAP

Gdy wdrożenie będzie gotowe, pojawi się komunikat informujący o tym, że można wyświetlić aplikację przy użyciu polecenia gcloud app browse.

  1. Wpisz polecenie:
gcloud app browse
  1. Jeśli w przeglądarce nie otworzy się nowa karta, skopiuj wyświetlony link i otwórz go w nowej karcie, tak jak robisz to zwykle. Powinna Ci się wyświetlić strona podobna do tej:

Karta IAP Hello User

Zastąpienie wcześniejszej wersji aplikacji jej nową wersją może potrwać kilka minut. W razie potrzeby odśwież stronę, aby wyświetlić ekran podobny do ekranu widocznego powyżej.

Wyłączanie IAP

Co stanie się z tą aplikacją, gdy IAP zostanie wyłączony lub w jakiś sposób pominięty (na przykład przez inne aplikacje działające w tym samym projekcie w chmurze)? Wyłącz IAP, aby to sprawdzić.

  1. W oknie konsoli Cloud kliknij Menu nawigacyjne > Zabezpieczenia > Identity-Aware Proxy.
  2. Kliknij przełącznik IAP znajdujący się obok aplikacji App Engine, aby wyłączyć IAP. Kliknij WYŁĄCZ.

Pojawi się ostrzeżenie informujące o tym, że po wykonaniu tej czynności wszyscy użytkownicy będą mieli dostęp do aplikacji.

  1. Odśwież stronę internetową aplikacji. Powinna pojawić się ta sama strona, jednak bez żadnych informacji o użytkowniku:

Karta IAP Hello User bez informacji o użytkowniku

Ponieważ aplikacja nie jest już chroniona, można podjąć próbę wysłania żądań sieciowych, które wyglądają jak przekazane przez IAP. W tym celu możesz na przykład wykonać następujące polecenie curl w Cloud Shell (zastąp <your-url-here> prawidłowym adresem URL aplikacji):

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

W wierszu poleceń zostanie wyświetlona strona internetowa podobna do tej:

<!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>

Aplikacja nie może w żaden sposób stwierdzić, że IAP został wyłączony lub pominięty. W sytuacjach, gdy ten problem może stwarzać potencjalne zagrożenie, rozwiązaniem jest weryfikacja kryptograficzna.

Zadanie 3. Wdrażanie weryfikacji kryptograficznej

Jeśli istnieje ryzyko, że IAP zostanie wyłączony lub pominięty, w aplikacji można uwzględnić mechanizmy sprawdzające, czy odbierane informacje o tożsamości są prawidłowe. W tym celu jest używany trzeci spośród dodawanych przez IAP nagłówków żądań sieciowych o nazwie X-Goog-IAP-JWT-Assertion. Wartością tego nagłówka jest kryptograficznie podpisany obiekt, który zawiera także informacje o tożsamości użytkownika. Aplikacja może zweryfikować podpis cyfrowy i użyć danych dostarczonych w tym obiekcie, aby sprawdzić, czy żądanie przekazane przez IAP nie zostało w żaden sposób zmodyfikowane.

Sprawdzenie podpisu cyfrowego wymaga wykonania kilku dodatkowych kroków, takich jak pobranie najnowszego zestawu kluczy publicznych Google. Decyzję o tym, czy dana aplikacja powinna wykonywać te dodatkowe kroki, można podjąć, oceniając ryzyko wyłączenia lub pominięcia IAP oraz poziom poufności aplikacji.

  • Aby ukończyć ten krok, przejdź do następującego folderu w Cloud Shell:
cd ~/user-authentication-with-iap/3-HelloVerifiedUser

Wdrażanie w App Engine

  1. Zmień środowisko wykonawcze Pythona na python39.
sed -i 's/python37/python39/g' app.yaml
  1. Wdróż aplikację w standardowym środowisku App Engine dla Pythona:
gcloud app deploy
  1. Gdy pojawi się pytanie, czy chcesz kontynuować, wpisz Y (Tak).

Aplikacja powinna zostać wdrożona w ciągu kilku minut. Czekając na zakończenie tego procesu, możesz przejrzeć pliki aplikacji w opisany poniżej sposób.

Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło. Użycie weryfikacji kryptograficznej

Przeglądanie plików aplikacji

Ten folder zawiera ten sam zbiór plików co folder 2-HelloUser, jednak dwa pliki zostały zmodyfikowane i dodano jeden nowy. Nowy plik to auth.py. Zawiera on metodę user() służącą do pobierania i sprawdzania kryptograficznie podpisanych informacji o tożsamości. Zmodyfikowane pliki to main.pytemplates/index.html. Korzystają one z wyników wykonania tej metody. Widoczne są także niezweryfikowane nagłówki w postaci stosowanej w ostatnim wdrożeniu. Dzięki temu można je porównać z nowymi nagłówkami.

  • Nowe funkcje znajdują się głównie w funkcji user():
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']

Obiekt assertion zawiera kryptograficznie podpisane dane przekazane w określonym nagłówku żądania. W kodzie używana jest biblioteka, która weryfikuje i dekoduje dane. Proces weryfikacji używa dostarczonych przez Google kluczy publicznych do sprawdzania podpisywanych danych i uzyskiwania informacji o odbiorcach, dla których zostały one przygotowane (czyli o chronionym projekcie Google Cloud). Funkcje pomocnicze keys()audience() zbierają oraz zwracają te wartości.

Podpisany obiekt zawiera 2 fragmenty danych, których będziemy potrzebować: zweryfikowany adres e-mail i wartość unikalnego identyfikatora (podaną w polu standardowym sub, którego nazwa pochodzi od słowa „subskrybent”).

W ten sposób zakończyliśmy wykonywanie kroku 3.

Testowanie weryfikacji kryptograficznej

Gdy wdrożenie będzie gotowe, pojawi się komunikat informujący o tym, że można wyświetlić aplikację przy użyciu polecenia gcloud app browse.

  • Wpisz polecenie:
gcloud app browse

Jeśli w przeglądarce nie otworzy się nowa karta, skopiuj wyświetlony link i otwórz go w nowej karcie, tak jak robisz to zwykle.

Pamiętaj, że IAP został wcześniej wyłączony, zatem aplikacja nie udostępnia żadnych danych IAP. Powinna Ci się wyświetlić strona podobna do tej:

Karta IAP Hello Verified User bez identyfikatora użytkownika

Podobnie jak poprzednio aktywowanie nowej wersji aplikacji i wyświetlenie zaktualizowanej strony może potrwać kilka minut.

Ponieważ IAP jest wyłączony, nie są dostępne żadne informacje o użytkowniku. Teraz ponownie włącz IAP.

  1. W oknie konsoli Cloud kliknij Menu nawigacyjne > Zabezpieczenia > Identity-Aware Proxy.

  2. Kliknij przełącznik IAP znajdujący się obok aplikacji App Engine, aby ponownie włączyć IAP. Kliknij WŁĄCZ.

  3. Odśwież stronę. Powinna pojawić się strona podobna do następującej:

Karta Hello Verified User z identyfikatorem użytkownika

Zwróć uwagę na to, że adres e-mail zwrócony przez zweryfikowaną metodę nie ma prefiksu accounts.google.com:.

Po wyłączeniu lub pominięciu IAP zweryfikowane dane nie będą dostępne albo będą nieprawidłowe, ponieważ odpowiedni podpis mogą mieć wyłącznie dane utworzone przez posiadacza kluczy prywatnych Google.

Gratulacje!

Aplikacja internetowa App Engine została wdrożona. Najpierw przyznałeś(-aś) dostęp do aplikacji tylko wybranym użytkownikom. Następnie pobrałeś(-aś) i wyświetliłeś(-aś) informacje o tożsamości tych użytkowników, którym IAP przyznał dostęp do aplikacji. Wiesz już także, jak można podszywać się pod innych użytkowników, jeśli IAP został wyłączony lub pominięty. Na zakończenie sprawdziłeś(-aś) kryptograficznie podpisane asercje tożsamości użytkowników, które zapobiegają podszywaniu się.

Ukończ kurs

Ten moduł do samodzielnego ukończenia jest częścią kursów Security & Identity FundamentalsNetworking Fundamentals in Google Cloud. Każdy kurs składa się z zestawu powiązanych ze sobą modułów, które razem tworzą ścieżkę szkoleniową. Za ukończenie kursu otrzymujesz odznakę – stanowi ona potwierdzenie Twojego osiągnięcia. Swoje odznaki możesz ustawiać jako widoczne publicznie, a także podać do nich linki w swoim CV lub w mediach społecznościowych. Zarejestruj się na dowolny kurs zawierający ten moduł, a zostanie on automatycznie zaliczony. Wszystkie dostępne kursy znajdziesz w katalogu Google Cloud Skills Boost.

Przejdź do kolejnego modułu

Możesz uczyć się dalej w ramach modułu Wprowadzenie do Cloud KMS lub zapoznać się z innymi modułami Google Cloud Skills Boost, np.:

Kolejne kroki / Więcej informacji

Licencja

To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.

Szkolenia i certyfikaty Google Cloud

…pomogą Ci wykorzystać wszystkie możliwości technologii Google Cloud. Nasze zajęcia obejmują umiejętności techniczne oraz sprawdzone metody, które ułatwią Ci szybką naukę i umożliwią jej kontynuację. Oferujemy szkolenia na poziomach od podstawowego po zaawansowany prowadzone w trybach wirtualnym, na żądanie i na żywo, dzięki czemu możesz dopasować program szkoleń do swojego napiętego harmonogramu. Certyfikaty umożliwią udokumentowanie i potwierdzenie Twoich umiejętności oraz doświadczenia w zakresie technologii Google Cloud.

Ostatnia aktualizacja instrukcji: 28 lutego 2024 r.

Ostatni test modułu: 28 lutego 2024 r.

Copyright 2024 Google LLC. Wszelkie prawa zastrzeżone. Google i logo Google są znakami towarowymi Google LLC. Wszelkie inne nazwy firm i produktów mogą być znakami towarowymi odpowiednich podmiotów, z którymi są powiązane.