このページでは、Identity-Aware Proxy(IAP)を使用して App Engine インスタンスを保護する方法について説明します。
始める前に
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-secured Web App User 角色)的电子邮件地址。
以下种类的主账号可以具有此角色:
- Google 账号:user@gmail.com
- Google 网站论坛:admins@googlegroups.com
- 服务账号:server@example.
- Google Workspace 网域:example.com
请务必添加您有权访问的 Google 账号。
- 从角色下拉列表中选择 Cloud IAP > 受 IAP 保护的网页应用用户。
- 点击保存。
启用 IAP
-
在 Identity-Aware Proxy 页面上的应用下,找到您要限制访问的应用。如需为某资源开启 IAP,请
-
在出现的开启 IAP 窗口中,点击开启以确认您想用 IAP 保护资源。 开启 IAP 后,对于与负载均衡器的所有连接,它都要求提供登录凭证。
只有在项目中具有 IAP-Secured Web 应用 User (
roles/iap.httpsResourceAccessor) 角色的主体才能获得访问权限。
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 でアクセスを管理するをご覧ください。サービスを一般公開するには、allAuthenticatedUsers に IAP で保護されたウェブアプリ ユーザーのロールを付与します。
ユーザー認証をテストする
ロールが付与されると、プリンシパルは IAP で認証してアプリにアクセスできます。IAP で保護されたウェブアプリ ユーザー(
roles/iap.httpsResourceAccessor)ロールが付与された Google アカウントからアプリの URL にアクセスします。アクセスをテストするには、Chrome でシークレット ウィンドウを開き、アプリの URL にアクセスして、プロンプトが表示されたらログインします。IAP で保護されたウェブアプリ ユーザー(
roles/iap.httpsResourceAccessor)ロールが付与され、認証に成功したユーザーはアプリにアクセスできます。必要なロールが付与されていないユーザーや認証に失敗したユーザーは、アプリにアクセスできません。