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

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

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

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


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

ガイドを表示


始める前に

  1. Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  4. Verify that billing is enabled for your Google Cloud project.

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  7. Verify that billing is enabled for your Google Cloud project.

  8. App Engine で IAP を有効にするには、App Engine インスタンスを設定する必要があります。App Engine インスタンスをまだ設定していない場合は、App Engine のデプロイで完全なチュートリアルをご覧ください。

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

必要なロール

Google アカウントでユーザーを認証するために必要な権限を取得するには、プロジェクトに対する IAP ポリシー管理者 roles/iap.policyAdmin)IAM ロールの付与を管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

IAP の有効化

コンソール

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] ページの [アプリケーション] で、アクセスを制限するアプリケーションを見つけます。リソースの 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
  6. IAP で保護されたウェブアプリ ユーザーのロールを付与するプリンシパルをプロジェクトに追加します。
    gcloud projects add-iam-policy-binding PROJECT_ID \
           --member=PRINCIPAL_IDENTIFIER \
           --role=roles/iap.httpsResourceAccessor
    • PROJECT_ID を実際のプロジェクト ID に置き換えます。
    • PRINCIPAL_IDENTIFIER は、必要なプリンシパルに置き換えます。これは、ドメイン、グループ、serviceAccount、ユーザーのいずれかのタイプにできます。次に例を示します。 user:myemail@example.com

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 で保護されたウェブアプリ ユーザー(roles/iap.httpsResourceAccessor)ロールで IAP 権限が付与された Google アカウントからアプリの URL にアクセスします。

  2. Chrome のシークレット ウィンドウを使用してアプリにアクセスし、プロンプトが表示されたらログインします。IAP で保護されたウェブアプリ ユーザーのロールが付与され、認証に成功したユーザーはアプリにアクセスできます。必要なロールが付与されていないユーザーや認証に失敗したユーザーは、アプリにアクセスできません。

次のステップ