Security Hub 中的自动化规则 - AWS Security Hub

Security Hub 中的自动化规则

注意

Security Hub 目前为预览版,可能会发生变化。

借助 Security Hub,您可以自动执行诸如更新调查发现详细信息和为第三方集成创建票证之类的任务。

自动化规则和 AWS 区域

可以在一个 AWS 区域创建自动化规则,然后将其应用于所有已配置的 AWS 区域。使用区域聚合时,您只能在主区域中创建规则。在主区域创建规则时,除非规则条件排除特定的关联区域,否则您定义的任何规则都将应用于所有关联区域。对于任何非关联区域,您必须创建自动化规则。

规则操作和条件

Security Hub 中的自动化规则使用条件来引用 Security Hub 调查发现中的 OCSF 属性。例如,CreateAutomationRuleV2 中的 Criteria 参数支持的筛选条件与 GetFindingsV2 中的 Criteria 参数支持的筛选条件相匹配。这意味着可以使用自动化规则中的筛选条件来获取调查发现。Security Hub 支持以下 OCSF 字段作为自动化规则条件。

OCSF 字段 控制台筛选条件值 筛选条件运算符 字段类型
activity_name Activity name EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
class_name Finding class name EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
cloud.account.uid Account ID EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
cloud.provider Cloud provider EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
cloud.region Region EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
comment Comment EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
compliance.assessments.category Assessment category EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
compliance.assessments.name Assessment name EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
compliance.control Security control ID EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
compliance.standards Applicable standards EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
compliance.status Compliance status EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
finding_info.desc Finding description EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
finding_info.related_events.product.uid Related findings product ID EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
finding_info.related_events.title Related findings title EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
finding_info.related_events.uid Related findings ID EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
finding_info.src_url Source URL EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
finding_info.types Finding type EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
finding_info.uid Provider ID EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
metadata.product.feature.uid Generator ID EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
metadata.product.name Product name EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
metadata.product.uid Product ARN EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
metadata.product.vendor_name Company name EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
metadata.uid Finding ID EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
remediation.desc Recommendation text EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
remediation.references Recommendation URL EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
resources.cloud_partition Resource partition EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
resources.name Resource name EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
resources.region Resource region EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
resources.type Resource type EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
resources.uid Resource ID EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
severity Severity EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
status Status EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
vulnerabilities.fix_coverage Software vulnerabilities coverage EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS String
finding_info.first_seen_time_dt First observed at Start, End, DateRange Date (formatted as 2022-12-01T21:47:39.269Z)
finding_info.last_seen_time_dt Last observed at Start, End, DateRange Date (formatted as 2022-12-01T21:47:39.269Z)
finding_info.modified_time_dt Updated at Start, End, DateRange Date (formatted as 2022-12-01T21:47:39.269Z)
compliance.assessments.meets_criteria Compliance assessment meets criteria True, False Boolean
vulnerabilities.is_exploit_available Software vulnerabilities with exploit available True, False Boolean
vulnerabilities.is_fix_available Software vulnerabilities with fix available True, False Boolean
activity_id Activity ID Eq (equal-to), Gte (greater-than-equal), Lte (less-than-equal) Number
compliance.status_id Compliance status ID Eq (equal-to), Gte (greater-than-equal), Lte (less-than-equal) Number
confidence_score Confidence Eq (equal-to), Gte (greater-than-equal), Lte (less-than-equal) Number
severity_id Severity ID Eq (equal-to), Gte (greater-than-equal), Lte (less-than-equal) Number
status_id Status ID Eq (equal-to), Gte (greater-than-equal), Lte (less-than-equal) Number
finding_info.related_events_count Related findings count Eq (equal-to), Gte (greater-than-equal), Lte (less-than-equal) Number
resources.tags Resource tags EQUALS Map

对于标记为字符串字段的条件,在同一字段上使用不同的筛选运算符会影响评估逻辑。有关更多信息,请参阅《Security Hub API 参考》中的 StringFilter

每个标准都支持可用于筛选匹配调查发现的最大值数。有关每个条件的限制,请参阅《Security Hub API 参考》中的 OcsfFindingFilters

可以更新的 OCSF 字段

以下是可以使用自动化规则更新的 OCSF 字段。

  • Comment

  • SeverityId

  • StatusId

自动化规则如何评估调查发现

自动化规则会评估 Security Hub 在您创建规则后生成或提取的新的和更新后的调查发现。

自动化规则会评估提供者提供的原始调查发现。提供者可以通过与 Security Hub 的集成来提供新的调查发现并更新现有调查发现。通过 BatchUpdateFindingsV2 操作创建规则后,更新调查发现字段不会触发规则。如果您创建的自动化规则和进行的 BatchUpdateFindingsV2 更新都会影响同一个调查发现字段,则上次更新会设置该字段的值。请参见以下示例:

您可以使用 BatchUpdateFindingsV2 将调查发现的 Status 字段从 New 更新为 In Process。如果您调用了 GetFindingsV2,则 Status 字段现在的值为 In Process。您创建了一条自动化规则,该规则会将调查发现的 Status 字段从 New 更改为 Suppressed(请注意,规则会忽略使用 BatchUpdateFindingsV2 进行的更新)。调查发现提供者会更新调查发现,并将 Status 字段更改为 New。如果您调用了 GetFindingsV2,则 Status 字段现在的值为 Suppressed,因为应用了自动化规则,而该规则是对调查发现执行的最后一个操作。

在 Security Hub 控制台中创建或编辑规则时,控制台会显示符合规则条件的调查发现的预览。虽然自动化规则会评估调查发现提供者发送的原始调查发现,但控制台预览会反映最终状态的调查发现,就像它们在响应 GetFindingsV2 API 操作时所显示的那样(即在对调查发现应用规则操作或其他更新之后)。

自动化规则如何排序

每条自动化规则都分配了规则顺序。这决定了 Security Hub 应用您的自动化规则的顺序,当多个规则与同一个调查发现或调查发现字段相关时,这变得非常重要。

当多个规则操作与同一个调查发现或调查发现字段相关时,规则顺序数值最高的规则将应用于最后并产生最终效果。

在 Security Hub 控制台中创建规则时,Security Hub 会根据规则的创建顺序自动分配规则顺序。您创建的第一条规则的规则顺序为 1。当存在多条规则时,后续创建的每条规则都将具有下一个可用的最高数值作为规则顺序值。

当您通过 CreateAutomationRuleV2 API 或 AWS CLI 创建规则时,Security Hub 会首先应用 RuleOrder 数值最低的规则。然后它按升序应用后续规则。如果多个调查发现具有相同的 RuleOrder,则 Security Hub 会先为 UpdatedAt 字段应用具有较早值的规则(也就是说,最近编辑的规则应用在最后)。

您可以随时修改规则顺序。

规则顺序示例

规则 A(规则顺序为 1

  • 规则 A 条件

    • ProductName = Security Hub CSPM

    • Resources.Type 为:S3 Bucket

    • Compliance.Status = FAILED

    • RecordState 为:NEW

    • Workflow.Status = ACTIVE

  • 规则 A 操作

    • Confidence 更新为 95

    • Severity 更新为 CRITICAL

    • Comment 更新为 This needs attention

规则 B(规则顺序为 2

  • 规则 B 条件

    • AwsAccountId = 123456789012

  • 规则 B 操作

    • Severity 更新为 INFORMATIONAL

首先,规则 A 操作应用于符合规则 A 条件的 Security Hub 调查发现。然后,规则 B 操作应用于具有指定账户 ID 的 Security Hub 调查发现。在此示例中,由于规则 B 最后适用,因此调查发现中来自指定账户 ID 的 Severity 的最终值为 INFORMATIONAL。根据规则 A 操作,在匹配调查发现中 Confidence 的最终值为 95

第三方集成

您可以使用自动化规则来为与 Jira Cloud 和 ServiceNow ITSM 的集成创建票证。有关更多信息,请参阅创建用于第三方集成的规则

自动化规则无法正常工作的场景

以下是自动化规则无法正常工作的场景。

  • 独立账户成为具有委派管理员的组织的成员

  • 组织管理账户移除委派管理员并设置新的委派管理员

  • 当未关联的区域变为关联区域时,委派管理员账户或独立账户的聚合器配置会发生变化

在这些场景中,组织成员可以使用 AWS CLI 或 API 中的列出、获取和删除操作来管理自动化规则。

当未关联的区域变为关联区域时,委派管理员或独立账户可以通过列出、获取和删除操作来管理关联区域中的资源。