Google アカウントでユーザーを認証する

このページでは、App Engine スタンダード環境またはフレキシブル環境のアプリケーションをデプロイし、それを Identity-Aware Proxy(IAP)で保護する手順について説明します。このクイックスタートには、ログインしているユーザーの名前を確認する App Engine スタンダード環境ウェブアプリのサンプルコードが含まれています。ここでは、Cloud Shell を使用してサンプル アプリケーションのクローンを作成し、デプロイします。このクイックスタートを使用すると、ご自身の App Engine スタンダード環境または App Engine フレキシブル環境アプリで IAP を有効にできます。

コンテンツ配信ネットワーク(CDN)からリソースを提供する予定の場合、ベスト プラクティス ガイドの重要な情報をご覧ください。

1 つの App Engine アプリケーションが複数のサービスで構成されている場合、サービスごとに異なる IAP 権限を構成できます。たとえば、一部のサービスのみをpublicly-accessibleしながら、その他のサービスを保護された状態にすることができます。


このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、[ガイドを表示] をクリックしてください。

ガイドを表示


準備

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

準備

App Engine で IAP を有効にするには、次のものが必要です。

  • 課金が有効になっている Google Cloud コンソール プロジェクト。

App Engine インスタンスをまだ設定していない場合は、App Engine のデプロイで完全なチュートリアルをご覧ください。

IAP は、Google が管理する OAuth クライアントを使用してユーザーを認証します。組織内のユーザーのみが IAP 対応アプリケーションにアクセスできます。組織外のユーザーにアクセスを許可するには、外部アプリケーション用に IAP を有効にするをご覧ください。

IAP の有効化

Console

Google Cloud コンソールを使用して IAP を有効にする場合、Google が管理する OAuth クライアントは使用できません。

ダイナミック インクルード ファイル

プロジェクトの OAuth 同意画面をまだ構成していない場合は、画面を構成するように指示されます。OAuth 同意画面を構成する方法については、OAuth 同意画面の設定をご覧ください。

IAP アクセス権の設定

  1. [Identity-Aware Proxy] ページに移動します。
    [Identity-Aware Proxy] ページに移動
  2. IAP で保護するプロジェクトを選択します。
  3. アクセスを許可するリソースの横にあるチェックボックスをオンにします。
  4. 右側のパネルで [プリンシパルを追加] をクリックします。
  5. 表示される [メンバーの追加] ダイアログで、プロジェクトに対する IAP で保護されたウェブアプリ ユーザーの役割を付与するグループ、または個人のメールアドレスを追加します。

    このロールを持つことができるプリンシパルの種類は次のとおりです。

    • Google アカウント: user@gmail.com
    • Google グループ: admins@googlegroups.com
    • サービス アカウント: server@example.gserviceaccount.com
    • Google Workspace ドメイン: example.com

    追加する Google アカウントは、自分がアクセスできるものにしてください。

  6. [役割] のプルダウン リストから [Cloud IAP] > [IAP で保護されたウェブアプリ ユーザー] を選択します。
  7. [保存] をクリックします。

IAP の有効化

  1. [Identity-Aware Proxy] ページの [APPLICATIONS] で、アクセスを制限するアプリケーションを見つけます。リソースの IAP を有効にするには、
  2. 表示された [IAP の有効化] ウィンドウで [有効にする] をクリックし、IAP でリソースを保護することを確認します。IAP が有効になった後は、ロードバランサへのすべての接続でログイン認証情報が必要になります。プロジェクトで IAP で保護されたウェブアプリ ユーザーの役割を持つアカウントにのみアクセスが許可されます。

gcloud

プロジェクトと IAP を設定する前に、最新バージョンの gcloud CLI を入手する必要があります。gcloud CLI のインストール方法については、gcloud CLI のインストールをご覧ください。

  1. 認証するには、Google Cloud CLI を使用して次のコマンドを実行します。
    gcloud auth login
  2. 表示された URL をクリックしてログインします。
  3. ログインしたら、表示される確認コードをコピーしてコマンドラインに貼り付けます。
  4. 次のコマンドを実行して、IAP で保護するアプリケーションを含むプロジェクトを指定します。
    gcloud config set project PROJECT_ID
  5. IAP を有効にするには、次のコマンドを実行します。
    gcloud iap web enable --resource-type=app-engine --versions=version

IAP を有効にすると、gcloud CLI で roles/iap.httpsResourceAccessor の IAM ロールを使用して IAP アクセス ポリシーを変更できます。詳しくは、ロールと権限の管理をご覧ください。

API

  1. 次のコマンドを実行して settings.json ファイルを準備します。

    cat << EOF > settings.json
    {
    "iap":
      {
        "enabled":true
      }
    }
    EOF
    

  2. 次のコマンドを実行して、IAP を有効にします。

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d @settings.json \
    "https://appengine.googleapis.com/v1/apps/PROJECT_ID?updateMask=iap"
    

IAP を有効にすると、Google Cloud CLI で roles/iap.httpsResourceAccessor の IAM ロールを使用して IAP アクセス ポリシーを変更できます。詳しくは、ロールと権限の管理をご覧ください。

ユーザー認証をテストする

  1. IAP で保護されたウェブアプリ ユーザーについての上述のロールを使用して、IAP に追加した Google アカウントからアプリの URL にアクセスします。アプリに無制限にアクセスできるはずです。

  2. Chrome のシークレット ウィンドウを使用してアプリにアクセスし、プロンプトが表示されたらログインします。IAP で保護されたウェブアプリ ユーザーのロールによる認証を持たないアカウントでアプリにアクセスしようとすると、アクセスできないことを示すメッセージが表示されます。

次のステップ