BatchUpdateFindings を使用して結果を更新する - AWS Security Hub

BatchUpdateFindings を使用して結果を更新する

BatchUpdateFindings は、結果プロバイダーからの結果をお客様が処理する場合の情報を更新するために使用します。これは、お客様や、お客様の代行として動作する SIEM、チケット発券、インシデント管理、または SOAR ツールが使用します。BatchUpdateFindings を使用して新しい結果を作成することはできません。これを使用すると、一度に 100 件までの結果を更新できます。

Security Hub が結果を更新する BatchUpdateFindings リクエストを受信すると、Amazon EventBridgeで Security Hub Findings - Imported イベントが自動的に生成されます。「自動応答および自動修復」を参照してください。

BatchUpdateFindings は、結果の UpdatedAt フィールドを変更しません。UpdatedAt は、結果プロバイダーからの最新の更新のみを反映します。

BatchUpdateFindings の使用可能なフィールド

管理者アカウントは、BatchUpdateFindings を使用して、自分のアカウントまたはメンバーアカウントの結果を更新できます。メンバーアカウントは、BatchUpdateFindings を使用して、自分のアカウントの結果を更新できます。

お客様のみ BatchUpdateFindings を使用して、以下のフィールドとオブジェクトを更新できます。

  • Confidence

  • Criticality

  • Note

  • RelatedFindings

  • Severity

  • Types

  • UserDefinedFields

  • VerificationState

  • Workflow

デフォルトでは、管理者アカウントとメンバーアカウントは、上記のすべてのフィールドとフィールド値にアクセスできます。Security Hub では、フィールドとフィールド値へのアクセスを制限するためのコンテキストキーも提供されています。

例えば、メンバーアカウントが Workflow.StatusRESOLVED のみに設定できるようにする場合などです。または、メンバーアカウントに Severity.Label の変更を許可したくない場合などもあります。

BatchUpdateFindings へのアクセスの設定

IAM ポリシーを設定してアクセスを制限し、フィールドとフィールド値を更新するための BatchUpdateFindings の使用を制限できます。

BatchUpdateFindings へのアクセスを制限するステートメントで、以下の値を使用します。

  • Actionsecurityhub:BatchUpdateFindings

  • EffectDeny

  • Condition では、以下に基づいて BatchUpdateFindings リクエストを拒否できます。

    • 結果に特定のフィールドが含まれる。

    • 結果に特定のフィールド値が含まれる。

条件キー

これらは、BatchUpdateFindings へのアクセスを制限するための条件キーです。

ASFF フィールド

ASFF フィールドの条件キーは以下のとおりです。

securityhub:ASFFSyntaxPath/<fieldName>

<fieldName> を ASFF フィールドで置き換えます。

例えば、Workflow.Status フィールドへのアクセスを制限するには、 securityhub:ASFFSyntaxPath/Workflow.Status を使用します。

フィールドに対するすべての更新を禁止する

ユーザーが特定のフィールドを更新できないようにするには、以下のような条件を使用します。

"Condition": { "Null": { "securityhub:ASFFSyntaxPath/<fieldName>": "false" } }

例えば、以下のステートメントは、ワークフローの状態を更新するために BatchUpdateFindings を使用できないことを示しています。

{ "Sid": "VisualEditor0", "Effect": "Deny", "Action": "securityhub:BatchUpdateFindings", "Resource": "*", "Condition": { "Null": { "securityhub:ASFFSyntaxPath/Workflow.Status": "false" } } }

特定のフィールド値の許可を禁止する

ユーザーがフィールドを特定の値に設定できないようにするには、以下のような条件を使用します:

"Condition": { "StringEquals": { "securityhub:ASFFSyntaxPath/<fieldName>": "<fieldValue>" } }

例えば、以下のステートメントは、BatchUpdateFindings を使用して Workflow.StatusSUPPRESSED を設定することができないことを示しています。

{ "Sid": "VisualEditor0", "Effect": "Deny", "Action": "securityhub:BatchUpdateFindings", "Resource": "*", "Condition": { "StringEquals": { "securityhub:ASFFSyntaxPath/Workflow.Status": "SUPPRESSED" } }

許可されていない値のリストを提供することもできます。

"Condition": { "ForAnyValue:StringEquals": { "securityhub:ASFFSyntaxPath/<fieldName>": [ "<fieldValue1>", "<fieldValue2>", "<fieldValuen>" ] } }

例えば、以下のステートメントは、BatchUpdateFindings を使用して Workflow.StatusRESOLVED または SUPPRESSED に設定することができないことを示しています。

{ "Sid": "VisualEditor0", "Effect": "Deny", "Action": "securityhub:BatchUpdateFindings", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "securityhub:ASFFSyntaxPath/Workflow.Status": [ "RESOLVED", "NOTIFIED" ] } }

AWS CLI から batch-update-findings コマンドを使用する

AWS Command Line Interfaceでは、batch-update-findings コマンドを使用して、結果を更新します。

更新する各結果に対して、結果を生成した製品の結果 ID と ARN の両方を提供します。

--finding-identifiers ID="<findingID1>",ProductArn="<productARN>" ID="<findingID2>",ProductArn="<productARN2>"

更新する属性を提供するときは、JSON 形式またはショートカット形式のどちらかを使用できます。

以下は、JSON 形式を使用する Note オブジェクトの更新例です。

--note '{"Text": "Known issue that is not a risk.", "UpdatedBy": "user1"}'

以下は、同じ更新をショートカット形式を使用した場合の例です。

--note Text="Known issue that is not a risk.",UpdatedBy="user1"

AWS CLI コマンドリファレンスには、各フィールドに対する JSON 構文とショートカット構文が提供されています。

以下の batch-update-findings 例では、2 つの結果を更新して、メモを追加し、重要度ラベルを変更してから、それらを解決します。

aws securityhub batch-update-findings --finding-identifiers Id="arn:aws:securityhub:us-west-1:123456789012:subscription/pci-dss/v/3.2.1/PCI.Lambda.2/finding/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",ProductArn="arn:aws:securityhub:us-west-2::product/aws/securityhub" Id="arn:aws:securityhub:us-west-1:123456789012:subscription/pci-dss/v/3.2.1/PCI.Lambda.2/finding/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",ProductArn="arn:aws:securityhub:us-west-1::product/aws/securityhub" --note '{"Text": "Known issue that is not a risk.", "UpdatedBy": "user1"}' --severity '{"Label": "LOW"}' --workflow '{"Status": "RESOLVED"}'

これは同じ例ですが、JSON の代わりにショートカットを使用しています。

aws securityhub batch-update-findings --finding-identifiers Id="arn:aws:securityhub:us-west-1:123456789012:subscription/pci-dss/v/3.2.1/PCI.Lambda.2/finding/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",ProductArn="arn:aws:securityhub:us-west-1::product/aws/securityhub" Id="arn:aws:securityhub:us-west-1:123456789012:subscription/pci-dss/v/3.2.1/PCI.Lambda.2/finding/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",ProductArn="arn:aws:securityhub:us-west-1::product/aws/securityhub" --note Text="Known issue that is not a risk.",UpdatedBy="user1" --severity Label="LOW" --workflow Status="RESOLVED"