このページでは、App Engine スタンダード環境またはフレキシブル環境のアプリケーションをデプロイし、それを Identity-Aware Proxy(IAP)で保護する手順について説明します。このクイックスタートには、ログインしているユーザーの名前を確認する App Engine スタンダード環境ウェブアプリのサンプルコードが含まれています。
コンテンツ配信ネットワーク(CDN)からリソースを提供する予定の場合、ベスト プラクティス ガイドの重要な情報をご覧ください。
Google Cloud上にないリソースを保護するには、オンプレミスのアプリとリソースの保護をご覧ください。
始める前に
App Engine で IAP を有効にするには、次の操作を行います。
課金が有効になっている Google Cloud コンソール プロジェクトを使用します。
デフォルトの Google 管理の OAuth クライアントを使用する場合は、プロジェクトが Google Cloud 組織に属していることを 確認します。組織がない場合は、 作成できます。 カスタム OAuth クライアントを使用するメリットについては、 App Engine 用のカスタム OAuth クライアントを構成するをご覧ください。 Google 管理の OAuth クライアントは、内部ユーザーのみにアクセスを許可します。
App Engine インスタンスを設定します(まだ設定していない場合)。完全なチュートリアルについては、 App Engine へのデプロイをご覧ください。
IAP を有効にする
コンソール
プロジェクトが組織に属していない場合は、カスタム OAuth 認証情報を使用する必要があります。
プロジェクトの OAuth 同意画面をまだ構成していない場合は、画面を構成するように指示されます。OAuth 同意画面を構成する方法については、OAuth 同意画面の設定をご覧ください。
IAP アクセス権の設定
-
[Identity-Aware Proxy] ページに移動します。
[Identity-Aware Proxy] ページに移動 - IAP で保護するプロジェクトを選択します。
- アクセスを許可するリソースの横にあるチェックボックスをオンにします。
- 右側のパネルで [プリンシパルを追加] をクリックします。
-
表示される [メンバーの追加] ダイアログで、プロジェクトに対する IAP で保護されたウェブアプリ ユーザーの役割を付与するグループ、または個人のメールアドレスを追加します。
このロールを持つことができるプリンシパルの種類は次のとおりです。
- Google アカウント: user@gmail.com
- Google グループ: admins@googlegroups.com
- サービス アカウント: server@example。gserviceaccount.com
- Google Workspace ドメイン: example.com
追加する Google アカウントは、自分がアクセスできるものにしてください。
- [役割] のプルダウン リストから [Cloud IAP] > [IAP で保護されたウェブアプリ ユーザー] を選択します。
- [保存] をクリックします。
IAP の有効化
-
[Identity-Aware Proxy] ページの [アプリケーション] で、アクセスを制限するアプリケーションを見つけます。リソースの IAP を有効にするには、
- 表示された [IAP の有効化] ウィンドウで [有効にする] をクリックし、IAP でリソースを保護することを確認します。IAP が有効になった後は、ロードバランサへのすべての接続でログイン認証情報が必要になります。プロジェクトで IAP で保護されたウェブアプリ ユーザーの役割を持つアカウントにのみアクセスが許可されます。
gcloud
プロジェクトと IAP を設定する前に、最新バージョンの gcloud CLI を入手する必要があります。gcloud CLI をインストールする手順については、gcloud CLI をインストールするをご覧ください。
-
認証するには、Google Cloud CLI を使用して次のコマンドを実行します。
gcloud auth login - 表示された URL をクリックしてログインします。
- ログインしたら、表示される確認コードをコピーしてコマンドラインに貼り付けます。
-
次のコマンドを実行して、IAP で保護するアプリケーションを含むプロジェクトを指定します。
gcloud config set project PROJECT_ID -
IAP を有効にするには、次のコマンドを実行します。
gcloud iap web enable --resource-type=app-engine --versions=version -
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
次のコマンドを実行して
settings.jsonファイルを準備します。cat << EOF > settings.json { "iap": { "enabled":true } } EOF次のコマンドを実行して 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 アクセス ポリシーを変更できます。詳しくは、ロールと権限の管理をご覧ください。
プロジェクト内の App Engine サービスで IAP を有効にできます。一部のサービスを一般公開し、他のサービスで認証を要求するには、サービス間で異なるアクセスレベルを使用します。
詳細については、IAP でアクセスを管理するをご覧ください。
サービスを一般公開するには、IAP で保護されたウェブアプリ ユーザーのロールを allAuthenticatedUsers に付与します。
ユーザー認証をテストする
ロールが付与されると、プリンシパルは IAP で認証してアプリにアクセスできます。IAP で保護されたウェブアプリ ユーザー(
roles/iap.httpsResourceAccessor)ロールが付与された Google アカウントからアプリの URL にアクセスします。アクセスをテストするには、Chrome でシークレット ウィンドウを開き、アプリの URL にアクセスして、プロンプトが表示されたらログインします。 IAP で保護されたウェブアプリ ユーザー(
roles/iap.httpsResourceAccessor) ロールが付与され、認証に成功したユーザーはアプリにアクセスできます。 必要なロールが付与されていないユーザーや、認証に失敗したユーザーはアプリにアクセスできません。
次のステップ
- アクセスレベルを適用して、より詳細なコンテキスト ルールを設定する。
- Cloud Audit Logs でコンテキストアウェア アクセスのログを確認する。
- IAP の詳細について学習する。
- ユーザーの ID の取得方法を確認し、独自の App Engine アプリを開発する。