株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

【AWS】GuardDutyとは Part1~サービス概要から利用方法~

皆様こんにちは!

ネットワールドでAWSやMicrosoftのクラウド製品を担当しているSEの碇です。

 

本日は、AWSのGuardDutyというサービスについて、サービス概要からご利用方法まで、ご説明しようと思います。

Amazon 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を有効にするをクリックします。

GuardDutyを有効にする

GuardDutyの有効化はこれで完了です。

 

GuardDutyの検出結果をS3バケットにエクスポートする

GuardDuty は生成された検出結果を 90 日間保持します。
生成された検出結果は、必要に応じてS3バケットにエクスポートすることができます。
ここでは、GuardDutyの検出結果をS3バケットにエクスポートする手順をご説明します。

 

KMSキーの作成

S3バケットを暗号化するためにAWS KMSキーを作成する必要があります。
KMSキーはS3バケットと同じリージョンに作成する必要があります。

Key Management Service (KMS)>キーの作成をクリックします。

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をクリックしコピーします。

KMSキーのARN

キーポリシー


123456789012

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

アカウントID

キーポリシー

 

・"arn:aws:guardduty:Region2:123456789012:detector/SourceDetectorID"

Region2
キーのリージョンとなります。
先ほどコピーしたARNのリージョン部分(下記はap-northeast-1)をコピーします。

キーのリージョン

 

123456789012
アカウントIDとなります。アカウントIDについては、先ほどご説明した通りです。

SourceDetectorID
GuardDutyアカウントの detectorIDとなります。

GuardDuty>設定をクリックし、ディテクターIDをクリックしてコピーしてください。

ディテクターID

キーポリシー

上記のKMSキーポリシーについては、

GuardDuty>設定>検出結果のエクスポート設定を編集>ポリシーをアタッチ>KMSキーのポリシーを表示

でも確認することができます。

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バケットポリシーをコピー

 

上記のポリシーをS3に設定していきます。

作成したS3バケットにアクセスし、アクセス許可>バケットポリシー>編集をクリックします。

S3バケットポリシーの編集

 

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

S3バケットポリシーの保存

 

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

Guarddutyの検出結果のエクスポート設定を保存

 

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

発行先が正常に作成されました

 

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

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/のフォルダが作成され、結果が格納されていることを確認できました。

S3バケットに検出結果がエクスポートされている

 

この後格納される結果は、日付が変わればそのたびに新しいフォルダが作成されることになります。

ダウンロードしたい結果にチェックを入れ、ダウンロードをクリックすることで結果をダウンロードすることができます。

検出結果のダウンロード

 

詳細はAWSドキュメントをご確認ください。

GuardDuty での検出結果のフィルタリング - Amazon GuardDuty

 

まとめ

今回は、GuardDutyのサービス概要からご利用方法についてご説明しました。

次回はGuardDutyでEC2マルウェアスキャンを行う方法、重大なイベントを検知した際などの通知方法と、停止・無効化方法についてご説明します。
この記事が参考になれば幸いです。