使用 Web Security Scanner 设置自定义扫描

>

使用 Google Cloud Console 中的 Web Security Scanner 对已部署的应用安排和运行自定义扫描。Web Security Scanner 支持扫描不受防火墙保护的公共网址和 IP。

以下视频介绍了设置 Web Security Scanner 的步骤,并提供了有关如何使用信息中心的信息。本页面稍后部分将以文字介绍设置步骤。

准备工作

要使用 Web Security Scanner 设置自定义扫描,请执行以下操作:

  • 您必须在公共网址和 IP 上具有已部署的应用。
  • 您的组织必须启用 Security Command Center。

在扫描之前,请仔细审核您的应用,查看是否有功能影响数据、用户或系统,超出扫描的预期范围。

由于 Web Security Scanner 会执行填充字段、按下按钮、点击链接和其他互动,因此您应谨慎使用。Web Security Scanner 可能会激活更改数据或系统状态的功能,造成不良后果。例如:

  • 在允许公开评论的博客应用中,Web Security Scanner 可能会将测试字符串作为评论发布到您的所有博文。
  • 在电子邮件注册页面中,Web Security Scanner 可能会生成大量的测试电子邮件。

如需了解关于如何将风险降至最低的提示,请参阅最佳做法以防止出现意外后果。

启用 Web Security Scanner

启用 Web Security Scanner 以创建并运行自定义扫描。必须为您的组织启用 Security Command Center。

第 1 步:部署测试项目

如需完成自定义扫描的 Web Security Scanner 设置,您需要已部署的 Compute Engine、Google Kubernetes Engine 或 App Engine 应用的网址。如果您没有已部署的应用,或者想要通过测试应用试用 Web Security Scanner,请以您选择的语言部署测试 App Engine 应用:

第 2 步:分配 IAM 角色

要运行 Web Security Scanner 扫描,您必须对要扫描的项目拥有以下身份和访问权限管理 (IAM) 角色之一:

  • 编辑器
  • 所有者

要添加其中一个角色,请执行以下操作:

  1. 转到 Cloud Console 中的 IAM 和管理页面。
    转到“IAM 和管理”页面
  2. 点击项目选择器下拉列表。
  3. 在显示的请选择对话框中,选择要使用 Web Security Scanner 扫描的项目。
  4. IAM 页面,点击用户名旁边的修改
  5. 在显示的修改权限面板上,点击添加其他角色,然后选择以下角色之一:
    • 项目 > 所有者
    • 项目 > 编辑者
  6. 添加完角色后,点击保存

详细了解 Web Security Scanner 角色

第 3 步:运行扫描

设置扫描时,它将加入队列稍后运行。根据当前负载,可能需要几个小时才能执行扫描。如需创建、保存和运行扫描,请执行以下操作:

  1. 转到 Cloud Console 中的 Web Security Scanner 页面。
    转到 Web Security Scanner 页面
  2. 选择包含您要扫描的已部署应用的项目。
  3. 要设置新的扫描,请点击新建扫描
  4. 在加载的创建新扫描页面上,设置以下值:

    1. 起始网址下,输入您要扫描的应用的网址。
    2. 时间表下,选择每周
    3. 下次运行时间下,选择一个日期。

    系统会自动选中导出到 Security Command Center 复选框。如果您已启用 Web Security Scanner 作为 Web Security Scanner 安全来源,则允许扫描结果显示在 Web Security Scanner 信息中心。

    对于第一次扫描,请使用默认扫描,而不更改创建新扫描页面上的任何其他值。如需详细了解扫描设置,请参阅扫描应用

  5. 要创建扫描,请点击保存

  6. 在 Web Security Scanner 页面上,点击扫描名称以加载其概览页面,然后点击运行扫描

    扫描将加入队列,然后在将来的某个时间运行。扫描可能需要几个小时才能完成。

  7. 扫描概览页面会在扫描完成后显示结果部分。下图展示了未检测到漏洞时的示例扫描结果:

    如果您启用了 Web Security Scanner 作为 Web Security Scanner 安全来源,则 Web Security Scanner 信息中心上也会显示扫描结果。

    要显示特定发现的详细信息,请点击扫描结果中的发现名称。

您现已完成基本的 Web Security Scanner 扫描。如果您扫描了自己的应用,请在本页的扫描应用部分了解如何自定义扫描。

如果您部署了测试应用来运行扫描,请完成此页面上的清理步骤,以避免因该应用而产生 App Engine 费用。

第 4 步:清理

  1. 在 Cloud Console 中,转到管理资源页面。

    转到“管理资源”页面

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

扫描应用

使用测试帐号为您的应用设置自定义扫描。

第 1 步:创建测试帐号

扫描您的应用时,最好使用无权访问敏感数据或有害操作的测试帐号。创建可以登录您的应用的测试帐号,并在创建扫描时记下登录凭据以提供身份验证。这样,您就可以使用测试帐号扫描数据。

第 2 步:创建扫描

  1. 转到 Cloud Console 中的 Web Security Scanner 页面。
    转到 Web Security Scanner 页面
  2. 点击选择,然后选择已部署 App Engine、Compute Engine 或 GKE 应用的项目。
  3. 要显示新建扫描表单,请点击创建扫描新建扫描
  4. 要向新建扫描表单添加值,请使用下表作为指南:
    字段 说明
    起始网址

    简单的网站通常只需要一个起始网址(例如该网站的首页、主页面或着陆页),Web Security Scanner 可以从中找到所有其他网站网页。但是,如果网站包含以下内容,Web Security Scanner 可能无法找到所有网页:

    • 大量网页
    • 由未连接页面构成的“孤岛”
    • 导航需要复杂的 JavaScript(如鼠标悬停驱动的多级菜单)

    在这种情况下,请指定更多起始网址以扩大扫描范围。

    排除的网址 为降低复杂性,可使用带有一个或多个 * 通配符的简化原型语言(而不是要求使用有效的正则表达式)来定义排除项。如需了解详情和示例有效模式,请参阅本页面后面的排除网址
    身份验证 > Google 帐号

    您可以在 Gmail 中创建一个测试帐号,然后使用该帐号来扫描您的产品。如果您是 G Suite 客户,则可以在您的网域中创建测试帐号,例如 test-account@yourdomain.com。在 Web Security Scanner 中,这些帐号的操作方式与 Gmail 帐号类似。不支持双重身份验证。

    Google 对 Google 帐号实行实名制。如果您的测试帐号中的姓名看起来不真实,则该帐号可能被屏蔽了。

    身份验证 > Identity-Aware Proxy Alpha 版

    如需使用 Identity-Aware Proxy 保护资源,请参阅 IAP 指南

    要将 Web Security Scanner 与受 IAP 保护的资源一起使用,请先将 Web Security Scanner 服务帐号添加为 IAP 成员:

    1. 转到 Cloud Console 中的 IAP 页面
    2. 选择要与 Web Security Scanner 一起使用的项目。
    3. 选择要扫描的应用资源,然后点击信息面板上的添加成员
    4. 添加成员面板的新成员框中,输入表中的 Web Security Scanner 服务账号

      service-project-number@gcp-sa-websecurityscanner.iam.gserviceaccount.com

    5. 选择角色下拉列表中,选择 Cloud IAP > 受 IAP 保护的 Web 应用用户
    6. 添加完角色后,点击保存

    接下来,将 OAuth 客户端 ID 添加到扫描中。Web Security Scanner 只能扫描受单个 OAuth 客户端 ID 保护的应用。要添加 OAuth 客户端 ID,请执行以下操作:

    1. 转到 Cloud Console 中的 IAP 页面
    2. 选择要与 Web Security Scanner 一起使用的项目。
    3. 溢出菜单上,选择修改 OAuth 客户端
    4. 在出现的 Web 应用客户端 ID 窗口中,复制客户端 ID
    5. 转到 Cloud Console 中的 Web Security Scanner 页面
    6. 身份验证下,选择 Identity-Aware Proxy Alpha 版
    7. OAuth2 客户端 ID 框中,粘贴您复制的 OAuth 客户端 ID,然后点击保存
    身份验证 > 非 Google 帐号

    如果您已创建自己的身份验证系统,但未使用 Google 帐号服务,请选择此选项。指定登录表单的网址、用户名和密码。这些凭据用于登录和扫描您的应用。

    Web Security Scanner 将尝试启发法登录您的应用,然后对其进行扫描。具体来说,此方法会查找包含 username 字段和 password 字段的两个字段登录表单。登录操作必须生成身份验证 Cookie,扫描程序才能继续扫描。

    常见问题会导致自定义登录失败,包括:

    • 使用非标准 HTML 表单字段,例如,不使用 password 类型。
    • 使用复杂的登录表单,例如包含多个 usernamepassword 字段的表单。
    • 成功登录后不保存身份验证 Cookie。
    • 在某些情况下,扫描程序可能会被旨在防范漫游器、DDoS 攻击和其他攻击的对抗措施拒绝。

    我们建议使用 Identity-Aware Proxy 集成,以获得经过身份验证的应用扫描的最一致体验。

    计划 您可以将扫描设置为每天、每周、每两周或每四周运行一次。最好创建定期扫描,以确保未来版本的应用得到测试。此外,由于我们偶尔会发布可以找到新错误类型的新扫描程序,因此定期运行扫描可以扫描更多覆盖范围,而无需手动操作。
  5. 添加值后,点击创建。您现在可以运行新的扫描。

Web Security Scanner 会在每次运行时使用随机分配的 IP 地址。没有可预测的 IP 地址添加到防火墙,以便扫描程序通过。

默认情况下,Web Security Scanner 在每次运行期间使用随机分配的 IP 地址,因此不存在可在防火墙配置中使用的可预测的 IP 地址。如需使 Web Security Scanner IP 地址可预测,请完成本页面后面的启用静态 IP 扫描部分的操作。

第 3 步:运行扫描

要运行扫描,请执行以下操作:

  1. 登录您用于创建扫描的测试帐号。
  2. 转到 Cloud Console 中的 Web Security Scanner 页面。
    转到 Web Security Scanner 页面
  3. 点击选择,然后选择要在其中创建扫描的项目。
  4. 扫描配置下,点击要运行的扫描的名称。
  5. 在扫描详情页面上,点击运行

此扫描会放入队列中,并且在运行之前可能会有延迟。运行可能需要几分钟或几个小时,具体取决于系统负载和功能,如:

  • 网站复杂性
  • 每页可操作元素的数量
  • 链接数量
  • 网站上的 JavaScript 数量,包括导航

您设置并运行的不同扫描数量达到 10 个,则需要删除或清理以前保存的结果。

查看自定义扫描结果

自定义扫描的状态和结果显示在 Cloud Console 中的扫描详情页面上。如需查看扫描结果,请执行以下操作:

  1. 登录您用于创建扫描的测试帐号。
  2. 转到 Cloud Console 中的 Web Security Scanner 页面。
    转到 Web Security Scanner 页面
  3. 点击选择,然后选择包含您要查看的扫描的项目。
  4. 扫描配置下,点击要查看的扫描的名称。

扫描详情页面会加载并显示最近扫描的结果。如果扫描正在进行中,结果标签页将显示当前完成百分比。要显示先前扫描的结果,请从下拉列表中选择扫描日期和时间。

已完成的自定义扫描的详细信息:

  • 结果标签页会显示扫描结果的漏洞列表(如果有)。
  • 已抓取的网址标签会显示扫描检查的网址列表。
  • 详细信息标签页包括:
    • 起始网址
    • 身份验证
    • 用户代理
    • 最大扫描速度即每秒查询次数 (QPS)

您可以在日志页面中找到关于扫描的更多信息。

修改自定义扫描

要修改自定义扫描,请执行以下操作:

  1. 登录您用于创建扫描的测试帐号。
  2. 转到 Cloud Console 中的 Web Security Scanner 页面。
    转到 Web Security Scanner 页面
  3. 点击选择,然后选择包含您要修改的扫描的项目。
  4. 扫描配置下,点击要修改的扫描的名称。
  5. 在显示的扫描详情页面上,点击修改
  6. 在显示的修改 [扫描名称] 页面上,进行所需的更改,然后点击保存

修改后的自定义扫描会在下一次安排运行时运行,您也可以手动运行以获取更新结果。

删除自定义扫描

要删除一个或多个自定义扫描,请执行以下操作:

  1. 登录您用于创建扫描的测试帐号。
  2. 转到 Cloud Console 中的 Web Security Scanner 页面。
    转到 Web Security Scanner 页面
  3. 点击选择,然后选择包含您要修改的扫描的项目。
  4. 扫描配置下,选中要删除的一个或多个扫描旁边的复选框。
  5. 点击删除,然后点击确定

您选择的所有扫描都会被删除。

从静态 IP 设置扫描

本部分介绍如何从静态 IP 启用 Web Security Scanner 自定义扫描。启用此功能后,Web Security Scanner 会使用可预测的 IP 地址来扫描您的公共 Compute Engine 和 Google Kubernetes Engine(GKE)应用。此功能目前为 Alpha 版,Web Security Scanner IP 地址在未来版本中可能会发生变化。

准备工作

要使用静态 IP 功能的 Web Security Scanner 自定义扫描,您需要:

  • 公共 Compute Engine 或 GKE 应用。此功能目前不支持 App Engine 应用。
  • 在没有身份验证或 Google 帐号身份验证的情况下创建的扫描。此功能目前不支持使用非 Google 帐号身份验证的扫描。

第 1 步:配置防火墙

在通过静态 IP Alpha 版注册扫描后,请配置防火墙以允许 Web Security Scanner IP 地址:

  1. 转到 Cloud Console 中的防火墙规则页面。
    转到“防火墙规则”页面
  2. 点击选择,然后选择您的项目。
  3. 在显示的防火墙规则页面上,点击创建防火墙规则
  4. 创建防火墙规则页面上,设置以下值:
    1. 名称:输入 web-security-scanner 或类似名称。
    2. 优先级:选择比拒绝应用出站流量的所有规则更高的优先级(较低的数值)。
    3. 来源 IP 地址范围:输入 34.66.18.0/2634.66.114.64/26
    4. 协议和端口:选择全部允许或指定应用的协议和端口。大多数情况下,您可以选中 tcp 复选框,然后输入端口 80443
  5. 设置完值后,点击创建

第 2 步:配置扫描

在配置防火墙以允许 Web Security Scanner 可预测的 IP 地址后,请配置扫描以使用预定义的 IP:

  1. 转到 Cloud Console 中的 Web Security Scanner 页面。
    转到 Web Security Scanner 页面
  2. 点击选择,然后选择您的项目。
  3. 创建新扫描或修改现有扫描。
  4. 选中从一组预定义的来源 IP 运行扫描复选框。
  5. 保存扫描。

下次扫描运行时,它会扫描受防火墙保护的公共 Compute Engine 和 GKE 应用。

排除网址

您可以指定一个或多个排除网址格式,以避免在扫描期间测试网站的某些部分。Web Security Scanner 不会请求与任何排除项匹配的资源。以下部分介绍了 Web Security Scanner 使用的格式匹配。

网址格式匹配

排除的网址匹配基于由匹配格式定义的一组网址。匹配格式是包含 3 个部分的网址:

  • scheme:例如 http*
  • host:例如 www.google.com*.google.com*
  • path:例如 /*/foo*/foo/bar. *

以下是基本语法:

<exclude-pattern> := <scheme>://<host><path>
<scheme> := '*' | 'http' | 'https'
<host> := '*' | '*.' <any char except '/' and '*'>+
<path> := '/' <any chars>

每个部分中的 * 具有以下函数:

  • scheme* 与 HTTP 或 HTTPS 匹配。
  • host
    • * 与任何主机都匹配
    • *.hostname 与指定的主机及其所有子网域匹配。
  • path* 与 0 个或多个字符匹配。

有效的格式匹配

下表提供了有效格式的示例:

格式 行为 示例匹配网址
http://*/* 匹配使用 HTTP 架构的所有网址。

http://www.google.com/

http://example.org/foo/bar.html

http://*/foo* 匹配任何主机上使用 HTTP 架构的网址(如果路径以 /foo 开头)。

http://example.com/foo/bar.html

http://www.google.com/foo

https://*.google.com/foo*bar 匹配使用 HTTPS 架构且位于 google.com 主机上(例如 www.google.comdocs.google.comgoogle.com)的所有网址(如果路径以 /foo 开头并以 bar 结尾)。

http://www.google.com/foo/baz/bar

http://docs.google.com/foobar

http://example.org/foo/bar.html 匹配指定的网址。 http://example.org/foo/bar.html
http://127.0.0.1/* 匹配主机 127.0.0.1 上使用 HTTP 架构的所有网址。

http://127.0.0.1/

http://127.0.0.1/foo/bar.html

*://mail.google.com/* 匹配以 http://mail.google.comhttps://mail.google.com 开头的所有网址。

http://mail.google.com/foo/baz/bar

https://mail.google.com/foobar

无效的格式匹配

下表提供了无效格式的示例:

格式 原因
http://www.google.com 网址不包含路径。
http://*foo/bar 主机中的 * 后面只能跟一个 ./
http://foo.*.bar/baz 如果主机中有 *,则它必须是第一个字符。
http:/bar 网址为架构分隔符,格式不正确。"/" 应为 "//"
foo://* 网址架构无效。

后续步骤