实验设置说明和要求
保护您的账号和进度。请务必在无痕浏览器窗口中,使用实验凭证运行此实验。

基于零信任安全模型,使用 Identity-Aware Proxy (IAP) 保护云应用

实验 30 分钟 universal_currency_alt 1 个点数 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP946

Google Cloud 自学实验的徽标

概览

在零信任安全模型中,任何人、任何设备或任何网络都不是默认可信的。是否授予访问权限取决于诸多因素,包括但不限于身份、设备、位置和时段。执行零信任政策的一个主要应用场景是安全访问 Web 应用,例如托管在 Google Cloud 或本地数据中心且基于 HTTP/HTTPS 协议的应用。每个 Web 应用均可设置独立的访问控制机制,以实现精确的安全管控并降低安全风险。要想保护 Web 应用,您不必设置访问控制列表 (ACL),而是可以通过设置 IP 范围,在不降低安全性的前提下实现快速接入。在整个架构中,能提供零信任访问的主要组件是:

  • Identity-Aware Proxy (IAP) - 一个政策执行引擎,确保每个访问请求都获得授权。

在本实验中,您将在 App Engine 中部署一个示例应用,并使用 Identity-Aware Proxy (IAP) 强制执行政策。您还将在 IAP 所保护的应用中获取用户身份信息。

学习目标

  • 使用 Python 部署简单的 App Engine 应用。
  • 启用 Identity-Aware Proxy (IAP) 以限制对应用的访问。
  • 在应用中从 IAP 获取用户身份信息。

前提条件

编程语言基础知识 (Python)

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:

    • “打开 Google Cloud 控制台”按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示“登录”页面。

    提示:将这些标签页安排在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在“实验详细信息”窗格中找到“用户名”。

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在“实验详细信息”窗格中找到“密码”。

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。 “导航菜单”图标和“搜索”字段

激活 Cloud Shell

Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标

  2. 在弹出的窗口中执行以下操作:

    • 继续完成 Cloud Shell 信息窗口中的设置。
    • 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。

如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。

  1. (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
  1. 点击授权

输出:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南

场景

您将使用 Google App Engine 构建一个很小的 Web 应用,然后尝试通过多种方式使用 Identity-Aware Proxy 限制对该应用的访问并向该应用提供用户身份信息。您的应用将:

  • 显示欢迎页面
  • 访问 IAP 提供的用户身份信息

任务 1. 部署应用并使用 IAP 对它加以保护

该应用是使用 Python 3.8 编写的 App Engine 标准应用,只会显示“Hello, World”欢迎页面。您要部署和测试它,然后使用 IAP 限制对它的访问。

  • 在 Cloud Shell 中,运行以下命令从 GitHub 下载本实验所需的代码,然后切换到代码文件夹:
git clone https://github.com/googlecodelabs/user-authentication-with-iap.git cd user-authentication-with-iap

检查应用代码

  • 从项目主文件夹目录切换到 1-HelloWorld 文件夹目录:
cd 1-HelloWorld

应用代码在 main.py 文件中。它使用 Flask Web 框架,通过在模板中动态填充内容来响应 Web 请求。该模板文件位于 templates/index.html。在此步骤中,它仅包含纯 HTML。第二个模板文件位于 templates/privacy.html,它包含框架性的隐私权政策示例。

另外还有两个文件:requirements.txtapp.yaml,前者列出应用所使用的所有非默认 Python 库,后者告诉 Google Cloud Platform 这是一个 Python 3.8 App Engine 应用。

您可以使用 cat 命令在 Cloud Shell 中列出每个文件:

cat main.py

您还可以点击 Cloud Shell 窗口右上角的修改 (“修改”图标。) 打开 Cloud Shell 代码编辑器,并在编辑器加载完成后使用它来检查代码。

在这一步您无需更改任何文件。

将应用部署到 App Engine

现在,将应用部署到适用于 Python 3.8 的 App Engine 标准环境。

  1. 运行以下命令:
gcloud app create --project=$(gcloud config get-value project) --region={{{ project_0.startup_script.app_region | REGION }}}

当系统询问您是否要继续时,请输入 Y(表示“是”)。

系统还可能会要求您为发起的调用授权以创建 App Engine 应用。如果出现这种情况,请点击授权按钮。
  1. 在 Cloud Shell 代码编辑器中,查看 1-HelloWorld 文件夹中的 app.yaml 文件,并更新运行时 Python 版本。
runtime: python310
  1. 在创建命令完成后,运行以下命令:
gcloud app deploy

如果系统询问您是否继续,请输入 Y 并按 Enter 键。

注意:如果出现错误,请重新运行该命令即可避免。

几分钟后,部署就会完成,此时您将看到一条消息,提示您可以使用以下命令查看应用:

gcloud app browse 注意:由于这是该应用首次运行,因此要在云实例启动后才会显示,此过程需要几秒钟时间。输出结果应该与下图类似。此时访问尚未受到限制。

IAP 示例应用显示在浏览器中,其中包含文本“This is step 1 of the User Authentication with IAP codelab”。

点击“检查我的进度”,以验证是否完成了以下目标: 将应用部署到 App Engine

使用 IAP 限制访问

  1. 前往导航菜单 > 查看所有产品 > 安全 > Identity-Aware Proxy,然后点击启用 API 按钮,再点击转到 Identity-Aware Proxy

  2. 如需配置项目的 OAuth 权限请求页面,请依次点击导航菜单 (“导航菜单”图标) > API 和服务 > OAuth 权限请求页面,以进入该页面。

  3. 在“OAuth 概览”页面上,点击开始,然后在应用名称中输入:IAP Example

  4. 提供用户支持邮箱:

  5. 受众群体类型部分,选择内部,然后点击下一步

  6. 联系信息下方,输入第 4 步中提供的邮箱,然后点击下一步

  7. 完成下方,选中接受条款及条件复选框,然后点击创建

  8. 返回第一个浏览器标签页,在 Cloud Shell 中运行以下命令:

export AUTH_DOMAIN=$(gcloud config get-value project).uc.r.appspot.com

复制该网址,因为您需要将这些命令的输出结果输入到 OAuth 权限请求标签页上的表单中。

  1. 请运行以下命令查看填充的值:
echo $AUTH_DOMAIN
  1. OAuth 概览页面上,点击创建 OAuth 客户端,在“应用类型”下选择Web 应用

  2. 已获授权的重定向 URI 下,点击 + 添加网址,输入在命令输出中收到的网址,然后点击创建

  3. 在未使用的标签页中,前往导航菜单 > 查看所有产品 > 安全 > Identity-Aware Proxy

必要时请刷新页面。

  1. 点击“App Engine 应用”行、“IAP”列中的切换按钮,为上一部分中部署的应用启用 IAP。

“HTTPS 资源”标签页,其中显示“App Engine 应用”字段中已开启的 IAP 切换开关。

  1. 按住 Ctrl/Command 键,在 IAP 控制台中选择 App Engine 应用的网址,以访问该应用。

  2. 使用登录表单中列出的学生用户账号登录。

Google 登录弹出式窗口,其中显示一位学生用户。

您会在屏幕中看到,您无权访问该应用。

弹出式通知:您没有访问权限。

您已成功使用 IAP 保护您的应用,但尚未指示 IAP 允许哪些账号访问。

点击“检查我的进度”,以验证是否完成了以下目标: 使用 IAP 限制访问

允许成员访问应用

  1. 前往导航菜单 > 查看所有产品 > 安全 > Identity-Aware Proxy,返回到控制台的 Identity-Aware Proxy 页面。

  2. 选中 App Engine 应用旁边的复选框,查看页面右侧的边栏,然后点击添加主账号

App Engine 应用,其中包含“显示继承的权限”切换开关和“添加成员”按钮。

  1. 从实验左上角的实验控制台中复制 Username,然后粘贴到新的主账号输入框中。

  2. 点击 Cloud IAP > IAP-secured Web App User,设置其角色。

“过滤条件”下拉菜单,其中包含“快速访问”“按产品或服务”和“角色”类别下列出的选项。

  1. 完成后,请点击保存。窗口底部会显示“政策已更新”消息。

点击“检查我的进度”,以验证是否完成了以下目标: 允许成员访问应用

验证访问是否已恢复

  • 返回到您的 App Engine 应用并重新加载页面。您现在应该可以看到自己的 Web 应用,因为您已经以授权用户的身份登录。

不过,由于系统存储了登录 Cookie,IAP 可能不会重新检查您是否获得授权,因此您可能仍然会看到“您没有访问权限”页面

在这种情况下,请执行以下步骤:

  1. 打开网络浏览器,输入首页地址,并在网址末尾添加 /_gcp_iap/clear_login_cookie,例如输入 https://iap-example-999999.appspot.com/_gcp_iap/clear_login_cookie
注意:请使用您在本实验前面步骤中部署的 App Engine 应用的网址。上面的网址只是一个示例。

您将看到新的“使用 Google 账号登录”屏幕,并且您的账号已显示在其中。

注意:请勿点击账号!
  1. 而应点击使用其他账号,然后重新输入您的凭证。

这会让 IAP 重新检查您的访问权限,您现在应该能看到应用的首页。

任务 2. 访问用户身份信息

一旦应用受到 IAP 保护,它就可以使用 IAP 在所传递的 Web 请求标头中提供的身份信息。在此步骤中,该应用将获取已登录用户的邮箱,以及 Google Identity 服务分配给该用户的永久性唯一身份用户 ID。该数据将在欢迎页面中显示给用户。

  1. 在 Cloud Shell 中,输入以下命令:
cd ~/user-authentication-with-iap/2-HelloUser
  1. 在 Cloud Shell 代码编辑器中,查看 2-HelloUser 文件夹中的 app.yaml 文件,并更新运行时 Python 版本:
runtime: python310
  1. 使用以下命令将应用部署到 App Engine:
gcloud app deploy 注意:系统可能会要求您授权调用,以部署该应用。
  1. 如果系统询问您是否继续,请输入 Y

  2. 部署就绪后,输入以下命令:

gcloud app browse

如果浏览器中没有打开新标签页,请复制所显示的链接,在新标签页中打开它。您应该会看到如下所示的页面:

“IAP Hello User”页面。

注意:新版应用替换之前的版本可能需要几分钟的时间,请耐心等候。有时需要刷新页面,才能看到类似上图的页面。

点击“检查我的进度”,以验证是否完成了以下目标: 访问用户身份信息

检查应用文件

2-HelloUser 文件夹包含的文件集与 1-HelloWorld 文件夹相同,但有两个文件发生了改变:main.pytemplates/index.html。程序已改为检索 IAP 在请求标头中提供的用户信息,并且模板现在会显示这些数据。

  1. 运行 cat main.py 以查看 main.py 文件的内容。

main.py 中有两行代码用于获取 IAP 提供的身份数据:

user_email = request.headers.get('X-Goog-Authenticated-User-Email') user_id = request.headers.get('X-Goog-Authenticated-User-ID')

X-Goog-Authenticated-User- 标头由 IAP 提供,并且名称不区分大小写,因此,如果您愿意,可以将它们全部小写或全部大写。render_template 语句现在包含这些值,因此应用可以显示这些信息:

page = render_template('index.html', email=user_email, id=user_id)

index.html 模板可以通过将名称括在双花括号中来显示这些值:

Hello, {{ email }}! Your persistent ID is {{ id }}.

提供的数据带有 accounts.google.com: 前缀,用于指示信息来源。如果需要,您的应用可以移除冒号前的所有内容(包括冒号)以获取原始值。

恭喜!

您已了解如何使用 Identity-Aware Proxy (IAP) 来保护部署到 Google Cloud 的 HTTP(s) 应用。

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2025 年 11 月 12 日

上次测试实验的时间:2025 年 11 月 12 日

版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。