POST 正文内容解析

本页面包含有关如何配置 POST 正文内容解析的信息,POST 正文内容解析是一项可选功能,可与 Google Cloud Armor 安全政策搭配使用。

默认情况下,Google Cloud Armor 会根据预配置的 WAF 规则中的签名,将 POST 正文的完整内容评估为一个统一的字符串(受正文大小限制的约束)。对于包含 JSON 等替代编码的请求,消息的结构组件(非用户指定)可能会触发与预配置的 WAF 签名的匹配。为避免噪声并降低假正例的风险,如果您的受保护工作负载满足以下条件,我们建议您配置 Google Cloud Armor 以为所有受支持的 Content-Type 启用备选解析:

  • 提供 REST API
  • 使用 GraphQL
  • 接收任何包含 JSON 编码内容的请求。

您可以为每个安全政策启用或停用 POST 请求的 JSON 正文内容解析。当 Content-Type 标头设置为 application/json 时,请使用 Google Cloud CLI 中的 --json-parsing 标志。

默认情况下,此选项处于停用状态。该标志的语法如下:

--json-parsing=[STANDARD | STANDARD_WITH_GRAPHQL | DISABLED]

此标志仅适用于 gcloud compute security-policies update。除非在文件中创建安全政策,然后导入该文件,否则您无法使用此选项创建新的安全政策。如需了解详情,请参阅导入安全政策

使用 JSON 解析

在以下示例中,您将配置一个列表,其中包含将应用备用解析的自定义 Content-Type 标头值。该示例更新了安全政策 POLICY_NAME 以启用 JSON 解析,并指定内容类型 application/jsonapplication/vnd.api+jsonapplication/vnd.collection+jsonapplication/vnd.hyper+json

gcloud compute security-policies update POLICY_NAME \
    --json-parsing STANDARD \
    --json-custom-content-types "application/json,application/vnd.api+json,application/vnd.collection+json,application/vnd.hyper+json"

使用 GraphQL 解析

如需配置 GraphQL 解析,请更新您的安全政策,将 --json-parsing 标志设置为 STANDARD_WITH_GRAPHQL,如以下示例所示:

gcloud compute security-policies update POLICY_NAME \
    --json-parsing STANDARD_WITH_GRAPHQL

日志记录

根据 Google Cloud Armor 安全政策评估的每个 HTTP(S) 请求都会通过 Cloud Logging 记录。日志提供详细信息,例如所应用安全政策的名称、匹配的规则以及是否执行了规则。新的后端服务资源的请求日志记录默认处于停用状态。为了确保记录 Google Cloud Armor 请求,您必须为受安全政策保护的每个后端服务启用 HTTP(S) 日志记录。如需了解详情,请参阅全球外部应用负载均衡器日志记录和监控

限制

配置 JSON 解析时,请考虑以下限制:

  • POST 正文的检查仅限于前 8 KB。如果 JSON 内容超过 8 KB,则 Google Cloud Armor 会对所用内容(由任何预配置的 WAF 规则检查的前 8 KB 的内容)进行 JSON 解析。
  • 如果 JSON 解析器未返回任何结果,您可以尝试 URI 解析。如果 URI 解析器未返回名称值参数或仅返回部分名称参数,则整个或部分字符串可能会被视为检查的参数名称。

后续步骤