本页面介绍如何使用发现结果页面上的查询编辑器面板创建和修改 Security Command Center 发现结果查询。
使用查询来检索特定发现结果并过滤在发现结果的查询结果中显示的发现结果。
修改发现结果查询
在查询编辑器面板中,您可以为查询添加过滤条件,以根据发现结果的属性或属性值来选择发现结果。您可以针对存在值、缺少值或部分字符串匹配等情况进行过滤。
如需了解如何修改发现结果查询,请点击相应服务层级的标签页。
标准或优质
- 在 Google Cloud 控制台中,前往 Security Command Center 的发现结果页面。
- 选择您的 Google Cloud 项目或组织。 系统随即会加载发现结果页面,并在查询预览字段中显示默认查询。
- 在查询预览部分右侧,点击 edit 修改查询以打开查询编辑器面板。
- 选择添加过滤条件,以浏览、搜索以及向查询添加预定义属性过滤条件。
- 选择发现结果特性或在搜索发现结果特性框中输入其名称。系统会显示可用子特性的列表。
- 选择子特性。系统会显示一个选择字段,您可以在其中使用所选子属性、查询运算符以及子属性的一个或多个值来构建查询语句。
- 从面板中为子属性选择运算符和一个或多个值。 如需详细了解查询运算符及其使用的函数,请参阅“添加过滤条件”菜单中的查询运算符。
- 点击应用。
对话框将会关闭,并且您的查询即会更新。
- 重复这些步骤,直到发现结果查询包含所需的所有特性。
选择过滤条件对话框允许您选择支持的发现结果属性和值。
当您在发现结果页面上使用查询编辑器时,快速过滤条件部分会被停用,以避免两者之间发生冲突。
企业
- 在 Google Cloud 控制台中,前往 Security Command Center 的发现结果页面。
- 在查询编辑器面板中,点击 添加过滤条件。系统随即会显示添加过滤条件对话框。您可以在此对话框中选择支持的发现结果属性及值。
- 在属性类别字段中,选择或输入一个发现结果属性。
- 在属性名称字段中,选择或输入一个子属性。
- 在运算符字段中,为所选子属性的值选择一个评估选项。如需详细了解评估选项以及可使用的运算符,请参阅“添加过滤条件”菜单中的查询运算符。
- 选择应用。
对话框将会关闭,并且您的查询即会更新。
- 重复此过程,直到发现结果查询包含您要过滤的所有属性。
如需清除过滤条件,请点击重置。
或者,您也可以手动构建发现结果查询,方法与使用 Security Command Center API 构建发现结果过滤条件相同。当您在查询中输入内容时,系统会显示自动补全菜单,您可以在其中选择过滤条件名称、函数和值。如需手动打开自动补全菜单,请按 Ctrl + 空格键。
修改查询时,编辑器会突出显示查询中的所有错误,以便在提交查询之前更正这些错误。
查询运算符
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"
以下列表显示了发现结果的查询语句中支持的所有运算符和函数:
- 对于字符串:
=
,表示完全相等:
表示部分字符串匹配
- 对于数字(int64 除外):
<
、>
、<=
、>=
,表示不相等=
、!=
表示相等
- 对于数字 (int 64):
=
、!=
表示相等
- 对于布尔值:
=
表示等式
- 对于逻辑关系:
AND
OR
NOT
或-
- 对于分组表达式:
(
、)
(英文括号)
- 对于数组:
contains()
,此函数用于查询其数组字段包含至少一个与指定过滤条件匹配的元素的发现结果containsOnly()
,此函数用于查询其数组字段仅包含与指定过滤条件匹配的元素的发现结果
- 对于 IP 地址:
inIpRange()
,此函数用于查询指定 CIDR 范围内的 IP 地址
“添加过滤条件”菜单中的查询运算符
如需了解添加过滤条件菜单中使用的查询运算符,请点击相应服务层级的标签页。
标准或优质
在查询编辑器的 查询运算符和函数由字词或短语表示,例如:
添加过滤条件菜单中,- 等于:匹配具有确切属性值的发现结果。
- 不等于:匹配不具有确切属性值的发现结果。
- 晚于:匹配其创建或更新时间晚于指定时间的发现结果。
- 早于:匹配其创建或更新时间早于指定时间的发现结果。
- 包含:匹配其属性值包含在关键字字段中输入的文本的发现结果。
- 不包含:匹配其属性值不包含在关键字字段中输入的文本的发现结果。
- 对于包含数组的发现结果特性:
- 包含全部:匹配其数组值包含在关键字字段中输入的所有文本的发现结果。
- 包含全部:匹配其数组值包含在关键字字段中输入的所有文本的发现结果。
- 不包含任何:匹配不具有包含在关键字字段中输入的文本的数组值的发现结果。
- 仅包含:匹配具有数组属性的发现结果,该数组结果仅包含您在关键字字段中输入的值,不包含其他值。
- 对于 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_addresses
是indicator
的子字段,因此两者都在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 控制台运行查询,则此函数仅支持iam_bindings.member
和iam_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 根据您在查询中指定的特性过滤条件来评估每个存储的发现结果的特性,以选择要显示的发现结果。
您可以查询大多数发现结果属性。某些属性是所有发现结果的通用属性。其他属性可能专用于特定安全问题、发现结果类别或检测服务。
在查询编辑器面板的添加过滤条件菜单中,您可以应用于特性过滤条件的选项会有不同,取决于您选择的特性类型,以及该特性是否包含子字段或值数组。
在添加过滤条件菜单中,点击以下任一顶级属性,以显示可在发现结果查询中使用的相应子属性和值:
- 发现结果
- 资源
- 访问权限 (
access
) - 攻击风险得分
- 备份灾难恢复
- 合规性 (
compliances[]
) - 连接数 (
connections[]
) - 联系人
- 容器
- 数据库
- 渗漏 (
exfiltration
) - 文件
- IAM 绑定 (
iamBindings[]
) - 指标
- 内核 rootkit
- Kubernetes
- MITRE ATT&CK (
mitreAttack
) - 进程 (
processes[]
) - 安全状况
- 敏感数据保护
- 漏洞