検出結果のエクスポート - Amazon GuardDuty

検出結果のエクスポート

GuardDuty では、アクティブな検出結果を CloudWatch Events にエクスポートできます。オプションで Amazon S3 バケットにもエクスポートできます。GuardDuty によって生成された新しいアクティブな検出結果は、検出結果の生成後約 5 分以内に自動的にエクスポートされます。アクティブな検出結果の更新を CloudWatch Events にエクスポートする頻度を設定できます。選択した頻度は、CloudWatch Events、S3 バケット (設定されている場合)、Detective (統合されている場合) への既存の検出結果の新規発生のエクスポートに適用されます。既存の検出結果の更新の詳細については、「GuardDuty の検出結果の集約 」を参照してください。

検出結果のエクスポート設定については、次の点に注意します。

  • エクスポート設定はリージョンレベルです。つまり、GuardDuty を使用しているリージョンごとにエクスポートオプションを設定する必要があります。ただし、GuardDuty を使用する各リージョンのエクスポート先として、1 つのリージョンで同じバケットを使用できます。

  • アーカイブされた検出結果 (自動アーカイブされた検出結果の新しいインスタンスも含む) はエクスポートされません。検出結果のアーカイブを解除すると、そのステータスが [Active] (アクティブ) に更新され、エクスポートされます。

  • GuardDuty 管理者アカウントで検出結果のエクスポートを有効にすると、現在のリージョンで生成された関連付けられたメンバーアカウントからのすべての検出結果も、管理者アカウント用に設定されている同じ場所にエクスポートされます。

アクティブな検出結果を Amazon S3 バケットにエクスポートするための設定を構成するには、GuardDuty が検出結果の暗号化に使用できる KMS キーと、GuardDuty がオブジェクトをアップロードできるようにする許可を持つ S3 バケットが必要です。このトピックを参照して、検出結果のエクスポートと頻度を構成する方法を学習します。

検出結果のエクスポートの設定に必要な許可

検出結果のエクスポートのオプションを設定するときは、検出結果を保存するバケットと、データ暗号化に使用する KMS キーを選択します。GuardDuty アクションに対する許可に加えて、検出結果のエクスポートのオプションを設定するには、次のアクションに対する許可も必要です。

  • kms:ListAliases

  • s3:CreateBucket

  • s3:GetBucketLocation

  • s3:ListAllMyBuckets

  • s3:PutBucketAcl

  • s3:PutBucketPublicAccessBlock

  • s3:PutBucketPolicy

  • s3:PutObject

重要

ポリシーが putObjectAcl を明示的に拒否した場合、検出結果を公開できなくなります。

GuardDuty に KMS キーへの許可を付与する

GuardDuty は、AWS KMS キーを使用してバケット内の検出結果データを暗号化します。検出結果のエクスポートを正常に設定するには、まず、KMS キーを使用する許可を GuardDuty に付与する必要があります。許可は、使用するキーのキーポリシーを変更することで付与します。

GuardDuty の検出結果に新しいキーを使用する場合は、先に進む前にキーを作成します。別のアカウントでキーを使用する場合、キーを所有するアカウントにログインして、キーポリシーを適用する必要があります。エクスポート設定を定義するときは、別のアカウントのキーのキー ARN も必要です。

キーポリシーを変更して GuardDuty でキーを使用できるようにするには

  1. https://console.aws.amazon.com/kms で AWS KMS コンソールを開きます。

  2. AWS リージョン を変更するには、ページの右上隅にあるリージョンセレクターを使用します。

  3. 新しいキーを作成するか、エクスポートされた検出結果の暗号化に使用する既存のキーを選択します。キーはバケットと同じリージョンにある必要がありますが、検出結果をエクスポートするリージョンごとに、この同じバケットとキーペアを使用できます。

  4. キーを選択し、[General configuration] (一般的な設定) パネルからキー ARN をコピーします。

  5. [Key policy] (キーポリシー) で [Edit] (編集) を選択します。

    ヒント

    [Switch to policy view] (ポリシービューに切り替える) が表示された場合はそれを選択してキーポリシーを表示してから、[Edit] (編集) を選択します。

  6. GuardDuty にキーへのアクセス権を付与する次のキーポリシーを追加します。赤の値を環境に合わせて置き換えます。

    [Region] (リージョン) を、KMS キーがあるリージョンに置き換えます。[111122223333] を GuardDuty ディテクターを所有するソースアカウントの AWS アカウント番号に置き換えます。[KMSKeyId] を暗号化に使用するキーのキー ID に置き換え、[SourceDetectorID] を現在のリージョンのソースアカウントの GuardDuty ディテクター ID に置き換えます。

    このステートメントでは、ポリシーを変更するためのキーのみの使用を GuardDuty に許可できます。キーポリシーを編集するときは、JSON 構文が有効であることを確認してください。最後のステートメントの前にステートメントを追加する場合は、閉じ括弧の後にカンマを追加する必要があります。

    { "Sid": "AllowGuardDutyKey", "Effect": "Allow", "Principal": { "Service": "guardduty.amazonaws.com" }, "Action": "kms:GenerateDataKey", "Resource": "arn:aws:kms:Region:111122223333:key/KMSKeyId", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:guardduty:Region:111122223333:detector/SourceDetectorID" } } }
    注記

    手動で有効にしたリージョンで GuardDuty を使用している場合は、「service」の値をリージョンレベルのエンドポイントに置き換えます。例えば、中東 (バーレーン) (me-south-1) リージョンで GuardDuty を使用している場合は、"Service": "guardduty.amazonaws.com""Service": "guardduty.me-south-1.amazonaws.com" に置き換えます。

  7. [Save] (保存) を選択します。

  8. (オプション) 既存のバケットを使用する予定の場合は、キー ARN をメモ帳にコピーして、後のステップで使用します。キー ARN を見つけるには、「キー ID と ARN を検索する」を参照してください。

GuardDuty に対するバケットへの許可の付与

アカウント内または別の AWS アカウント内の既存のバケットを使用する場合は、そのバケットにオブジェクトをアップロードする許可を GuardDuty に付与する必要があります。これらの許可は、S3 バケットポリシーを追加することによって付与します。既存のバケットを使用している場合は、次のセクションを展開して、バケットポリシーを追加する方法をステップバイステップで説明します。

GuardDuty がバケットのオブジェクトをアップロードできるようにするバケットポリシーを追加するには

  1. https://console.aws.amazon.com/s3/ で Amazon S3 コンソールを開きます。

  2. エクスポートされた検出結果に使用するバケットを選択します。

  3. [Permissions] (許可) を選択し、[Bucket Policy] (バケットポリシー) を選択します。

  4. ポリシー例をコピーし、[Bucket policy editor] (バケットポリシーエディタ) に貼り付けます。

  5. ポリシー例のプレースホルダの値を、環境に適した値に置き換えます。

    [myBucketName] を置き換えます。[optional prefix] (オプションのプレフィックス) をエクスポートした検出結果のフォルダの場所に置き換えます (この場所がまだ存在しない場合、GuardDuty により設定中に作成されます)。[Region] (リージョン) を、KMS キーがあるリージョンに置き換えます。111122223333 を GuardDuty が設定されているアカウントの AWS アカウント番号で置き換えます。[KMSKeyId] を暗号化に使用するキーのキー ID に置き換え、[SourceDetectorID] を現在のリージョンのソースアカウントの GuardDuty ディテクター ID に置き換えます。

ポリシーの例

次のポリシーの例は、Amazon S3 バケットに検出結果を送信する許可を GuardDuty に付与する方法を示しています。検出結果のエクスポートを設定した後にパスを変更する場合は、新しい場所に対する許可を付与するように、ポリシーを変更する必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGuardDutygetBucketLocation", "Effect": "Allow", "Principal": { "Service": "guardduty.amazonaws.com" }, "Action": "s3:GetBucketLocation", "Resource": "arn:aws:s3:::myBucketName", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:guardduty:Region:111122223333:detector/SourceDetectorID" } } }, { "Sid": "AllowGuardDutyPutObject", "Effect": "Allow", "Principal": { "Service": "guardduty.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::myBucketName/[optional prefix]/*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:guardduty:Region:111122223333:detector/SourceDetectorID" } } }, { "Sid": "DenyUnencryptedUploadsThis is optional", "Effect": "Deny", "Principal": { "Service": "guardduty.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::myBucketName/[optional prefix]/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "aws:kms" } } }, { "Sid": "DenyIncorrectHeaderThis is optional", "Effect": "Deny", "Principal": { "Service": "guardduty.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::myBucketName/[optional prefix]/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:Region:111122223333:key/KMSKeyId" } } }, { "Sid": "DenyNon-HTTPS", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::myBucketName/[optional prefix]/*", "Condition": { "Bool": { "aws:SecureTransport": "false" } } } ] }
注記

手動で有効にしたリージョンで GuardDuty を使用している場合は、サービスの値をリージョンレベルのエンドポイントに置き換えます。例えば、中東 (バーレーン) (me-south-1) リージョンで GuardDuty を使用している場合は、"Service": "guardduty.amazonaws.com""guardduty.me-south-1.amazonaws.com" に置き換えます。

コンソールを使用した検出結果のバケットへのエクスポート

検出結果のエクスポートを設定するときに、既存の S3 バケットを選択するか、エクスポートされた検出結果を保存する新しいバケットを GuardDuty で作成することができます。新しいバケットの使用を選択した場合、GuardDuty は作成したバケットに必要なすべての許可を適用します。既存のバケットを使用する場合は、バケットポリシーを更新して、GuardDuty でバケットに検出結果を配置できるようにする必要があります。

検出結果を別のアカウントの既存のバケットにエクスポートすることもできます。

アカウントで新しいバケットまたは既存のバケットを選択するときに、プレフィックスを追加できます。検出結果のエクスポートを設定すると、GuardDuty は検出結果の S3 バケットに新しいフォルダーを作成します。プレフィックスは、GuardDuty によって作成されたデフォルトのフォルダ構造である /AWSLogs/111122223333/GuardDuty/Region の前に付けられます。

重要

KMS キーおよび S3 バケットは同じリージョンにある必要があります。

これらのステップを完了する前に、KMS キーを設定し、既存のバケットを使用している場合は、GuardDuty がオブジェクトを作成できるようにバケットポリシーを追加していることを確認してください。

New bucket in your account

新しいバケットを使用して検出結果のエクスポートを設定するには

  1. GuardDuty が検出結果の暗号化に使用する KMS キーにポリシーを追加します。ポリシーの例については、「GuardDuty に KMS キーへの許可を付与する 」を参照してください。

  2. https://console.aws.amazon.com/guardduty/ で GuardDuty コンソールを開きます。

  3. [Settings] (設定) を選択します。

    1. [New bucket] (新規バケット) を選択して、エクスポートされた検出結果を保存する新しいバケットを作成します。

      [Name the bucket] (バケットに名前を付ける) フィールドに、バケットの名前を入力します。名前はすべての S3 バケットで一意である必要があります。バケット名の先頭は小文字の英数字にする必要があります。

    2. バケットポリシーで [optional prefix] を使用した場合、そのプレフィックスを [Log file prefix] (ログファイルのプレフィックス) に入力する必要があります。そうでない場合は任意です。値を入力すると、フィールドの下にあるパスの例が更新され、エクスポートされる検出結果が保存されるバケットへのパスが反映されます。

    3. [KMS encryption] (KMS 暗号化) で、次のいずれかを行います。

      • [Choose key from your account] (このアカウントからキーを選択) を選択します。

        その後、[Key alias] (キーエイリアス) リストから、ポリシーを変更したキーのキーエイリアスを選択します。

      • [Choose key from another account] (別のアカウントからキーを選択) を選択します。

        その後、ポリシーを変更したキーの完全な ARN を入力します。

        選択するキーは、バケットと同じリージョンにある必要があります。キー ARN の検索方法については、「キー ID と ARN を検索する」を参照してください。

    4. [Save] (保存) を選択します。

Existing bucket in your account

既存のバケットを使用して検出結果のエクスポートを設定するには

  1. GuardDuty が検出結果の暗号化に使用する KMS キーにポリシーを追加します。ポリシーの例については、「GuardDuty に KMS キーへの許可を付与する 」を参照してください。

  2. S3 バケットにオブジェクトをアップロードする許可を GuardDuty に付与するポリシーをアタッチします。ポリシーの例については、「GuardDuty に対するバケットへの許可の付与」を参照してください。

  3. https://console.aws.amazon.com/guardduty/ で GuardDuty コンソールを開きます。

  4. [Settings] (設定) を選択します。

    1. [Existing bucket in your account] (アカウントの既存のバケット) を選択します。

      [Name the bucket] (バケットの名前) フィールドで、バケットの名前を入力します。

    2. オプション。[Log file prefix] (ログファイルのプレフィックス) で、使用するパスプレフィックスを入力します。GuardDuty は、指定したプレフィックス名を持つ新しいフォルダーをバケット内に作成します。値を入力すると、フィールドの下にあるパスの例が更新され、バケットにあるエクスポートされた検出結果へのパスが反映されます。

    3. [KMS encryption] (KMS 暗号化) で、次のいずれかを行います。

      • [Choose key from your account] (このアカウントからキーを選択) を選択します。

        その後、[Key alias] (キーエイリアス) リストから、ポリシーを変更したキーのキーエイリアスを選択します。

      • [Choose key from another account] (別のアカウントからキーを選択) を選択します。

        その後、ポリシーを変更したキーの完全な ARN を入力します。

        選択するキーは、バケットと同じリージョンにある必要があります。キー ARN の検索方法については、「キー ID と ARN を検索する」を参照してください。

    4. [Save] (保存) を選択します。

Existing bucket in another account

別のアカウント内の既存のバケットを使用して検出結果のエクスポートを設定するには

  1. GuardDuty が検出結果の暗号化に使用する KMS キーにポリシーを追加します。ポリシーの例については、「GuardDuty に KMS キーへの許可を付与する 」を参照してください。

  2. 別のアカウント内の S3 バケットにオブジェクトをアップロードする許可を GuardDuty に付与するポリシーをアタッチします。ポリシーの例については、「GuardDuty に対するバケットへの許可の付与」を参照してください。

    注記

    バケットを所有するアカウントのアカウント ID をポリシーで使用します。

  3. https://console.aws.amazon.com/guardduty/ で GuardDuty コンソールを開きます。

  4. [Settings] (設定) を選択します。

    1. [Existing bucket in another account] (別のアカウントの既存のバケット) を選択します。

    2. [Bucket ARN field] (バケット ARN フィールド) に、使用する別のアカウントのバケットの ARN を入力します。

    3. [KMS encryption] (KMS 暗号化) でポリシーを変更したキーの完全な ARN を入力します。

      選択するキーは、バケットと同じリージョンにある必要があります。キー ARN の検索方法については、「キー ID と ARN を検索する」を参照してください。

    4. [Save] (保存) を選択します。

エクスポートアクセスエラー

検出結果のエクスポートのオプションを構成した後、GuardDuty が検出結果をエクスポートできない場合、[Settings] (設定) ページにエラーメッセージが表示されます。これは、S3 バケットが削除された場合や、バケットへの許可が変更された場合など、GuardDuty がターゲットリソースにアクセスできなくなった場合に発生します。また、バケット内のデータの暗号化に使用される KMS キーにアクセスできなくなった場合にも発生します。

エクスポートに失敗すると、GuardDuty はアカウントに関連付けられた電子メールに通知を送信し、問題について通知します。問題が解決しない場合は、GuardDuty によってアカウント内の検出結果のエクスポートが無効になります。設定を更新して、検出結果のエクスポートをいつでも再開できます。

このエラーを受け取った場合は、検出結果のエクスポートを有効にして設定する方法に関するこのトピックの情報を確認してください。例えば、キーポリシーを確認し、暗号化用に選択した KMS キーに正しいポリシーが適用されていることを確認します。

更新されたアクティブな検出結果をエクスポートする頻度の設定

環境に応じて、更新されたアクティブな検出結果をエクスポートする頻度を設定します。デフォルトでは、更新された検出結果は 6 時間ごとにエクスポートされます。つまり、最新のエクスポート後に更新された検出結果が、次のエクスポートに含まれます。更新された検出結果が 6 時間ごとにエクスポートされ、エクスポートが 12:00 に発生した場合、12:00 以降に更新した検出結果が 18:00 にエクスポートされます。

頻度を設定するには

  1. AWS Management Console にサインインし、https://console.aws.amazon.com/guardduty/ で GuardDuty コンソールを開きます。

  2. [Settings] (設定) を選択します。

  3. [Findings export options] (結果のエクスポートオプション) セクションで、[Frequency for updated findings] (更新された結果の頻度) を選択します。これにより、更新されたアクティブな検出結果を CloudWatch Events と Amazon S3 の両方にエクスポートする頻度が設定されます。次から選択できます。

    • [Update CWE and S3 every 15 minutes] (CWE と S3 を 15 分ごとに更新)

    • [Update CWE and S3 every 1 hour] (CWE と S3 を 1 時間ごとに更新)

    • [Update CWE and S3 every 6 hours (default)] (CWE と S3 を 6 時間ごとに更新 (デフォルト))

  4. [Save] (保存) を選択します。