本页介绍了如何配置 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/json
、application/vnd.api+json
、application/vnd.collection+json
和 application/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 解析器未返回名称值参数或仅返回部分名称参数,则整个或部分字符串可能会被视为检查的参数名称。