Security Hub CSPM の自動化ルールについて - AWS Security Hub

Security Hub CSPM の自動化ルールについて

自動化ルールを使用すると、AWS Security Hub CSPM の検出結果を自動的に更新できます。検出結果が取り込まれると、Security Hub CSPM は検出結果の非表示、重要度の変更、メモの追加など、さまざまなルールアクションを適用できます。このようなルールアクションは、指定した条件に一致する検出結果を変更します。

自動化ルールの使用例には、次のようなものがあります。

  • 検出結果のリソース ID がビジネス上重要なリソースを参照している場合、検出結果の重大度を CRITICAL に上げます。

  • 検出結果が特定の本番稼働用アカウントのリソースに影響する場合は、検出結果の重要度を HIGH から CRITICAL に引き上げます。

  • INFORMATIONAL 重要度を持つ SUPPRESSED ワークフローステータスの特定の検出結果を割り当てます。

Security Hub CSPM 管理者アカウントからのみ自動化ルールを作成および管理できます。

ルールは、新しい検出結果と更新された検出結果の両方に適用されます。カスタムルールを最初から作成することも、Security Hub CSPM が提供するルールテンプレートを使用することもできます。テンプレートから開始し、必要に応じて変更することもできます。

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

Security Hub CSPM 管理者アカウントから、1 つ以上のルール条件 と 1 つ以上のルールアクションを定義することで、自動化ルールを作成できます。検出結果が定義済みの条件と一致すると、Security Hub CSPM はその結果にルールアクションを適用します。使用可能な条件とアクションの詳細については、「使用可能なルール基準とルールアクション」を参照してください。

Security Hub CSPM は現在、管理者アカウントごとに最大 100 の自動化ルールをサポートしています。

Security Hub CSPM 管理者アカウントは、自動化ルールを編集、表示、削除できます。ルールは、管理者アカウントとすべてのメンバーアカウントの一致する検出結果に適用されます。メンバーアカウント ID をルール条件に指定することで、Security Hub CSPM 管理者は自動化ルールを使用して特定のメンバーアカウントの検出結果を更新したり、非表示にしたりすることもできます。

自動化ルールは、そのルールが作成された AWS リージョンにのみ適用されます。複数のリージョンにルールを適用するには、管理者がリージョンごとにルールを作成する必要があります。これは、Security Hub CSPM コンソール、Security Hub CSPM API、または AWS CloudFormation を使用して実行できます。マルチリージョンデプロイスクリプトを使用することも可能です。

使用可能なルール基準とルールアクション

現在、次の AWS セキュリティ検出結果フォーマット (ASFF) フィールドが自動化ルールの条件としてサポートされています。

ルール基準 フィルター演算子 フィールドタイプ
AwsAccountId CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
AwsAccountName CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
CompanyName CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
ComplianceAssociatedStandardsId CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
ComplianceSecurityControlId CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
ComplianceStatus Is, Is Not 選択: [FAILED, NOT_AVAILABLE, PASSED, WARNING]
Confidence Eq (equal-to), Gte (greater-than-equal), Lte (less-than-equal) 数値
CreatedAt Start, End, DateRange 日付 (形式例: 2022-12-01T21:47:39.269Z)
Criticality Eq (equal-to), Gte (greater-than-equal), Lte (less-than-equal) 数値
Description CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
FirstObservedAt Start, End, DateRange 日付 (形式例: 2022-12-01T21:47:39.269Z)
GeneratorId CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
Id CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
LastObservedAt Start, End, DateRange 日付 (形式例: 2022-12-01T21:47:39.269Z)
NoteText CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
NoteUpdatedAt Start, End, DateRange 日付 (形式例: 2022-12-01T21:47:39.269Z)
NoteUpdatedBy CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
ProductArn CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
ProductName CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
RecordState CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
RelatedFindingsId CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
RelatedFindingsProductArn CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
ResourceApplicationArn CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
ResourceApplicationName CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
ResourceDetailsOther CONTAINS, EQUALS, NOT_CONTAINS, NOT_EQUALS マップ
ResourceId CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
ResourcePartition CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
ResourceRegion CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
ResourceTags CONTAINS, EQUALS, NOT_CONTAINS, NOT_EQUALS マップ
ResourceType Is, Is Not 選択 (ASFF がサポートするリソースを参照)
SeverityLabel Is, Is Not 選択: [CRITICAL, HIGH, MEDIUM, LOW, INFORMATIONAL]
SourceUrl CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
Title CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
Type CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
UpdatedAt Start, End, DateRange 日付 (形式例: 2022-12-01T21:47:39.269Z)
UserDefinedFields CONTAINS, EQUALS, NOT_CONTAINS, NOT_EQUALS マップ
VerificationState CONTAINS, EQUALS, PREFIX, NOT_CONTAINS, NOT_EQUALS, PREFIX_NOT_EQUALS 文字列
WorkflowStatus Is, Is Not 選択: [NEW, NOTIFIED, RESOLVED, SUPPRESSED]

文字列フィールドとしてラベル付けされている条件の場合、同じフィールドで異なるフィルター演算子を使用すると、評価ロジックに影響します。詳細については、「AWS Security Hub CSPM API リファレンス」の「StringFilter」を参照してください。

各基準は、一致する検出結果のフィルタリングに使用できる値の最大数をサポートしています。各基準の制限については、「AWS Security Hub CSPM API リファレンス」の「AutomationRulesFindingFilters」を参照してください。

現在、次の ASFF フィールドが自動化ルールのアクションとしてサポートされています。

  • Confidence

  • Criticality

  • Note

  • RelatedFindings

  • Severity

  • Types

  • UserDefinedFields

  • VerificationState

  • Workflow

特定の ASFF フィールドの詳細については、「AWS Security Finding Format (ASFF)」を参照してください。

ヒント

Security Hub CSPM で特定のコントロールに関する検出結果の生成を停止したい場合は、自動化ルールを使用する代わりにコントロールを無効にすることをお勧めします。コントロールを無効にすると、Security Hub CSPM はそのコントロールに対するセキュリティチェックの実行を停止し、検出結果の生成を停止するため、そのコントロールに対する料金は発生しません。自動化ルールを使用し、定義した条件に一致する検出結果に関して、特定の ASFF フィールド値を変更することをおすすめします。コントロールの無効化に関する詳細については、「Security Hub CSPM でのコントロールの無効化」を参照してください。

自動化ルールが評価する検出結果

自動化ルールは、ルールの作成に Security Hub CSPM が BatchImportFindings オペレーションを通じて生成または取り込む新規および更新された検出結果を評価します。Security Hub CSPM は、12~24 時間ごと、または関連リソースの状態が変化したときに、コントロール検出結果を更新します。詳細については、「セキュリティチェックの実行スケジュール」を参照してください。

自動化ルールは、プロバイダーが提供する元の検出結果を評価します。プロバイダーは、Security Hub CSPM API の BatchImportFindings オペレーションを通じて、新しい検出結果を提供し、既存の検出結果を更新できます。元の検出結果に次のフィールドが存在しない場合、Security Hub CSPM はフィールドを自動的に入力し、オートメーションルールによる評価で入力された値を使用します。

  • AwsAccountName

  • CompanyName

  • ProductName

  • Resource.Tags

  • Workflow.Status

1 つ以上の自動化ルールを作成したら、BatchUpdateFindings オペレーションを使用して検出結果フィールドを更新しても、ルールはトリガーされません。自動化ルールを作成し、同じ検出結果フィールドに影響する BatchUpdateFindings 更新を行うと、最後の更新によってそのフィールドの値を設定します。次の例を見てみましょう。

  1. BatchUpdateFindings オペレーションを使用して、検出結果の Workflow.Status フィールドの値を NEW から NOTIFIED に変更します。

  2. GetFindings を呼び出すと、Workflow.Status フィールドの値が NOTIFIED になりました。

  3. 検出結果の Workflow.Status フィールドを NEW から SUPPRESSED に変更する自動化ルールを作成します。(BatchUpdateFindings オペレーションを使用して行われた更新はルールで無視されます)。

  4. 検出結果プロバイダーは、BatchImportFindings オペレーションを使用して検出結果を更新し、検出結果の Workflow.Status フィールドの値を NEW に変更します。

  5. GetFindings を呼び出すと、Workflow.Status フィールドの値が SUPPRESSED になりました。自動化ルールが適用され、ルールが検出結果に対して最後に実行されたアクションであったためです。

Security Hub CSPM コンソールでルールを作成または編集すると、コンソールにルール条件に一致する検出結果のベータが表示されます。自動化ルールは検出結果プロバイダーによって送信された元の検出結果を評価しますが、コンソールベータは GetFindings オペレーションへのレスポンス (つまり、ルールアクションやその他の更新が検出結果に適用された後) に表示されるため、最終状態の検出結果を反映します。

ルールの順序の仕組み

自動化ルールを作成するときは、各ルールに順序を割り当てます。これにより、Security Hub CSPM が自動化ルールを適用する順序が決まり、複数のルールが同じ検出結果または検出結果フィールドに関連する場合に重要になってきます。

複数のルールアクションが同じ検出結果または検出結果フィールドに関連する場合、ルール順序の数値が最も大きいルールが最後に適用され、最終的な結果となります。

Security Hub CSPM コンソールでルールを作成すると、Security Hub CSPM はルールの作成順序に基づいて、ルールの順序を自動的に割り当てます。最後に作成されたルールは、ルール順序の数値が最も小さいため、最初に適用されます。Security Hub CSPM は後続のルールを昇順で適用します。

Security Hub CSPM API または AWS CLI を使用してルールを作成すると、Security Hub CSPM は RuleOrder で数値が最も小さいルールを最初に適用します。その後、後続のルールを昇順で適用します。複数の検出結果に同じ RuleOrder がある場合、Security Hub CSPM は UpdatedAt フィールドに以前の値のルールを最初に適用します (つまり、最後に編集されたルールが最後に適用されます)。

ルールの順序はいつでも変更できます。

ルール順序の例:

ルール A (ルール順序は 1):

  • ルール A の基準

    • ProductName = Security Hub CSPM

    • Resources.TypeS3 Bucket

    • Compliance.Status = FAILED

    • RecordStateNEW

    • Workflow.Status = ACTIVE

  • ルール A のアクション

    • Confidence95 に更新

    • SeverityCRITICAL に更新

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

  • ルール B の基準

    • AwsAccountId = 123456789012

  • ルール B のアクション

    • SeverityINFORMATIONAL に更新

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