准备工作
- 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
- 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
- 在屏幕左上角,点击开始实验即可开始
Create shared flow and flow hook
/ 40
Add a Cloud Armor security policy
/ 40
Wait for instance to be ready
/ 20
在本实验中,您将使用 Apigee X 威胁防护政策来保护 API 免受基于内容的威胁。您还要将 Cloud Armor 添加到全球外部 HTTPS 负载均衡器,以提供 Web 应用防火墙功能,例如分布式拒绝服务攻击 (DDoS) 防护、OWASP 十大风险缓解以及基于 IP 和地理位置的访问权限控制。
负载均衡器和桥接虚拟机的托管式实例组已创建完毕,可供您访问运行时实例。此配置的架构如下所示:
传入的 API 调用通过全球外部 HTTPS 负载均衡器进入客户项目。外部 HTTPS 负载均衡器无法将调用转发到租户项目,而是将请求转发到客户项目中桥接虚拟机的托管式实例组。这些桥接虚拟机位于连接到 Apigee 运行时实例的对等互连网络中,从而允许虚拟机将 API 调用转发到运行时实例。
发送到负载均衡器的任何 HTTP 流量都将转发到桥接虚拟机,然后转发到 Apigee 运行时实例。您将添加 Cloud Armor 安全政策,以阻止特定流量直接发送到运行时实例。
JSON 和 XML 攻击会使用精心构造的载荷压垮 JSON 和 XML 解析器,引发应用级的拒绝服务攻击。Cloud Armor 不能检测这些类型的攻击,但 Apigee 可以。利用 JSONThreatProtection 和 XMLThreatProtection 政策,无需将载荷加载到解析器中,即可检测到这些恶意载荷。您将使用 JSONThreatProtection 政策来防范畸形的 JSON 载荷。
本实验中的说明对于付费组织和评估组织均适用。
在本实验中,您将学习如何执行以下任务:
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
您也可以在“实验详细信息”窗格中找到“用户名”。
点击下一步。
复制下面的密码,然后将其粘贴到欢迎对话框中。
您也可以在“实验详细信息”窗格中找到“密码”。
点击下一步。
继续在后续页面中点击以完成相应操作:
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
点击 Google Cloud 控制台顶部的激活 Cloud Shell 。
在弹出的窗口中执行以下操作:
如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID
gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
输出:
输出:
gcloud 的完整文档,请参阅 gcloud CLI 概览指南。
在此任务中,您将创建一个包含 JSONThreatProtection 政策的共享流,然后使用流程钩子为所有 Apigee API 启用该共享流。
JSONThreatProtection 政策将拒绝超出指定限制的传入 JSON 请求。将该政策放在一个共享流中,然后使用流程钩子附加该共享流,就能保护向环境中部署的所有代理发出的任何请求。
如需打开 Apigee 控制台,请执行以下操作:
Apigee,然后点击搜索结果中的 Apigee API Management。Apigee 控制台会随即打开,着陆页会显示指向常用位置的快捷链接。
Apigee 现在已作为收藏项添加到导航菜单中。
在导航菜单中,依次选择代理开发 > 共享流。
点击创建。
共享流可包含一组政策和条件,并可借助 FlowCallout 政策在 API 代理或其他共享流中执行。在本实验中,您将使用流程钩子中的共享流,该钩子将共享流附加到评估组织中部署的每个代理。
将共享流命名为 protect-json,然后点击创建。
点击开发标签页。
在共享流的左侧菜单中,点击共享流部分中的默认。
在 sharedflows/default.xml 窗格中,点击添加政策步骤 ()。
对于选择政策,选择创建新政策。
选择 JSON 威胁防护,然后将显示名称和名称设置为 JTP-Protect。
点击添加。
JSONThreatProtection 政策包含多个元素,以便对传入的 JSON 请求施加限制。通常根据 API 的最大值来设置这些限制。在本例中,请保留该政策的默认配置。
仅当请求的 Content-Type 标头设置为 application/json(表示传入的请求包含 JSON 载荷)时,该政策才会执行。
点击保存。
点击部署,对于环境,请选择评估。
点击部署,然后点击确认。
共享流将附加到代理前的流程钩子,以便先于代理执行。
前往管理 > 环境
点击评估 > 流程钩子。
在代理前这一行的下拉菜单中,选择 protect-json 共享流,然后点击保存。
您将在后面的任务中测试该流程钩子。
点击“检查我的进度”以验证是否完成了以下目标:
在此任务中,您将添加 Cloud Armor 安全政策来保护负载均衡器并控制对 API 的访问。
Cloud Armor 是 Google Cloud 的 Web 应用防火墙。您可以为一个负载均衡器指定单一 Cloud Armor 政策。在本实验中,您将使用 Cloud Armor 安全政策在特定流量到达 Apigee 运行时实例之前拒绝该流量,从而保护您的 API。
在 Cloud 控制台标签页中,点击导航菜单 () 中的查看所有产品,然后在网络部分中选择网络安全,然后前往 Cloud Armor 政策。
点击创建政策。
对于名称,指定为 protect-apis。
该安全政策将使用规则来阻止发往 Apigee API 的特定流量。
对于默认规则操作,选择拒绝。
用户如不符合明确允许流量通过的规则,将被拒绝访问 API。
在拒绝状态下拉菜单中,选择 403(已禁止)。
如果请求不符合允许流量通过的规则,则向用户返回状态代码“403 禁止访问”。
点击下一步。
该规则将仅允许来自指定国家/地区的请求。
点击添加规则。
点击高级模式。
基本模式规则只能指定要匹配的 IP 地址或 IP 地址范围。在本例中,您需要指定允许的国家/地区代码。
对于匹配部分,指定以下表达式:
对于 Cloud Armor,region_code 指定为 ISO 3166-2 区域。该规则匹配的对象是来自美国的请求。
对于操作,指定为允许。
将优先级设置为 1000,然后点击保存对规则的更改。
该规则将阻止包含 SQL 输入并可能导致 SQL 注入的请求。
点击添加规则。
点击高级模式。
对于匹配部分,指定以下表达式:
该表达式指定了预配置的 Cloud Armor 规则。预配置的规则使用开源的业界标准签名来检测恶意请求。要停用特定签名,请提供要停用的签名名称。
在本例中,敏感度级别为 3 和 4 的签名已停用。签名的敏感度级别也称为偏执级别,它指定了以更多误报数量换取更高安全级别的一种权衡结果。
级别 1 是默认的安全级别,几乎不会出现误报。级别 2 提供额外的保护,抵御高级攻击和混淆攻击。级别 3 和 4 的签名更为激进,导致误报的可能性显著更高。例如,级别 3 或 4 的签名可能会标记包含简单 JSON 载荷的 POST 请求。
操作保留为拒绝,并且拒绝状态保留为 403(已禁止)。
将优先级设置为 500。
在评估 Cloud Armor 政策规则时,遇到的第一个与请求匹配的规则决定了将要执行的操作。SQL 注入检查需要发生在区域检查之前,因为我们希望拒绝来自允许的区域但包含 SQL 注入模式的请求。通过选择数字较小的优先级,就能在区域检查之前完成 SQL 注入检查。
点击保存对规则的更改。
请看右边的摘要。该政策包含 3 条规则。系统会按优先级数字从小到大的顺序评估规则,并使用第一个匹配的规则。
第一条规则在检测到 SQL 注入模式时拒绝访问。
第二条规则允许来源于美国的访问。
最后一条规则拒绝所有流量的访问。
点击创建政策。
政策标签页显示,新 protect-apis 政策的目标数为 0,因为您尚未将其附加到负载均衡器。
点击 protect-apis 旁边的政策菜单按钮 (),然后点击将政策应用于目标。
在后端服务 1 下拉菜单中,选择 apigee-proxy-backend,然后点击添加。
protect-apis 政策详情页面很快会显示,该政策应用于 1 个目标。
点击“检查我的进度”以验证是否完成了以下目标:
在此任务中,您将等待 Apigee 评估组织预配完毕。
Apigee 组织预配可能需要相当长的时间才能完成。您可以使用 Apigee API 监控组织预配进度。
在 Cloud Shell 中,使用以下命令验证 GOOGLE_CLOUD_PROJECT 变量是否包含您的项目名称:
变量 GOOGLE_CLOUD_PROJECT 应包含您的项目名称,它与您的 Apigee 组织名称相同。
如果未设置 GOOGLE_CLOUD_PROJECT 变量,请使用如下所示的命令手动设置该变量,并将 {project} 替换为您的项目名称:
将以下命令粘贴到 Cloud Shell 中:
这组命令使用 Apigee API 来判断运行时实例是否已创建,以及评估环境是否已关联至该实例。
等待实例准备就绪。
当屏幕上打出文本 ***ORG IS READY TO USE*** 时,表示实例已准备就绪。
点击“检查我的进度”以验证是否完成了以下目标:
在此任务中,您将验证 Cloud Armor 安全政策是否保护您的 API,同时对来自允许区域的合规流量予以放行,并验证流程钩子能否防范 JSON 威胁。
系统自动为您创建了一个名为 apigeex-test-vm 的虚拟机。您可以使用此虚拟机从美国调用 API。
在 Cloud Shell 中,建立与美国测试虚拟机的 SSH 连接:
如果系统提示 Do you want to continue (Y/n)?,请按 Y 继续。
对于 Cloud Shell 中提出的每个问题,按 Enter 键或 Return 键来指定默认输入。
您的登录身份是项目的所有者,因此可以通过 SSH 连接到此虚拟机。
您的 Cloud Shell 会话现在正在虚拟机内运行。
验证 hello-world API 代理现在是否可访问:
hello-world 代理可能需要一小段时间才能部署完成,然后通过外部负载均衡器供您使用。当这些命令返回 ***HELLO-WORLD IS ACCESSIBLE*** 时,即可使用 hello-world 代理。
调用评估环境中部署的 hello-world API 代理:
系统已为主机名 eval.example.com 创建 DNS 条目,其中包含负载均衡器的传入 IP 地址。
-i 选项显示响应的状态代码和标头。
-k 选项会跳过对负载均衡器 TLS 证书的验证,因为负载均衡器使用的 TLS 证书是自签名证书,而非由已知证书授权机构验证的证书。
该虚拟机位于美国,因此您的 curl 命令应成功返回 hello-world 代理生成的 Hello, Guest! 响应消息:
使用以下命令调用 hello-world 代理:
此请求超出了共享流中包含的 JSONThreatProtection 政策所指定的 ObjectEntryNameLength 限制。共享流使用代理前的流程钩子附加到所有 API 代理。
响应内容应如下所示:
尝试使用以下命令调用 hello-world API 代理:
item 查询参数使用 SQL 注入模式,如果 SQL 查询是通过串联字符串构建的,可能会产生意想不到的后果。
Cloud Armor 成功检测到 SQL 注入模式并阻止了该请求,返回的响应结果为“403 禁止访问”:
输入 exit 关闭与美国虚拟机的 SSH 连接。
在此任务中,您将验证 Cloud Armor 安全政策是否禁止区域不在允许清单内的流量。
系统自动在区域
如果系统提示您进行授权,请点击授权。
对于 Cloud Shell 中提出的每个问题,按 Enter 键或 Return 键来指定默认输入。
您的登录身份是项目的所有者,因此可以通过 SSH 连接到此虚拟机。
您的 Cloud Shell 会话现在正在虚拟机内运行。
调用评估环境中部署的 hello-world API 代理:
该虚拟机不在美国境内,因此 Cloud Armor 应阻止该请求,并返回 403 错误:
在此任务中,您将在 Cloud Monitoring 中查看 Cloud Armor 政策信息中心。
在 Cloud 控制台标签页中,前往 Monitoring > 信息中心。
点击 Cloud Armor 政策概览。
此信息中心显示所有 Cloud Armor 政策的请求允许率和阻止率。您目前只有一项政策。
在政策窗格中,点击 protect-apis。
此信息中心显示 protect-apis 政策的请求允许率和阻止率。
如需记录各个请求的详细信息,您需要为负载均衡器启用请求日志记录。
在本实验中,您创建了 Cloud Armor 政策,并使用该政策基于 Cloud Armor 规则拒绝或允许了传入流量。
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2025 年 9 月 17 日
上次测试实验的时间:2025 年 9 月 17 日
版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。
此内容目前不可用
一旦可用,我们会通过电子邮件告知您
太好了!
一旦可用,我们会通过电子邮件告知您
一次一个实验
确认结束所有现有实验并开始此实验