

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 可用的自定义检测规则
<a name="custom-detection-rules-available"></a>

自定义检测规则扩展了 GuardDuty 提供的威胁检测。 GuardDuty 提供了一个选择加入规则库，您可以根据环境的特定风险选择启用这些规则。要获取当前可用规则列表，请使用 [ListCustomDetectionRules](https://docs.amazonaws.cn/guardduty/latest/APIReference/API_ListCustomDetectionRules.html)API 操作。有关每条规则生成的查找结果类型，请参见[自定义检测规则查找类型](findings-custom-detection-rules.md)。

**注意**  
各个规则的可用性取决于每个区域中相应 Amazon 服务和功能的可用性。例如， Amazon 以 Organizations 或 Amazon 简单电子邮件服务为目标的规则仅在这些服务运营的地区可用。同样，针对 Lambda 函数 URL 或 SageMaker AI 笔记本实例的规则仅在支持这些功能的地区可用。

## 查看规则检测逻辑
<a name="custom-detection-rules-viewing-logic"></a>

每条规则都定义了决定何时触发的特定条件。您可以检查任何规则的检测逻辑：
+ **控制台**-在 GuardDuty 控制台中，导航到 “**自定义检测规则**”，然后选择规则名称。拆分面板在 “**详细信息**” 选项卡上显示规则的检测逻辑。
+ **API**-调用该[GetCustomDetectionRule](https://docs.amazonaws.cn/guardduty/latest/APIReference/API_GetCustomDetectionRule.html)操作。响应在`Definition.Expression`字段中包含规则的表达式。

下图显示了自定义检测规则目录。

![自定义检测规则目录列出了可用规则，其中包含名称、严重性和状态列以及表格上方的属性筛选器控件。](https://docs.amazonaws.cn/guardduty/latest/ug/images/custom-detection-rules-rule-catalog.png)


下图显示了带有检测逻辑的规则详细信息面板。

![规则详细信息拆分面板，选中 “详细信息” 选项卡，显示规则的 SQL-based 检测逻辑表达式。](https://docs.amazonaws.cn/guardduty/latest/ug/images/custom-detection-rules-rule.png)


## 检测逻辑中使用的函数
<a name="custom-detection-rules-functions"></a>

自定义检测规则使用评估 Amazon CloudTrail 事件字段的 SQL 条件。有些规则使用专门的函数来检查事件字段中的嵌套 JSON 结构，例如`requestParameters`和`responseElements`。下表描述了可能出现在规则检测逻辑中的函数。

检查嵌套字段的规则取决于事件中是否存在该字段。有关 Amazon CloudTrail 不记录的字段的更多信息，请参阅[已编辑的事件字段](custom-detection-rules-how-it-works.md#custom-detection-rules-how-it-works-redacted-fields)。


| 函数 | 返回值 | 说明 | 
| --- | --- | --- | 
| `get_json_object(json, path)` | 字符串 | 使用点分隔的路径（例如）从 JSON 文档中提取值。`$.requestParameters.bucketName`以字符串形式返回值。 | 
| `json_collect_values(json, path, field)` | 数组 | 导航到 JSON 文档中的数组并从每个元素收集指定字段。此函数从 IAM 策略声明或安全组规则等重复结构中提取值列表。 | 
| `get_aws_principal(policy_json, effect)` | 数组 | 解析 IAM、Amazon S3 或 Lambda 资源策略，并从符合指定效果（允许或拒绝）的语句中返回 Amazon 账户委托人。此功能可检测资源策略中的跨账户访问权限。 | 
| `policy_has_public_principal(policy_json, effect)` | 布尔值 | 当任何具有指定效果的语句授予对公共委托人 (`"*"`) 的访问权限时，返回 true。此功能可检测允许公共访问的策略。 | 