GSP877
概览
Google Cloud HTTP(S) 负载均衡部署在全球各地的 Google 入网点 (POP),位于 Google 网络边缘。定向到 HTTP(S) 负载均衡器的用户流量会进入距离用户最近的 POP,然后通过 Google 的全球网络进行负载均衡,转发到具有足够可用容量的最近后端。
Cloud Armor 是 Google 推出的分布式拒绝服务攻击和 Web 应用防火墙 (WAF) 检测系统。Cloud Armor 与 Google Cloud HTTP 负载均衡器紧密耦合,可保护 Google Cloud 客户的应用免受来自互联网的攻击。
reCAPTCHA Enterprise 服务基于 reCAPTCHA API 构建,利用先进的风险分析技术区分人类与漫游器,从而保护您的网站免受垃圾内容和滥用行为的侵扰。Cloud Armor 漫游器管理提供了一套端到端解决方案,它将 reCAPTCHA Enterprise 的漫游器检测和评分功能与 Cloud Armor 在网络边缘的强制执行能力相结合,从而保护下游应用。
在本实验中,您将配置一个带有后端的 HTTP 负载均衡器,如下图所示。您将设置一个 reCAPTCHA 会话令牌网站密钥,并将其嵌入到您的网站中。您还将设置到 reCAPTCHA Enterprise 手动验证任务的重定向。然后,您将配置 Cloud Armor 漫游器管理政策,亲身体验漫游器检测功能如何保护您的应用免受恶意漫游器流量的侵害。

学习内容
在本实验中,您将学习如何完成以下操作:
- 配置 HTTP 负载均衡器并设置相应的健康检查
- 创建 reCAPTCHA WAF 验证任务页面网站密钥,并将其与 Cloud Armor 安全政策关联
- 创建 reCAPTCHA 会话令牌网站密钥并将其安装到您的网页上
- 创建 Cloud Armor 漫游器管理政策
- 验证漫游器管理政策是否根据所配置的规则处理流量
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。右侧是实验设置和访问权限面板,其中包含以下内容:
-
打开 Google Cloud 控制台按钮
- 您在本实验中必须使用的临时凭证(用户名和密码)
- 帮助您逐步完成该实验所需的其他信息(如果需要)
请注意,实验计时器位于页面顶部附近,将显示剩余时间。
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:可以将这些标签页分别放在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在实验设置和访问权限面板中找到“用户名”。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在实验设置和访问权限面板中找到“密码”。
-
点击下一步。
重要提示:您必须使用实验提供的凭证。请勿使用您的 Google Cloud 账号凭证。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
依次点击进入后续页面:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重身份验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。
准备工作
- 在 Cloud Shell 中,设置您的项目 ID:
export PROJECT_ID=$(gcloud config get-value project)
echo $PROJECT_ID
gcloud config set project $PROJECT_ID
启用 API
gcloud services enable compute.googleapis.com
gcloud services enable logging.googleapis.com
gcloud services enable monitoring.googleapis.com
gcloud services enable recaptchaenterprise.googleapis.com
现在,您已完成设置,可以开始执行第一个任务了。
任务 1. 配置防火墙规则,以允许 HTTP 和 SSH 流量进入后端
在本实验中,您将使用实验启动时在项目中创建的 default VPC 网络。
在本部分中,您将配置防火墙规则,以允许来自 Google Cloud 健康检查和负载均衡器的 HTTP 流量进入后端。然后,您需要配置一条防火墙规则,以允许通过 SSH 连接到实例。
创建防火墙规则,以允许 HTTP 流量进入后端。
健康检查可确定负载均衡器的哪些实例能接收新连接。在 HTTP 负载均衡的过程中,对负载均衡实例的健康检查探测来自于 130.211.0.0/22 和 35.191.0.0/16 范围内的地址。您的 VPC 防火墙规则必须允许这些连接。此外,负载均衡器也会在相同的 IP 地址范围内与后端进行通信。
如需创建防火墙规则,以允许 HTTP 流量进入后端,请执行以下操作:
- 在 Google Cloud 控制台中,从主菜单的产品部分,点击 VPC 网络,然后选择防火墙。
- 请注意现有的 ICMP、internal、RDP 和 SSH 防火墙规则。每个 Google Cloud 项目在创建之初都包含 default 网络以及上述防火墙规则。
- 点击创建防火墙规则。
- 设置以下值,将其余各项保留为默认值:
| 属性 |
值(按照说明输入值或选择选项) |
| 名称 |
default-allow-health-check |
| 网络 |
default |
| 目标 |
指定的目标标记 |
| 目标标记 |
allow-health-check |
| 来源过滤条件 |
IPv4 范围 |
| 来源 IPv4 范围 |
130.211.0.0/22、35.191.0.0/16 |
| 协议和端口 |
指定的协议和端口;然后勾选 tcp。输入端口号 80
|
注意:请务必逐个输入上述两个来源 IPv4 范围,并在两者间输入一个空格。
- 点击创建。
或者,在 gCloud 命令行中,使用以下命令:
gcloud compute firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:80 --source-ranges=130.211.0.0/22,35.191.0.0/16 --target-tags=allow-health-check
- 同样,创建一条防火墙规则,允许通过 SSH 连接到实例:
gcloud compute firewall-rules create allow-ssh --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:22 --source-ranges=0.0.0.0/0 --target-tags=allow-health-check
点击检查我的进度,验证是否完成了以下目标:
配置防火墙规则,以允许 HTTP 和 SSH 流量进入后端
任务 2. 配置实例模板并创建托管式实例组
托管式实例组可使用实例模板来创建一组相同的实例。您可以使用这些实例来创建 HTTP 负载均衡器的后端。
配置实例模板
实例模板是一种可用于创建虚拟机实例和托管式实例组的资源。该模板定义了机器类型、启动磁盘映像、子网、标签以及其他实例属性。
如需创建实例模板,请执行以下操作:
- 在控制台中,从主菜单的产品部分,点击 Compute Engine,然后从虚拟机部分,选择实例模板。
- 在实例模板页面的标题栏中,点击创建实例模板。
- 对于名称,输入 lb-backend-template。
- 对于位置,选择全球。
- 对于系列,选择 E2。
- 点击高级选项。
- 在管理标签页中,向下滚动到自动化部分,并在启动脚本字段中插入以下脚本:
#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo a2ensite default-ssl
sudo a2enmod ssl
sudo su
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://metadata.google.internal/computeMetadata/v1/instance/name)"
echo "Page served from: $vm_hostname" | \
tee /var/www/html/index.html
- 在高级选项中,点击网络标签页,然后在网络标记文本框中输入 allow-health-check。
- 设置以下值,将其余各项保留为默认值:
| 属性 |
值(按照说明输入值或选择选项) |
| 网络(位于“网络接口”下) |
default |
| 子网(位于“网络接口”下) |
default () |
注意:网络标记 allow-health-check 可确保 HTTP 健康检查和 SSH 防火墙规则应用于这些实例。
- 点击创建。
等待实例模板创建完毕。
创建托管式实例组
如需创建托管式实例组,请执行以下操作:
-
在 Compute Engine 导航菜单中,点击实例组部分下的实例组。
-
点击创建实例组。
-
确保选中新建托管式实例组(无状态)。
-
设置以下值,将其余各项保留为默认值:
| 属性 |
值(按照说明输入值或选择选项) |
| 名称 |
lb-backend-example |
| 实例模板 |
lb-backend-template |
| 位置 |
单个可用区 |
| 区域 |
|
| 可用区 |
|
| 自动扩缩 |
将自动扩缩模式设置为关闭:不自动扩缩
|
| 实例数下限 |
1 |
- 点击创建。
向实例组添加命名端口
- 请将以下代码段粘贴到 Cloud Shell 中,为您的实例组定义一个 HTTP 服务,并将端口名称映射到相关端口:
gcloud compute instance-groups set-named-ports lb-backend-example \
--named-ports http:80 \
--zone {{{project_0.startup_script.lab_zone|lab_zone}}}
负载均衡服务会将流量转发到命名端口。
点击检查我的进度,验证是否完成了以下目标:
配置实例模板并创建托管式实例组
任务 3. 配置 HTTP 负载均衡器
在本部分中,您将配置 HTTP 负载均衡器,以将流量发送到后端 lb-backend-example。
开始配置
-
在控制台中,前往导航菜单 (
),点击查看所有产品,然后在网络部分,依次点击网络服务 > 负载均衡。
-
点击创建负载均衡器。
-
确保已选择应用负载均衡器 (HTTP/HTTPS),然后点击下一步。
-
确保已选择公共(外部),然后点击下一步。
-
确保已选择最适合全球性工作负载,然后点击下一步。
-
确保已选择全球外部应用负载均衡器,然后点击下一步。
-
选择配置。
-
在负载均衡器名称文本框中,输入 http-lb
配置前端
- 点击前端配置。
- 指定以下内容,并将其余各项保留为默认值:
| 属性 |
值(按照说明输入值或选择选项) |
| 协议 |
HTTP |
| IP 版本 |
IPv4 |
| IP 地址 |
临时 |
| 端口 |
80 |
- 点击完成。
配置后端
后端服务会将传入的流量定向到一个或多个关联的后端。每个后端由一个实例组和附加的服务容量元数据组成。
- 在创建全球外部应用负载均衡器页面上,点击后端配置。
- 对于后端服务和后端存储桶,点击创建后端服务。
- 设置以下值,将其余各项保留为默认值:
| 属性 |
值(按照说明选择选项) |
| 名称 |
http-backend |
| 协议 |
HTTP |
| 命名端口 |
http |
| 实例组(位于“新建后端”下) |
lb-backend-example |
| 端口号 |
80 |
| 缓存模式 |
使用基于 Cache-Control 标头的源站设置 |
| 健康检查 |
创建健康检查 |
- 在健康检查页面中,设置以下值。其余各项保留默认值:

- 设置以下值,将其余各项保留为默认值:
| 属性 |
值(按照说明选择选项) |
| 名称 |
http-health-check |
| 协议 |
TCP |
| 端口 |
80 |
注意:健康检查可确定哪些实例能接收新连接。
此 HTTP 健康检查每 5 秒轮询一次实例,最多等待 5 秒来接收响应,并将连续 2 次成功尝试或 2 次失败尝试分别视为状况良好或状况不佳的判断标准。
- 点击创建以创建健康检查。
- 选中启用日志记录框。
- 确保将采样率设为 1。
- 点击创建以创建后端服务,然后点击确定。
检查并创建 HTTP 负载均衡器
主机和路径规则决定了流量的转发方式。例如,您可以将视频流量定向到一个后端,将静态流量定向到另一个后端。不过,主机和路径规则的配置并不在本实验的涵盖范围内。
- 点击检查并最终确定(可选)。

- 检查后端服务和前端。
- 点击创建。
等待负载均衡器创建完毕。
- 点击负载均衡器的名称 (http-lb)。
- 记下负载均衡器的 IPv4 地址,以便在下一个任务中使用。在本实验中,将其称为
[LB_IP_v4]。
点击检查我的进度,验证是否完成了以下目标:
配置 HTTP 负载均衡器
测试 HTTP 负载均衡器
现在您已经为后端创建了 HTTP 负载均衡器,接下来验证流量是否会转发到该后端服务。
- 若要测试通过 IPv4 访问 HTTP 负载均衡器的情况,请在浏览器中打开一个新标签页,并访问 http://[LB_IP_v4]。请务必将
[LB_IP_v4] 替换为负载均衡器的 IPv4 地址。
注意:您最长可能需要 5 分钟才能访问 HTTP 负载均衡器。在此期间,您可能会收到 404 或 502 错误。请继续尝试,直至看到网页加载完成。
任务 4. 创建并部署 reCAPTCHA 会话令牌和验证任务页面网站密钥
reCAPTCHA Enterprise for WAF 与 Google Cloud Armor 的集成提供以下功能:reCAPTCHA 验证任务页面、reCAPTCHA 操作令牌和 reCAPTCHA 会话令牌。在此任务中,您将实现 reCAPTCHA 会话令牌网站密钥和 reCAPTCHA WAF 验证任务页面网站密钥。
创建 reCAPTCHA 会话令牌和 WAF 验证任务页面网站密钥
在创建会话令牌网站密钥和验证任务页面网站密钥之前,请仔细核查您是否已按照前面“启用 API”部分中的说明启用了 reCAPTCHA Enterprise API。
评估完成后,reCAPTCHA JavaScript 会在最终用户的浏览器中将 reCAPTCHA 会话令牌设置为 Cookie。只要 reCAPTCHA JavaScript 保持运行,最终用户的浏览器就会携带并刷新该 Cookie。
- 创建 reCAPTCHA 会话令牌网站密钥,并为该密钥启用 WAF 功能:
gcloud recaptcha keys create --display-name=test-key-name \
--web --allow-all-domains --integration-type=score --testing-score=0.5 \
--waf-feature=session-token --waf-service=ca
上述命令的输出会显示您创建的会话令牌网站密钥。请记录此密钥,以便在本任务稍后使用。
您还需要将 WAF 服务设置为 Cloud Armor,以启用 Cloud Armor 集成。
注意:您当前使用的是 Cloud Armor 政策中调用的 score 集成类型。您也可以使用 checkbox 和 invisible。
您在创建密钥时还可以设置测试分数,以验证使用 Cloud Armor 创建的漫游器管理政策是否按预期运行。模拟漫游器流量并非易事,因此这不失为测试该功能的一种好方法。
- 创建 reCAPTCHA WAF 验证任务页面网站密钥,并为该密钥启用 WAF 功能。您可以使用 reCAPTCHA 验证任务页面功能,将传入的请求重定向到 reCAPTCHA Enterprise,从而确定每项请求是潜在的欺诈行为还是合法请求。稍后,您需要将此密钥与 Cloud Armor 安全政策关联,从而启用手动验证。在本实验的后续步骤中,我们将此密钥称为
CHALLENGE-PAGE-KEY。
gcloud recaptcha keys create --display-name=challenge-page-key \
--web --allow-all-domains --integration-type=INVISIBLE \
--waf-feature=challenge-page --waf-service=ca
- 依次前往导航菜单 (
) > 安全 > reCAPTCHA。您应该会在 reCAPTCHA 密钥列表中看到您创建的密钥:
实现 reCAPTCHA 会话令牌网站密钥
- 在 Google Cloud 控制台的主菜单中,点击 Compute Engine,然后选择虚拟机实例。在实例组中找到相应虚拟机,然后点击连接列下的 SSH。在重定向到的页面上,点击授权。

- 前往 Web 服务器根目录,并在浏览器内嵌 SSH shell 中输入以下代码,将用户切换为 root:
cd /var/www/html/
sudo su
- 更新
index.html 着陆页并嵌入 reCAPTCHA 会话令牌网站密钥。会话令牌网站密钥(即您之前记录的密钥)需按如下方式在着陆页的 head 部分中设置:
src="https://www.google.com/recaptcha/enterprise.js?render=<SESSION_TOKEN_SITE_KEY>&waf=session" async defer>
在运行以下命令之前,请记得将 <SESSION_TOKEN_SITE_KEY> 替换为网站令牌:
echo '<!doctype html><html><head><title>ReCAPTCHA Session Token</title><script src="https://www.google.com/recaptcha/enterprise.js?render=<SESSION_TOKEN_SITE_KEY>&waf=session" async defer></script></head><body><h1>Main Page</h1><p><a href="/good-score.html">Visit allowed link</a></p><p><a href="/bad-score.html">Visit blocked link</a></p><p><a href="/median-score.html">Visit redirect link</a></p></body></html>' > index.html
- 再创建三个示例页面,用于测试漫游器管理政策:
echo '<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"></head><body><h1>Congrats! You have a good score!!</h1></body></html>' > good-score.html
echo '<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"></head><body><h1>Sorry, You have a bad score!</h1></body></html>' > bad-score.html
echo '<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"></head><body><h1>You have a median score that we need a second verification.</h1></body></html>' > median-score.html
在浏览器中打开所有网页,确认您可以正常访问。请务必将 [LB_IP_v4] 替换为负载均衡器的 IPv4 地址:
- 打开
http://[LB_IP_v4]/index.html。当页面右下角显示“受 reCAPTCHA 保护”时,即表示 reCAPTCHA 已成功部署并正常运行:

- 依次点击每个链接。

- 验证您是否可以访问所有页面。

点击检查我的进度,验证是否完成了以下目标:
部署 reCAPTCHA 会话令牌和验证任务页面网站密钥
任务 5. 为漫游器管理创建 Cloud Armor 安全政策规则
在本部分中,您将使用 Cloud Armor 漫游器管理规则,根据 reCAPTCHA 得分来允许、拒绝或重定向请求。
- 在 Cloud Shell 中,通过 gcloud 创建安全政策:
gcloud compute security-policies create recaptcha-policy \
--description "policy for bot management"
- 若要使用 reCAPTCHA Enterprise 手动验证来区分真人和自动化客户端,请将您之前为手动验证创建的 reCAPTCHA WAF 验证任务页面网站密钥 (CHALLENGE-PAGE-KEY) 与安全政策关联。在以下脚本中,请记得将“CHALLENGE-PAGE-KEY”替换为您之前创建的密钥:
gcloud compute security-policies update recaptcha-policy \
--recaptcha-redirect-site-key "CHALLENGE-PAGE-KEY"
- 添加一条漫游器管理规则:如果网址路径与 good-score.html 匹配且得分大于 0.4,则允许流量通过:
gcloud compute security-policies rules create 2000 \
--security-policy recaptcha-policy\
--expression "request.path.matches('good-score.html') && token.recaptcha_session.score > 0.4"\
--action allow
- 添加一条漫游器管理规则:如果网址路径与 bad-score.html 匹配且得分低于 0.6,则拒绝流量通过:
gcloud compute security-policies rules create 3000 \
--security-policy recaptcha-policy\
--expression "request.path.matches('bad-score.html') && token.recaptcha_session.score < 0.6"\
--action "deny-403"
- 添加一条漫游器管理规则:如果网址路径与 median-score.html 匹配且得分为 0.5,则将流量重定向到 Google reCAPTCHA:
gcloud compute security-policies rules create 1000 \
--security-policy recaptcha-policy\
--expression "request.path.matches('median-score.html') && token.recaptcha_session.score == 0.5"\
--action redirect \
--redirect-type google-recaptcha
- 将安全政策附加到后端服务
http-backend:
gcloud compute backend-services update http-backend \
--security-policy recaptcha-policy --global
-
在控制台中,前往导航菜单 (
),点击查看所有产品,然后在网络部分,依次点击网络安全 > Cloud Armor 政策。
-
点击 recaptcha-policy。
您的政策应如下所示:

点击检查我的进度,验证是否完成了以下目标:
为漫游器管理创建 Cloud Armor 安全政策规则
任务 6. 使用 Cloud Armor 验证漫游器管理效果
- 打开浏览器,输入网址
http://[LB_IP_v4]/index.html。点击“Visit allowed link”(访问允许的链接)。

-
在无痕模式下打开新窗口,以确保开启新会话。
-
输入网址 http://[LB_IP_v4]/index.html,然后点击“Visit blocked link”(访问被阻止的链接)。您应该会收到 HTTP 403 错误:

注意:如果您没有看到 403 Forbidden 错误,则可能需要等待较长时间,reCAPTCHA 规则才会生效。请等待 5 分钟,然后重试此步骤。请确保使用新的无痕式窗口来测试每一个链接。
-
在无痕模式下打开新窗口,以确保开启新会话。
-
输入网址 http://[LB_IP_v4]/index.html,然后点击“Visit redirect link”(访问重定向链接)。您应该会看到系统已重定向至 Google reCAPTCHA,并显示如下所示的手动验证任务页面:

注意:如果用户互动通过了评估,reCAPTCHA Enterprise 就会发放一个豁免 Cookie。浏览器会将此豁免 Cookie 附加到用户对该网站的后续请求中,直到该 Cookie 过期为止。默认情况下,豁免 Cookie 的有效期为三小时。
注意:为了防止自动化软件在您的网站上实施滥用行为,reCAPTCHA 采用了先进的风险分析引擎和自适应人机识别系统。在实现这一目标的同时,它还能让合法用户轻松通过验证。如果算法认为您是真人,它会自动通过 reCAPTCHA 验证,无需您进行额外操作。如果算法认为您不是真人,则系统会显示一系列图片,您必须先对这些图片进行分类才能继续操作。默认情况下,只有最可疑的流量才会被要求进行人机识别验证。
如果您未被要求进行人机识别验证,仍然可以查看政策日志,确认自己是否已被豁免。
查看 Cloud Armor 日志
查看安全政策日志,验证漫游器管理是否按预期运行。
- 在控制台中,前往导航菜单 (
),点击查看所有产品,然后在网络部分,依次点击网络安全 > Cloud Armor 政策。
- 点击 recaptcha-policy。
- 点击日志标签页。
- 点击查看政策日志。
- 以下是 MQL(Monitoring Query Language)查询,请将其复制并粘贴到查询编辑器中:
resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(recaptcha-policy)
- 现在,点击运行查询。
- 在查询结果中,查找请求为
http://[LB_IP_v4]/good-score.html 的日志条目。依次展开 jsonPayload 和 enforcedSecurityPolicy。

注意:如果您没有看到日志条目,请耐心等待几分钟让政策生效,刷新您之前访问过的网址,然后再次检查日志。
- 对
http://[LB_IP_v4]/bad-score.html 和 http://[LB_IP_v4]/median-score.html 执行同样的操作。


请注意,configuredAction 设置为 ALLOW、DENY 或 GOOGLE_RECAPTCHA,名称为 recaptcha-policy。
注意:Cloud Armor 安全策略会生成日志,通过查看这些日志,您可以确定流量在何时被拒绝或允许,并了解流量的来源。
点击检查我的进度,验证是否完成了以下目标:
使用 Cloud Armor 验证漫游器管理效果
恭喜!
您使用 Cloud Armor 成功实现了漫游器管理,并配置了一个 HTTP 负载均衡器,然后在网页上创建并实现了 reCAPTCHA 会话令牌网站密钥。您还创建了一个验证任务页面网站密钥;配置了 Cloud Armor 漫游器管理政策,并验证了这些政策如何根据规则处理请求;查看了安全政策日志,以了解流量被允许、阻止或重定向的原因。
本手册的最后更新时间:2026 年 4 月 2 日
本实验的最后测试时间:2026 年 4 月 2 日
版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。