Security Hub の自動化ルール - AWS Security Hub

Security Hub の自動化ルール

注記

Security Hub はプレビューリリース段階で、変更される可能性があります。

Security Hub を使用すると、検出結果の詳細の更新やサードパーティー統合のチケットの作成などのタスクを自動化できます。

自動化ルールと AWS リージョン

1 つの AWS リージョン で作成した自動化ルールを、設定されたすべての AWS リージョン に適用できます。リージョン集約を使用する場合、ルールはホームリージョンでのみ作成できます。ホームリージョンでルールを作成する場合、ルール基準で特定のリンクされたリージョンを除外しない限り、定義したルールはすべてのリンクされたリージョンに適用されます。リンクされたリージョンではないリージョンに対しては、自動化ルールを作成する必要があります。

ルールのアクションと基準

Security Hub の自動化ルールは、Security Hub の検出結果で OCSF 属性を参照するための基準を使用します。たとえば、CreateAutomationRuleV2Criteria パラメータでサポートされているフィルターは、GetFindingsV2Criteria パラメータでサポートされているフィルターと一致しま。つまり、自動化ルールで使用されているフィルターを使用して検出結果を取得できます。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.TypeS3 Bucket

    • Compliance.Status = FAILED

    • RecordStateNEW

    • Workflow.Status = ACTIVE

  • ルール A のアクション

    • Confidence95 に更新

    • SeverityCRITICAL に更新

    • CommentThis needs attention に更新

ルール B (ルールの順序は 2):

  • ルール B の基準

    • AwsAccountId = 123456789012

  • ルール B のアクション

    • SeverityINFORMATIONAL に更新

ルール A のアクションは、ルール A の基準に一致する Security Hub の検出結果に最初に適用されます。次に、ルール B のアクションが指定されたアカウント ID の Security Hub の検出結果に適用されます。この例では、ルール B が最後に適用されるため、指定されたアカウント ID からの検出結果における Severity の最終値は INFORMATIONAL です。ルール A のアクションに基づくと、一致した検出結果の Confidence の最終値は 95 です。

サードパーティー統合

自動化ルールを使用して、Jira Cloud および ServiceNow ITSM との統合のチケットを作成できます。詳細については、「Creating a rule for a third-party integration」を参照してください。

自動化ルールが機能しないシナリオ

以下は、自動化ルールが機能しないシナリオです。

  • スタンドアロンアカウントが、委任管理者を持つ組織のメンバーになる

  • 組織管理アカウントが委任管理者を削除し、新しい委任管理者を設定する

  • リンクされていないリージョンがリンクされたリージョンになると、委任管理者アカウントまたはスタンドアロンアカウントのアグリゲータ設定が変更されます。

これらのシナリオでは、組織のメンバーは、AWS CLI または API のリスト、取得、削除オペレーションを使用して自動化ルールを管理できます。

リンクされていないリージョンがリンクされたリージョンになると、委任管理者アカウントまたはスタンドアロンアカウントは、リスト、取得、削除オペレーションを使用して、リンクされたリージョンのリソースを管理できます。