
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Deploy an App Engine application
/ 20
Enable and add policy to IAP
/ 30
Access User Identity Information
/ 25
Use Cryptographic Verification
/ 25
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:
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.
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.
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ć.
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ą:
Kliknij przycisk Rozpocznij moduł. Jeśli moduł jest odpłatny, otworzy się okno, 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:
Kliknij Otwórz konsolę Google Cloud (lub kliknij prawym przyciskiem myszy i wybierz Otwórz link w oknie incognito, jeśli korzystasz z przeglądarki Chrome).
Moduł uruchomi zasoby, po czym otworzy nową kartę ze stroną logowania.
Wskazówka: otwórz karty obok siebie w osobnych oknach.
W razie potrzeby skopiuj nazwę użytkownika znajdującą się poniżej i wklej ją w oknie logowania.
Nazwę użytkownika znajdziesz też w panelu Szczegóły modułu.
Kliknij Dalej.
Skopiuj podane niżej hasło i wklej je w oknie powitania.
Hasło znajdziesz też w panelu Szczegóły modułu.
Kliknij Dalej.
Na kolejnych stronach wykonaj następujące czynności:
Poczekaj, aż na karcie otworzy się konsola Google Cloud.
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.
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:
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.
Kliknij Autoryzuj.
Dane wyjściowe powinny wyglądać tak:
Dane wyjściowe:
Dane wyjściowe:
Przykładowe dane wyjściowe:
gcloud
w Google Cloud znajdziesz w opisie narzędzia wiersza poleceń gcloud.
Kliknij obszar wiersza poleceń w Cloud Shell, aby móc wpisywać polecenia.
Pobierz kod z publicznego zasobnika a następnie przejdź do folderu kodu:
Ten folder zawiera po 1 podfolderze dla każdego kroku tego modułu. Podczas wykonywania określonego kroku przejdź do odpowiadającego mu folderu.
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.
1-HelloWorld
, który zawiera kod dotyczący tego kroku.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:
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.
python39
.Wybierz region
Gdy pojawi się pytanie, czy chcesz kontynuować, wpisz Y (Tak).
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
.
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.
W oknie konsoli Cloud kliknij menu nawigacyjne > Zabezpieczenia > Identity-Aware Proxy.
Kliknij WŁĄCZ API.
Kliknij PRZEJDŹ DO IDENTITY AWARE PROXY.
Kliknij SKONFIGURUJ EKRAN ZGODY.
Jako Typ użytkownika wybierz Wewnętrzny i kliknij Utwórz.
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 |
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 |
Dane kontaktowe programisty |
Wpisz co najmniej 1 adres e-mail |
Kliknij Zapisz i kontynuuj.
Przy opcji Zakresy kliknij Zapisz i kontynuuj.
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.
Kliknij przycisk przełączania w kolumnie IAP w wierszu aplikacji App Engine, aby włączyć IAP.
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.
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.
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.
Kliknij Dodaj podmiot zabezpieczeń.
Wpisz swój adres e-mail ucznia.
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.
U dołu okna pojawi się komunikat „Zasada zaktualizowana”.
Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło.
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:
/_gcp_iap/clear_login_cookie
, na przykład https://iap-example-999999.appspot.com/_gcp_iap/clear_login_cookie
.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”.
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.
python39
.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.
Ten folder zawiera ten sam zestaw plików co poprzednio uruchomiona aplikacja 1-HelloWorld
, jednak dwa pliki zostały zmodyfikowane: main.py
i templates/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:
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ć:
Te wartości można wyświetlić przy użyciu szablonu index.html, umieszczając nazwy w podwójnych nawiasach klamrowych:
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.
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
.
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.
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ć.
Pojawi się ostrzeżenie informujące o tym, że po wykonaniu tej czynności wszyscy użytkownicy będą mieli dostęp do aplikacji.
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):
W wierszu poleceń zostanie wyświetlona strona internetowa podobna do tej:
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.
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.
python39
.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.
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.py
i templates/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.
user()
: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()
i 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.
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
.
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:
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.
W oknie konsoli Cloud kliknij Menu nawigacyjne > Zabezpieczenia > Identity-Aware Proxy.
Kliknij przełącznik IAP znajdujący się obok aplikacji App Engine, aby ponownie włączyć IAP. Kliknij WŁĄCZ.
Odśwież stronę. Powinna pojawić się strona podobna do następującej:
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.
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ę.
Ten moduł do samodzielnego ukończenia jest częścią kursów Security & Identity Fundamentals i Networking 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.
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.:
To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.
…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 2025 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.
Ta treść jest obecnie niedostępna
Kiedy dostępność się zmieni, wyślemy Ci e-maila z powiadomieniem
Świetnie
Kiedy dostępność się zmieni, skontaktujemy się z Tobą e-mailem
One lab at a time
Confirm to end all existing labs and start this one