在控制台中查询发现结果

本页介绍了如何使用 Google Cloud 控制台和安全运营控制台的发现结果页面上的查询编辑器面板创建和修改 Security Command Center 发现结果查询。

使用查询来检索特定发现结果并过滤在发现结果的查询结果中显示的发现结果。

在 Security Command Center Enterprise 控制台中处理发现结果

如果您是 Security Command Center Enterprise 客户,则可以在两个控制台中处理发现结果:

  • Google Cloud 控制台:适用于所有服务层级
  • Security Operations 控制台:仅在企业版中提供

如需了解详情,请参阅 Security Command Center Enterprise 控制台

修改发现结果查询

查询编辑器面板中,您可以为查询添加过滤条件,以根据发现结果的属性或属性值来选择发现结果。您可以针对存在值、缺少值或部分字符串匹配等情况进行过滤。

如需了解如何修改发现结果查询,请点击您所用控制台对应的标签页。

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往 Security Command Center 的发现结果页面。

    前往“发现结果”页面

  2. 选择您的 Google Cloud 项目或组织。系统随即会加载发现结果页面,并在查询预览字段中显示默认查询。
  3. 查询预览部分右侧,点击 修改查询以打开查询编辑器面板。
  4. 选择添加过滤条件,以导航、搜索及向查询添加预定义的属性过滤条件。
  5. 选择过滤条件对话框允许您选择支持的发现结果属性和值。

    1. 选择发现结果特性或在搜索发现结果特性框中输入其名称。 系统会显示可用子特性的列表。
    2. 选择子特性。系统会显示一个选择字段,您可以在其中使用所选的子属性、查询运算符以及一个或多个子属性值构建查询语句。
    3. 从面板中选择运算符以及子属性的一个或多个值。 如需详细了解查询运算符及其使用的函数,请参阅“添加过滤条件”菜单中的查询运算符
    4. 点击应用

      对话框将会关闭,并且您的查询即会更新。

    5. 重复这些步骤,直到发现结果查询包含所需的所有特性。

当您在发现结果页面上使用查询编辑器时,快速过滤条件部分会被停用,以避免两者之间发生冲突。

安全运维控制台

  1. 在 Security Operations 控制台中,前往发现结果页面。
    https://CUSTOMER_SUBDOMAIN.backstory.chronicle.security/posture/findings
    

    CUSTOMER_SUBDOMAIN 替换为您的客户专用标识符。

  2. 查询编辑器面板中,点击 添加过滤条件。系统随即会显示添加过滤条件对话框。您可以通过此对话框选择支持的发现结果属性和值。
  3. 类别框中,选择或输入发现结果属性。
  4. 属性名称框中,选择或输入子属性。
  5. 运算符框中,为所选子属性的值选择评估选项。如需详细了解评估选项和可用的运算符,请参阅“添加过滤条件”菜单中的查询运算符
  6. 选择应用

    对话框将会关闭,并且您的查询即会更新。

  7. 重复此过程,直到发现结果查询包含您要按其过滤的所有属性。

    如需清除过滤条件,请点击重置

或者,您也可以手动构建发现结果查询,方法与使用 Security Command Center API 构建发现结果过滤条件相同。当您在查询中输入内容时,系统会显示自动补全菜单,您可以在其中选择过滤条件名称、函数和值。如需手动打开自动补全菜单,请按 Control+Space

修改查询时,编辑器会突出显示查询中的所有错误,以便在提交查询之前更正这些错误。

查询运算符

Security Command Center 发现结果的查询语句支持大多数 Google Cloud API 支持的运算符。

以下列表展示了各种运算符的用法:

  • state="ACTIVE" AND NOT mute="MUTED"
  • create_time>"2023-08-15T19:05:32.428Z"
  • resource.parent_name:"prod"
  • severity="CRITICAL" OR severity="HIGH"

以下列表显示了发现结果的查询语句支持的所有运算符和函数:

  • 对于字符串:
    • =,表示完全相等
    • : 表示部分字符串匹配
  • 对于数字:
    • <><=>=,表示不相等
    • =!= 表示相等
  • 对于布尔值:
    • = 表示等式
  • 对于逻辑关系:
    • AND
    • OR
    • NOT-
  • 对于分组表达式:
    • ()(英文括号)
  • 对于数组:
    • contains():一个函数,用于查询包含至少一个与指定过滤条件匹配的元素的数组字段中的发现结果
    • containsOnly():一个函数,用于使用仅包含与指定过滤条件匹配的元素的数组字段查询发现结果
  • 对于 IP 地址:
    • inIpRange(),用于查询指定 CIDR 范围内的 IP 地址的函数

“添加过滤条件”菜单中的查询运算符

如需了解添加过滤条件菜单中使用的查询运算符,请点击您所用控制台对应的标签页。

Google Cloud 控制台

在 Google Cloud 控制台的查询编辑器添加过滤条件菜单中,查询运算符和函数由字词或短语表示,例如:

  • 等于:匹配具有确切属性值的发现结果。
  • 不等于:匹配不具有确切属性值的发现结果。
  • 晚于:匹配其创建或更新时间晚于指定时间的发现结果。
  • 早于:匹配其创建或更新时间早于指定时间的发现结果。
  • 包含:匹配其属性值包含您在关键字字段中输入的文本的发现结果。
  • 不包含:匹配其属性值不包含您在关键字字段中输入的文本的发现结果。
  • 对于包含数组的发现结果特性:
    • 包含全部:匹配其数组值包含在关键字字段中输入的所有文本的发现结果。
    • 包含全部:匹配其数组值包含在关键字字段中输入的所有文本的发现结果。
    • 不包含任何:匹配不具有包含在关键字字段中输入的文本的数组值的发现结果。
    • 仅包含:匹配具有数组属性的发现结果,该数组结果仅包含您在关键字字段中输入的值,不包含其他值。
  • 对于 IP 地址:
    • Any within IP range:匹配包含指定 CIDR 范围内的 IP 地址的发现结果。
    • Does not have any within IP range:匹配包含不在指定 CIDR 范围内的 IP 地址的发现结果。

安全运维控制台

在安全运营控制台的查询编辑器 添加过滤条件菜单中,查询运算符和函数由以下内容表示:

  • 等于:匹配具有确切属性值的发现结果。
  • 不等于:匹配不具有确切属性值的发现结果。
  • 晚于:匹配其创建或更新时间晚于指定时间的发现结果。
  • 早于:匹配其创建或更新时间早于您指定时间的发现结果。
  • 包含:匹配其属性值包含您在关键字字段中输入的文本的发现结果。
  • 不包含:匹配其属性值不包含您在关键字字段中输入的文本的发现结果。
  • 大于:匹配属性值高于您指定值的发现结果。
  • 小于:匹配属性值低于您指定值的发现结果。
  • Any within IP range:匹配包含指定 CIDR 范围内的 IP 地址的发现结果。
  • Does not have any within IP range:匹配包含不在指定 CIDR 范围内的 IP 地址的发现结果。

查询函数

与常见的查询运算符相比,查询函数会对特性值进行更复杂的评估。

contains 函数

使用 contains 函数评估可能在同一发现结果中出现多次的特性或特性子字段。

在内部,这些属性或属性子字段存储在数组数据结构的元素中,因此被称为数组类型属性

例如,某些发现结果可以引用多个网络连接,因此 connections 特性是数组类型特性。同样,某些威胁发现结果可以引用多个 IP 地址作为失陷指标,因此 indicator 特性的 ip_addresses 子字段是数组类型特性。

contains 函数使用以下语法:

contains(ARRAY_ATTRIBUTE_NAME, SUBFILTER)

请替换以下内容:

  • ARRAY_ATTRIBUTE_NAME:存储在数组中的数组类型属性的名称。如果数组类型特性是其他特性的子字段,请指定特性名称和子字段名称(用英文句点分隔)。

    在以下示例中,数组类型特性 ip_addressesindicator 的子字段,因此两者都在 ARRAY_ATTRIBUTE_NAME 位置指定:

    contains(indicator.ip_addresses, elem="192.0.2.80")
  • SUBFILTER:用于定义如何评估数组类型特性的每个实例的表达式。支持标准 Security Command Center 查询运算符和评估语句

    如果要检查的值位于数组类型属性的子字段中,请在该表达式左侧指定子字段名称。以下 contains 函数会评估 connections 数组的每个元素,该元素是包含子字段的数组类型特性。要查询的值位于 destination_ip 子字段中,该子字段不是数组类型字段。要查询的值使用子字段名称 destination_ip 指定,而不是使用 elem 参数。

    contains(connections, destination_ip="192.0.2.80")

    如果子字段是数组类型属性,请在表达式左侧的父数组中指定数组类型属性,并使用表达式右侧的 elem 参数指定要搜索的值。例如,以下 contains 函数会评估 ip_addresses 数组的每个元素,该元素是 indicator 属性的子字段。indicator 属性不是数组类型字段。

    contains(indicator.ip_addresses, elem="192.0.2.80")

“添加过滤条件”菜单中的 contains 函数

添加过滤条件菜单中,根据您要评估的发现结果特性,当您选择其他需要 contains 函数的过滤条件选项时,该函数会明确列出或自动包含在内。

例如,对于 Indicator 特性的 IP 地址子字段,您可以选择以下过滤条件选项:

  • 包含以下任意一项:
  • 包含全部
  • 不包含任何一项

相比之下,如果您要根据 Connections 特性的目的地 IP 子字段进行过滤并选择 Any within IP range,则 contains 函数会自动添加到查询语句中,如以下示例所示:

contains(connections, inIpRange(destination_ip, "2001:db8::/32"))

如需详细了解 contains 函数,请参阅按数组类型字段过滤

containsOnly 函数

借助 containsOnly 函数,您可以查询仅包含子过滤条件中指定的值(不包含其他值)的数组类型属性或子字段的发现结果。

containsOnly 函数使用以下语法:

containsOnly(ARRAY_ATTRIBUTE_NAME,SUBFILTER)

替换以下内容:

  • ARRAY_ATTRIBUTE_NAME:数组类型属性的名称。如果数组类型属性是其他属性的子字段,请指定属性名称和子字段名称(用英文句点分隔)。当您使用 Google Cloud Console 运行查询时,此函数仅支持 iam_bindings.memberiam_bindings.role 数组属性。

  • SUBFILTER:用于定义如何评估数组类型属性的每个元素的表达式。支持标准的 Security Command Center 查询运算符和评估语句。

添加过滤条件菜单中,以下过滤条件选项使用 containsOnly 函数:

  • IAM 绑定 > 成员:仅选择包含指定用户、服务账号或群组的发现结果。

  • IAM 绑定 > 角色:仅选择包含指定角色的发现结果。

以下示例展示了 Google Cloud 控制台中的一个发现结果查询,该查询会返回已取消忽略的有效发现结果,其中 example-group 群组中的用户:

state="ACTIVE"
  AND NOT mute="MUTED"
  AND containsOnly(iam_bindings,member="group:example-group@example.com")

inIpRange 函数

inIpRange 函数会使用 CIDR 表示法(CIDR 范围)检查所选发现结果特性中的 IP 地址是否在您指定的 IP 地址范围内。以下是 inIpRange 函数的语法:

inIpRange(ATTRIBUTE_WITH_IP, "CIDR_RANGE")

添加过滤条件菜单中,以下过滤条件选项使用 inIpRange 函数:

  • Any within IP range:仅选择包含指定范围内的 IP 地址的发现结果。
  • Does not have any within IP range:仅选择不包含指定范围内的 IP 地址的发现结果。

以下示例展示了 Google Cloud 控制台中的一个发现结果查询,该查询会返回已取消忽略的有效发现结果,其中 access 对象的 caller_ip 子字段包含 CIDR 范围 2001:db8::/32 内的 IPv6 地址:

state="ACTIVE"
AND NOT mute="MUTED"
AND inIpRange(access.caller_ip, "2001:db8::/32")

以下示例展示了一个发现结果查询,该查询会返回已取消忽略的有效发现结果,其中 access 对象的 caller_ip 子字段不包含 IPv4 CIDR 范围 192.0.2.0/24 内的 IP 地址:

state="ACTIVE"
AND NOT mute="MUTED"
AND NOT inIpRange(access.caller_ip, "192.0.2.0/24")

如果 IP 地址位于可能在发现结果中出现多次的特性,请将 contains 函数与 inIpRange 函数搭配使用来检查该 IP 地址特性的每个实例。例如:

contains(connections, inIpRange(source_ip, "192.0.2.0/24"))

如需详细了解 contains() 函数,请参阅 contains 函数

查找查询的特性

Security Command Center 根据您在查询中指定的特性过滤条件来评估每个存储的发现结果的特性,以选择要显示的发现结果。

您可以查询大多数发现结果属性。某些属性是所有发现结果的通用属性。其他属性可能特定于某一安全问题、发现结果类别或检测服务。

查询编辑器面板的添加过滤条件菜单中,您可以应用于特性过滤条件的选项会有不同,取决于您选择的特性类型,以及该特性是否包含子字段或值数组。

添加过滤条件菜单中,点击以下任一顶级属性,以显示您可以在发现结果查询中使用的子属性和值: