皆様こんにちは!
ネットワールドでAWSやMicrosoftのクラウド製品を担当しているSEの碇です。
本日は、AWSのGuardDutyというサービスについて、サービス概要からご利用方法まで、ご説明しようと思います。

GuardDutyとは
GuardDutyとは、AWS 環境内の脅威を検出するサービスです。
悪意のある IP アドレスとドメインのリスト、ファイルハッシュ、機械学習 (ML) モデルなどを使用して、 AWS 環境内の疑わしいアクティビティや潜在的に悪意のあるアクティビティを特定します。
AWSドキュメントは下記となります。
Amazon GuardDuty とは - Amazon GuardDuty
GuardDutyの利用方法
GuardDutyは、GuardDutyのダッシュボードで「GuardDutyを有効化」するだけで利用することができます。
必要に応じて、脅威の結果をS3に格納することや、脅威を検知した際にメールで通知をすることができます。
利用方法については後述でご説明していきます。
GuardDutyの有効化
早速GuardDutyを有効化していきます。
GuardDutyの脅威の結果をS3バケットに格納する方法もご説明していきます。
GuardDutyはワンクリックで脅威の検出を行うことができます。
AWSコンソールでGuardDutyを検索します。
有効化するリージョンを確認し、今すぐ始めるをクリックします。
今回は、東京リージョンで実施します。

自動的にGuardDutyにようこその画面に遷移します。
GuardDutyにどのサービスアクセス権限があるのかを確認できます。

デフォルトだと以下のようになっていました。

GuardDutyを有効にするをクリックします。

GuardDutyの有効化はこれで完了です。
GuardDutyの検出結果をS3バケットにエクスポートする
GuardDuty は生成された検出結果を 90 日間保持します。
生成された検出結果は、必要に応じてS3バケットにエクスポートすることができます。
ここでは、GuardDutyの検出結果をS3バケットにエクスポートする手順をご説明します。
KMSキーの作成
S3バケットを暗号化するためにAWS KMSキーを作成する必要があります。
KMSキーはS3バケットと同じリージョンに作成する必要があります。
Key Management Service (KMS)>キーの作成をクリックします。

キーを設定では、デフォルトのまま次へをクリックします。

必要に応じてキーの表示名と説明、タグを入力し、次へをクリックします。

キーの管理アクセス許可を定義は設定せずに次へをクリックします。

キーの使用方法アクセス許可を定義も設定せずに次へをクリックします。

キーポリシーに関しては、後ほど設定変更を行いますので、設定せずに次へをクリックします。

確認画面で設定値を確認して、完了をクリックします。
AWSドキュメント:
生成された GuardDuty の検出結果を Amazon S3 バケットにエクスポートする - Amazon GuardDuty
KMSキーのキーポリシーの編集
GuardDutyには、KMSキーを使用する許可を付与する必要があります。
KMSキーにポリシーを添付することで、許可を付与することができます。
先ほど作成したKMSキーをクリックし、キーポリシー>ポリシービューへの切り替えをクリックします。

下記のポリシーの赤字部分を編集して、既存のキーポリシーの"Statements"セクションに追加します。赤字の箇所は、この後説明します。
{
"Sid": "AllowGuardDutyKey",
"Effect": "Allow",
"Principal": {
"Service": "guardduty.amazonaws.com"
},
"Action": "kms:GenerateDataKey",
"Resource": "KMS key ARN",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "123456789012",
"aws:SourceArn": "arn:aws:guardduty:Region2:123456789012:detector/SourceDetectorID"
}
}
}
・"KMS key ARN"
先ほど作成したKMSキーをクリックし、arn:aws:kms~~~から始まるARNをクリックしコピーします。


・123456789012
アカウントIDとなります。AWSコンソールで、右上の現在操作しているアカウントをクリックするとアカウントIDが表示されるので、アカウントIDをコピーしてください。


・"arn:aws:guardduty:Region2:123456789012:detector/SourceDetectorID"
・Region2
キーのリージョンとなります。
先ほどコピーしたARNのリージョン部分(下記はap-northeast-1)をコピーします。

・123456789012
アカウントIDとなります。アカウントIDについては、先ほどご説明した通りです。
・SourceDetectorID
GuardDutyアカウントの detectorIDとなります。
GuardDuty>設定をクリックし、ディテクターIDをクリックしてコピーしてください。


上記のKMSキーポリシーについては、
GuardDuty>設定>検出結果のエクスポート設定を編集>ポリシーをアタッチ>KMSキーのポリシーを表示
でも確認することができます。

ポリシーが表示されたらコピーし、既存KMSキーポリシーの"Statements"セクションに追加します。
S3バケットの作成
バケットを作成をクリックします。

バケット名を入力します。

今回はパブリックアクセスはすべてブロックさせます。

バケットのバージョニングはデフォルトのまま、必要に応じてタグを作成します。

デフォルトの暗号化では、先ほど作成したKMSキーを選択します。
KMSキーARNについては、先ほどご説明した通りにコピーします。
設定できたら、バケットを作成をクリックします。

GuardDutyで検出結果のエクスポート設定を編集する
作成したS3バケットと、KMSキーを設定していきます。
GuardDuty>設定>検出結果のエクスポート設定を編集をクリックします。
作成したS3バケット>プロパティ>Amazon リソースネーム (ARN)をクリックしてコピーし、下記の通りS3バケットARNを入力します。
KMSキーARNについても、先ほどご説明した通りに入力します。(GuardDutyの利用方法>GuardDutyの検出結果をS3バケットにエクスポートする>KMSキーのキーポリシーの編集>"KMS key ARN")

入力できたら、S3バケットのポリシーを表示をクリックします。

ポリシーが表示されるので、コピーをクリックします。

上記のポリシーをS3に設定していきます。
作成したS3バケットにアクセスし、アクセス許可>バケットポリシー>編集をクリックします。

先ほどコピーしたポリシーを貼り付け、エラーが出ていないことを確認して変更の保存をクリックします。

GuardDutyの設定画面に戻り、保存をクリックします。

発行先が正常に作成されました。と表示されていることを確認します。

正しく設定できている場合は、作成したS3バケットに「AWSLogs/」というフォルダが作成されています。

検出結果サンプルの作成
GuardDuty>設定>検出結果サンプルの生成をクリックするとGuardDutyの検出結果を生成することができます。


検出結果サンプルが正常に生成されましたと表示されたことを確認して、GuardDuty>検出結果をクリックします。

検出結果は、先ほど作成したS3バケットに格納することができます。また、結果をフィルターしてから保存することも可能です。
上記の設定は後述で説明します。
検出結果の格納頻度について
通常は、何時間に1回S3にエクスポートされるかが設定されています。
上記はGuardDuty>設定から確認することができます。
GuardDuty>設定>検出結果のエクスポートオプション>編集をクリックします。

6時間、1時間、15分を選ぶことができます。

結果のフィルター方法について
結果ページで、保存されたルールメニューの横にある結果のフィルタリングバーを選択します。これにより、プロパティフィルターの展開リストが表示されます。
例えば、S3をフィルターしたい場合はリソースタイプをS3にすれば、フィルターすることができます。
また、すでに確認した結果を表示させたくない場合はその結果のみをアーカイブすることもできます。
対象の結果を選択し、アクション>アーカイブとすることで設定できます。

アーカイブした結果は、ステータスをアーカイブ済みにすることで表示できます。

検出結果をS3バケットに格納する場合は、アクション>JSONを表示およびエクスポートをクリックします。

設定しているS3バケットを確認すると、AWSLogs/アカウントID/GuardDuty/ap-northeast-1/2025/08/18/のフォルダが作成され、結果が格納されていることを確認できました。

この後格納される結果は、日付が変わればそのたびに新しいフォルダが作成されることになります。
ダウンロードしたい結果にチェックを入れ、ダウンロードをクリックすることで結果をダウンロードすることができます。

詳細はAWSドキュメントをご確認ください。
GuardDuty での検出結果のフィルタリング - Amazon GuardDuty
まとめ
今回は、GuardDutyのサービス概要からご利用方法についてご説明しました。
次回はGuardDutyでEC2マルウェアスキャンを行う方法、重大なイベントを検知した際などの通知方法と、停止・無効化方法についてご説明します。
この記事が参考になれば幸いです。