検出結果のエクスポート
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 でキーを使用できるようにするには
-
https://console.aws.amazon.com/kms
で AWS KMS コンソールを開きます。 -
AWS リージョン を変更するには、ページの右上隅にあるリージョンセレクターを使用します。
-
新しいキーを作成するか、エクスポートされた検出結果の暗号化に使用する既存のキーを選択します。キーはバケットと同じリージョンにある必要がありますが、検出結果をエクスポートするリージョンごとに、この同じバケットとキーペアを使用できます。
キーを選択し、[General configuration] (一般的な設定) パネルからキー ARN をコピーします。
-
[Key policy] (キーポリシー) で [Edit] (編集) を選択します。
ヒント [Switch to policy view] (ポリシービューに切り替える) が表示された場合はそれを選択してキーポリシーを表示してから、[Edit] (編集) を選択します。
-
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"
に置き換えます。 -
[Save] (保存) を選択します。
-
(オプション) 既存のバケットを使用する予定の場合は、キー ARN をメモ帳にコピーして、後のステップで使用します。キー ARN を見つけるには、「キー ID と ARN を検索する」を参照してください。
GuardDuty に対するバケットへの許可の付与
アカウント内または別の AWS アカウント内の既存のバケットを使用する場合は、そのバケットにオブジェクトをアップロードする許可を GuardDuty に付与する必要があります。これらの許可は、S3 バケットポリシーを追加することによって付与します。既存のバケットを使用している場合は、次のセクションを展開して、バケットポリシーを追加する方法をステップバイステップで説明します。
GuardDuty がバケットのオブジェクトをアップロードできるようにするバケットポリシーを追加するには
https://console.aws.amazon.com/s3/
で Amazon S3 コンソールを開きます。 -
エクスポートされた検出結果に使用するバケットを選択します。
-
[Permissions] (許可) を選択し、[Bucket Policy] (バケットポリシー) を選択します。
-
ポリシー例をコピーし、[Bucket policy editor] (バケットポリシーエディタ) に貼り付けます。
-
ポリシー例のプレースホルダの値を、環境に適した値に置き換えます。
[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 がオブジェクトを作成できるようにバケットポリシーを追加していることを確認してください。
エクスポートアクセスエラー
検出結果のエクスポートのオプションを構成した後、GuardDuty が検出結果をエクスポートできない場合、[Settings] (設定) ページにエラーメッセージが表示されます。これは、S3 バケットが削除された場合や、バケットへの許可が変更された場合など、GuardDuty がターゲットリソースにアクセスできなくなった場合に発生します。また、バケット内のデータの暗号化に使用される KMS キーにアクセスできなくなった場合にも発生します。
エクスポートに失敗すると、GuardDuty はアカウントに関連付けられた電子メールに通知を送信し、問題について通知します。問題が解決しない場合は、GuardDuty によってアカウント内の検出結果のエクスポートが無効になります。設定を更新して、検出結果のエクスポートをいつでも再開できます。
このエラーを受け取った場合は、検出結果のエクスポートを有効にして設定する方法に関するこのトピックの情報を確認してください。例えば、キーポリシーを確認し、暗号化用に選択した KMS キーに正しいポリシーが適用されていることを確認します。
更新されたアクティブな検出結果をエクスポートする頻度の設定
環境に応じて、更新されたアクティブな検出結果をエクスポートする頻度を設定します。デフォルトでは、更新された検出結果は 6 時間ごとにエクスポートされます。つまり、最新のエクスポート後に更新された検出結果が、次のエクスポートに含まれます。更新された検出結果が 6 時間ごとにエクスポートされ、エクスポートが 12:00 に発生した場合、12:00 以降に更新した検出結果が 18:00 にエクスポートされます。
頻度を設定するには
AWS Management Console にサインインし、https://console.aws.amazon.com/guardduty/
で GuardDuty コンソールを開きます。 -
[Settings] (設定) を選択します。
-
[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 時間ごとに更新 (デフォルト))
-
-
[Save] (保存) を選択します。