Deploy the application to App Engine

進行状況を確認

/ 25

Restrict access with IAP

進行状況を確認

/ 25

Allow member to access application

進行状況を確認

/ 25

Access User Identity Information

進行状況を確認

/ 25

このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。

GSP946

Google Cloud セルフペース ラボ

概要

ゼロトラスト セキュリティ モデルでは、すべてのユーザー、デバイス、ネットワークを本質的に信頼できないとみなします。アクセスの許可は、多数の要素(ID、デバイス、場所、時間帯を含むがこれらに限定されない)に基づいて行われます。ゼロトラスト ポリシーを適用する主なユースケースの一つは、ウェブ アプリケーション(Google Cloud またはオンプレミス データセンターでホストされている HTTP / HTTPS ベースのアプリケーションなど)への安全なアクセスを提供することです。ウェブ アプリケーションごとに独自のアクセス制御を行い、正確なセキュリティを設定してリスクを低減できます。ウェブ アプリケーションを保護するためにアクセス制御リスト(ACL)を設定する必要はありません。代わりに IP 範囲を設定して、セキュリティを犠牲にすることなく迅速なオンボーディングを実現できます。アーキテクチャの面では、ゼロトラスト アクセスを提供するための主要なコンポーネントは次のとおりです。

  • Identity-Aware Proxy(IAP)- すべてのアクセス リクエストが承認されていることを確認するポリシー適用エンジン。

このラボでは、サンプル アプリケーションを App Engine にデプロイし、Identity-Aware Proxy(IAP)を使用してポリシーを適用します。また、IAP で保護されたアプリケーションでユーザー ID 情報を取得します。

学習目標

  • Python を使用して、シンプルな App Engine アプリケーションをデプロイする。
  • Identity-Aware Proxy(IAP)を有効にして、アプリケーションへのアクセスを制限する。
  • アプリケーションで IAP からユーザー ID 情報を取得する。

前提条件

プログラミング言語(Python)の基礎知識

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。

このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
  • ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 右側の [ラボの設定とアクセス] パネルには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • このラボで使用する一時的な認証情報(ユーザー名とパスワード)
    • このラボを行うために必要なその他の情報(ある場合)

    ラボのタイマーはページの上部に表示され、残り時間が示されます。

  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。

    ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示された場合は、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの設定とアクセス] パネルでもユーザー名を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの設定とアクセス] パネルでもパスワードを確認できます。

  6. [次へ] をクリックします。

    重要: ラボで指定された認証情報を使用する必要があります。ご自身の Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後のページはクリックして先に進みます。

    • 利用規約に同意します。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

しばらくすると、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。 ナビゲーション メニューのアイコンと検索フィールド

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

  2. ウィンドウで次の操作を行います。

    • Cloud Shell 情報ウィンドウで操作を進めます。
    • Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。

接続した時点で認証が完了しており、プロジェクトに各自の Project_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

出力:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

シナリオ

Google App Engine を使用して簡単なウェブ アプリケーションを構築します。次に、Identity-Aware Proxy を使用して、そのアプリケーションへのアクセスを制限したり、ユーザー ID 情報をそのアプリケーションに提供したりするさまざまな方法を学習します。構築するアプリの機能は次のとおりです。

  • ウェルカム ページを表示する
  • IAP によって提供されるユーザー ID 情報にアクセスする

タスク 1. アプリケーションをデプロイして IAP で保護する

このアプリケーションは、「Hello, World」というウェルカム ページを表示するだけの、Python 3.8 で記述された App Engine スタンダード アプリケーションです。このアプリケーションをデプロイしてテストした後、IAP を使用してアクセスを制限します。

  • Cloud Shell で次のコマンドを実行して、このラボに必要なコードを GitHub からダウンロードし、コードフォルダに移動します。
git clone https://github.com/googlecodelabs/user-authentication-with-iap.git cd user-authentication-with-iap

アプリケーション コードを確認する

  • メイン プロジェクト フォルダから 1-HelloWorld フォルダに移動します。
cd 1-HelloWorld

アプリケーション コードは main.py ファイル内に含まれています。このコードは、Flask ウェブ フレームワークを使用し、テンプレートの内容を利用してウェブ リクエストに応答します。そのテンプレート ファイルは templates/index.html 内にあり、このステップではプレーン HTML のみが含まれています。templates/privacy.html 内の 2 番目のテンプレート ファイルには、プライバシー ポリシーの簡単なサンプルが含まれています。

その他に、次の 2 つのファイルがあります。requirements.txt は、アプリケーションが使用する Python ライブラリ(デフォルト以外)をすべてリストしたファイルです。app.yaml は、このアプリケーションが Python 3.8 App Engine アプリケーションであることを Google Cloud Platform に通知するファイルです。

Cloud Shell で cat コマンドを使用すると、各ファイルを確認できます。

cat main.py

Cloud Shell ウィンドウの右上にある編集アイコン(編集アイコン。)をクリックして Cloud Shell コードエディタを開き、読み込まれたエディタでコードを調べることもできます。

このステップでは、どのファイルも変更する必要はありません。

アプリケーションを App Engine にデプロイする

次に、Python 3.8 用の App Engine スタンダード環境にアプリをデプロイします。

  1. 次のコマンドを実行します。
gcloud app create --project=$(gcloud config get-value project) --region={{{ project_0.startup_script.app_region | REGION }}}

続行するかどうか確認するメッセージが表示されたら、Yes を意味する「Y」を入力します。

App Engine アプリを作成する呼び出しを承認するよう求められる場合もあります。その場合は、[承認] ボタンをクリックします。
  1. Cloud Shell コードエディタで、1-HelloWorld フォルダの app.yaml ファイルを表示します。Python のランタイム バージョンを更新します。
runtime: python310
  1. 作成コマンドが完了したら、次のコマンドを実行します。
gcloud app deploy

続行するかどうか確認するメッセージが表示されたら、「Y」と入力して Enter キーを押します。

注: エラーが表示された場合は、コマンドを再実行してエラーを回避してください。

デプロイは数分で完了し、次のコマンドでアプリケーションを表示できるというメッセージが表示されます。

gcloud app browse 注: このアプリを実行するのは今回が初めてなので、クラウド インスタンスが起動するのに数秒かかり、それから以下の画像のような出力が表示されます。アクセスはまだ制限されていません。

ブラウザに IAP のサンプル アプリケーションが表示され、「This is step 1 of the User Authentication with IAP codelab」というテキストが表示されている。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 アプリケーションを App Engine にデプロイする

IAP を使用してアクセスを制限する

  1. ナビゲーション メニュー > [すべてのプロダクトを表示] > [セキュリティ] > [Identity-Aware Proxy] に移動し、[API を有効にする] ボタンをクリックして、[Identity-Aware Proxy に移動] をクリックします。

  2. プロジェクトの OAuth 同意画面を設定するため、ナビゲーション メニューナビゲーション メニュー アイコン)> [API とサービス] > [OAuth 同意画面] を選択して、OAuth 同意画面に移動します。

  3. [OAuth の概要] ページで [使ってみる] をクリックし、[アプリ名] に「IAP Example」と入力します。

  4. ユーザー サポートのメールアドレスを指定します。

  5. [オーディエンスの種類] で [内部] を選択し、[次へ] をクリックします。

  6. [連絡先情報] で、ステップ 4 と同じメールアドレスを入力し、[次へ] をクリックします。

  7. [完了] の [利用規約に同意する] チェックボックスをオンにして、[作成] をクリックします。

  8. 最初のブラウザタブに戻り、Cloud Shell で次のコマンドを実行します。

export AUTH_DOMAIN=$(gcloud config get-value project).uc.r.appspot.com

コマンドの出力を [OAuth 同意] タブのフォームへの入力として使用するため、URL をコピーします。

  1. 入力された値を表示するには、次のコマンドを実行します。
echo $AUTH_DOMAIN
  1. [OAuth の概要] ページで、[認証クライアントを作成] をクリックし、[アプリケーションの種類] で [ウェブ アプリケーション] を選択します。

  2. [承認済みのリダイレクト URI] で、[+ URL を追加] をクリックし、コマンド出力で受け取った URL を入力して、[作成] をクリックします。

  3. 残りのタブで、ナビゲーション メニュー > [すべてのプロダクトを表示] > [セキュリティ] > [Identity-Aware Proxy] に移動します。

必要に応じてページを更新します。

  1. App Engine アプリ行の IAP 列にある切り替えボタンをクリックして、前のセクションでデプロイしたアプリケーションの IAP をオンにします。

App Engine アプリ フィールドの IAP の切り替えスイッチがオンになっている、[HTTPS リソース] タブページ。

  1. IAP コンソールで、Ctrl / Command キーを押しながら App Engine アプリケーションの URL を選択して、アプリケーションに移動します。

  2. ログイン フォームにリストされている受講者のユーザー情報でログインします。

受講者のユーザー情報が表示された、Google のログイン ポップアップ。

アプリケーションへのアクセス権限がないことを知らせる画面が表示されます。

「アクセス権がありません」というポップアップ通知。

アプリは IAP で正常に保護されていますが、どのアカウントを許可するかを IAP にまだ指示していません。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 IAP を使用してアクセスを制限する

アプリケーションへのアクセスをメンバーに許可する

  1. ナビゲーション メニュー > [すべてのプロダクトを表示] > [セキュリティ] > [Identity-Aware Proxy] を選択して、コンソールの [Identity-Aware Proxy] ページに戻ります。

  2. App Engine アプリの横にあるチェックボックスをオンにすると、ページの右側にサイドバーが表示されます。[プリンシパルを追加] をクリックします。

[継承された権限を表示] 切り替えボタンと [メンバーを追加] ボタンが含まれた App Engine アプリ。

  1. ラボの左上にあるラボコンソールから Username をコピーし、[新しいプリンシパル] 入力ボックスに入力します。

  2. このユーザーのロールを、[Cloud IAP] > [IAP で保護されたウェブアプリ ユーザー] に設定します。

[クイック アクセス]、[プロダクトまたはサービス]、[ロール] の各カテゴリ別にリストされたオプションを含む [フィルタ] プルダウン メニュー。

  1. 完了したら、[保存] をクリックします。「ポリシーを更新しました」というメッセージがウィンドウの下部に表示されます。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 アプリケーションへのアクセスをメンバーに許可する

アクセスが復元されたことを確認する

  • App Engine アプリケーションに戻ってページを再読み込みします。承認されたユーザーでログインしているので、ウェブアプリが表示されるはずです。

ただし、引き続き「アクセス権がありません」というメッセージがページに表示されることがあります。これは、ログイン Cookie が保存されていることが原因で、IAP が承認を再確認しない場合があるためです。

その場合は次のステップに従います。

  1. ホームページ アドレスの URL の末尾に /_gcp_iap/clear_login_cookie を追加して(https://iap-example-999999.appspot.com/_gcp_iap/clear_login_cookie など)、ウェブブラウザでそのアドレスを開きます。
注: このラボで先ほどデプロイした App Engine アプリケーションの URL を使用してください。上記の URL は一つの例です。

アカウントがすでに表示された状態で、新たに「Google でログイン」画面が表示されます。

注: アカウントをクリックしないでください。
  1. [別のアカウントを使用] をクリックして認証情報を再入力します。

これで、IAP によりアクセス権が再確認されたので、アプリケーションのホーム画面が表示されます。

タスク 2. ユーザー ID 情報にアクセスする

アプリが IAP で保護されると、通過するウェブ リクエスト ヘッダーで IAP により提供される ID 情報を使用できるようになります。このステップでアプリケーションが取得するのは、ログイン ユーザーのメールアドレスと、Google Identity Services によってそのユーザーに割り当てられた永続的な一意のユーザー ID です。そのデータはウェルカム ページでユーザーに表示されます。

  1. Cloud Shell で次のコマンドを入力します。
cd ~/user-authentication-with-iap/2-HelloUser
  1. Cloud Shell コードエディタで、2-HelloUser フォルダの app.yaml ファイルを表示し、Python のランタイム バージョンを更新します。
runtime: python310
  1. 次のコマンドを使用して App Engine にデプロイします。
gcloud app deploy 注: アプリケーションをデプロイする呼び出しを承認するよう求められる場合があります。
  1. 続行するかどうか確認するメッセージが表示されたら、「Y」と入力します。

  2. デプロイの準備ができたら、次のコマンドを入力します。

gcloud app browse

ブラウザで新しいタブが開かない場合は、表示されているリンクをコピーして貼り付けると、新しいタブで開きます。次のようなページが表示されます。

IAP Hello User ページ。

注: アプリケーションが旧バージョンから新しいバージョンに置き換わるまで、数分かかる場合があります。必要に応じてページを更新し、上記のようなページを表示します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 ユーザー ID 情報にアクセスする

アプリケーション ファイルを調べる

2-HelloUser フォルダには、1-HelloWorld フォルダと同じ一連のファイルが含まれていますが、main.pytemplates/index.html の 2 つのファイルには変更が加えられています。プログラムは、IAP によってリクエスト ヘッダーに提供されるユーザー情報を取得するように変更されました。また、テンプレートにそのデータが表示されるようになりました。

  1. cat main.py を実行して、main.py ファイルの内容を表示します。

IAP 提供の ID データを取得する main.py には以下の 2 行が含まれています。

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

X-Goog-Authenticated-User- ヘッダーが IAP によって提供されています。名前の大文字と小文字は区別されないため、必要に応じてすべて小文字または大文字で指定できます。render_template ステートメントにこれらの値が含まれるようになったので、表示が可能です。

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

index.html テンプレートでこれらの値を表示するには、二重の中かっこで名前を囲みます。

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

提供されたデータには先頭に accounts.google.com: が付いており、情報の出所が示されます。必要な場合、アプリケーションではコロンまでの部分をすべて削除して未加工の値を取得できます。

お疲れさまでした

Identity-Aware Proxy(IAP)を使用して、Google Cloud にデプロイされた HTTP(S) アプリケーションを保護する方法を学びました。

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2025 年 11 月 12 日

ラボの最終テスト日: 2025 年 11 月 12 日

Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボを実行するには、シークレット モードまたはシークレット ブラウジング ウィンドウを使用することをおすすめします。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。