使用 Google 账号对用户进行身份验证
本快速入门介绍了如何启用 Identity-Aware Proxy (IAP) 来保护 App Engine 标准或柔性环境应用,以及如何向拥有 Google 账号的用户授予访问权限。
如果您打算通过内容分发网络 (CDN) 传送资源,请参阅缓存最佳实践指南了解重要信息。
当 App Engine 应用包含多项服务时,您可以在不同服务上配置不同的 IAP 权限,包括仅将部分服务设为可公开访问以保护他人的安全。
如需在 Google Cloud 控制台中直接遵循有关此任务的分步指导,请点击操作演示:
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
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.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
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.
-
Verify that billing is enabled for your Google Cloud project.
-
如需为 App Engine 启用 IAP,您需要设置 App Engine 实例。如果您尚未设置 App Engine 实例,请参阅部署到 App Engine 以查看完整演示。
默认情况下,IAP 使用 Google 管理的 OAuth 客户端,这要求您的项目属于某个组织,并且只允许内部用户访问。
所需的角色
如需获得使用 Google 账号对用户进行身份验证所需的权限,请让您的管理员为您授予项目的 IAP Policy Admin (roles/iap.policyAdmin) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
启用 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.gserviceaccount.com
- Google Workspace 网域:example.com
请务必添加您有权访问的 Google 账号。
- 从角色下拉列表中选择 Cloud IAP > 受 IAP 保护的网页应用用户。
- 点击保存。
启用 IAP
-
在 Identity-Aware Proxy 页面的应用下方,找到要限制访问的应用。如需为某资源开启 IAP,请
-
在出现的开启 IAP 窗口中,点击开启以确认您想用 IAP 保护资源。开启 IAP 后,它需要向对负载平衡器的所有连接请求索要登录凭据。只有具有项目的 IAP-Secured Web App User (
roles/iap.httpsResourceAccessor) 角色的正文才能获得访问权限。
gcloud
在设置项目和 IAP 之前,您需要最新版本的 gcloud CLI。如需了解如何安装 gcloud CLI,请参阅安装 gcloud CLI。
-
如需进行身份验证,请使用 Google Cloud CLI 并运行以下命令。
gcloud auth login - 点击显示的网址并登录。
- 登录后,复制显示的验证码并将其粘贴到命令行中。
-
运行以下命令,以指定包含您要使用 IAP 保护的应用的项目。
gcloud config set project PROJECT_ID -
如需启用 IAP,请运行以下命令。
gcloud iap web enable --resource-type=app-engine --versions=version -
将应拥有 IAP-secured Web App User 角色的主账号添加到项目中。
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 通过 IAM 角色 roles/iap.httpsResourceAccessor 修改 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 通过 IAM 角色 roles/iap.httpsResourceAccessor 修改 IAP 访问权限政策。详细了解如何管理角色和权限。
您可以在项目中的 App Engine 服务上启用 IAP。如需使某些服务可公开访问,而另一些服务需要进行身份验证,您可以在不同服务中使用不同的访问权限级别。如需了解详情,请参阅使用 IAP 管理访问权限。如需让服务可以公开访问,请向 allAuthenticatedUsers 授予 IAP-secured Web App User 角色。
测试用户身份验证
授予角色后,主账号可以通过使用 IAP 进行身份验证来访问应用。使用被授予 IAP-secured Web App User (
roles/iap.httpsResourceAccessor) 角色的 Google 账号访问应用网址。如需测试访问权限,请在 Chrome 中打开无痕式窗口,访问应用网址,并根据提示登录。获得 IAP-secured Web App User (
roles/iap.httpsResourceAccessor) 角色的用户在成功通过身份验证后可以访问该应用。未获得所需角色或未能通过身份验证的用户无法访问该应用。
后续步骤
- 了解如何获取用户的身份,以及如何开发自己的 App Engine 应用。