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 はフィールドを自動的に入力し、オートメーションルールによる評価で入力された値を使用します。
AwsAccountNameCompanyNameProductNameResource.TagsWorkflow.Status
1 つ以上の自動化ルールを作成したら、BatchUpdateFindings オペレーションを使用して検出結果フィールドを更新しても、ルールはトリガーされません。自動化ルールを作成し、同じ検出結果フィールドに影響する BatchUpdateFindings 更新を行うと、最後の更新によってそのフィールドの値を設定します。次の例を見てみましょう。
BatchUpdateFindingsオペレーションを使用して、検出結果のWorkflow.Statusフィールドの値をNEWからNOTIFIEDに変更します。GetFindingsを呼び出すと、Workflow.Statusフィールドの値がNOTIFIEDになりました。検出結果の
Workflow.StatusフィールドをNEWからSUPPRESSEDに変更する自動化ルールを作成します。(BatchUpdateFindingsオペレーションを使用して行われた更新はルールで無視されます)。検出結果プロバイダーは、
BatchImportFindingsオペレーションを使用して検出結果を更新し、検出結果のWorkflow.Statusフィールドの値をNEWに変更します。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.TypeはS3 Bucket -
Compliance.Status=FAILED -
RecordStateはNEW -
Workflow.Status=ACTIVE
-
-
ルール A のアクション
-
Confidenceを95に更新 -
SeverityをCRITICALに更新
-
ルール B (ルールの順序は 2):
-
ルール B の基準
-
AwsAccountId=123456789012
-
-
ルール B のアクション
-
SeverityをINFORMATIONALに更新
-
ルール A のアクションは、ルール A の基準に一致する Security Hub CSPM の検出結果に最初に適用されます。次に、ルール B のアクションが指定されたアカウント ID の Security Hub CSPM の検出結果に適用されます。この例では、ルール B が最後に適用されるため、指定されたアカウント ID からの検出結果における Severity の最終値は INFORMATIONAL です。ルール A のアクションに基づくと、一致した検出結果の Confidence の最終値は 95 です。