翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
このチュートリアルでは、GuardDuty の実践入門を学習します。GuardDuty をスタンドアロンアカウントとして、または で GuardDuty 管理者として有効にするための最小要件 AWS Organizations については、ステップ 1 で説明します。ステップ 2 ~ 5 では、検出結果を最大限に活用するために、GuardDuty が推奨する追加機能の使用をカバーします。
トピック
[開始する前に]
GuardDuty は、 AWS CloudTrail 管理イベント、Amazon VPC フローログ、DNS Amazon Route 53 Resolver クエリログ基本データソースなどの をモニタリングする脅威検出サービスです。また、GuardDuty は、保護タイプに関連する機能を個別に有効にした場合にのみ分析します。機能には、Kubernetes 監査ログ、RDS ログインアクティビティ、Amazon S3 AWS CloudTrail のデータイベント、Amazon EBS ボリューム、Runtime Monitoring、Lambda ネットワークアクティビティログが含まれます。 Amazon S3 これらのデータソースおよび機能 (有効である場合) を使用して、GuardDuty はアカウントのセキュリティ結果を生成します。
GuardDuty を有効にすると、基本的なデータソースのアクティビティに基づいて、潜在的な脅威についてアカウントのモニタリングが開始されます。デフォルトでは、GuardDuty が有効になってい AWS アカウント るすべての に対して 拡張脅威検出が有効になります。この機能は、アカウント内の複数の基本的なデータソース、 AWS リソース、および時間にわたる複数ステージの攻撃シーケンスを検出します。特定の AWS リソースに対する潜在的な脅威を検出するには、GuardDuty が提供するユースケースに焦点を当てた保護プランを有効にすることを選択できます。詳細については、「GuardDuty の機能」を参照してください。
基本的なデータソースを明示的に有効にする必要はありません。S3 Protection を有効にした場合は、Amazon S3 データイベントのログ記録を明示的に有効にする必要はありません。同様に、EKS Protection を有効にした場合は、Amazon EKS 監査ログを明示的に有効にする必要はありません。Amazon GuardDuty は、これらのサービスから直接、データの独立したストリームを取得します。
新しい GuardDuty アカウントでは、 でサポートされている利用可能な保護タイプの一部 AWS リージョン が有効になり、デフォルトで 30 日間の無料トライアル期間に含まれます。それらのいずれか、またはすべての設定をオプトアウトできます。 AWS アカウント GuardDuty が有効になっている既存の がある場合は、リージョンで利用可能な保護プランの一部またはすべてを有効にすることができます。保護プランの概要とデフォルトで有効になる保護プランについては、「GuardDuty の料金」を参照してください。
GuardDuty を有効にするときは、次の項目を考慮してください。
-
GuardDuty はリージョンレベルのサービスです。つまり、このページで行う設定手順はすべて、GuardDuty を使用してモニタリングするリージョンごとに繰り返す必要があります。
サポートされているすべての AWS リージョンで GuardDuty を有効にすることを強くお勧めします。このように設定することで、GuardDuty はアクティブに使用されていないリージョンでも、許可されていないアクティビティや異常なアクティビティに関する検出結果を生成できます。これにより、GuardDuty は IAM などのグローバル AWS サービスの AWS CloudTrail イベントをモニタリングすることもできます。GuardDuty がサポートされているすべてのリージョンで有効になっていない場合、グローバルサービスに関連するアクティビティを検出する機能は低下します。GuardDuty を使用できるリージョンのリストについては、「リージョンとエンドポイント」を参照してください。
-
AWS アカウントの管理者権限を持つユーザーは誰でも GuardDuty を有効にできますが、最小特権のセキュリティのベストプラクティスに従って、GuardDuty を具体的に管理するための IAM ロール、ユーザー、またはグループを作成することをお勧めします。GuardDuty を有効にするために必要なアクセス権限の詳細については、「GuardDuty の有効化に必要な許可」を参照してください。
-
GuardDuty を任意の で初めて有効にすると AWS リージョン、デフォルトでは、Malware Protection for EC2 など、そのリージョンでサポートされているすべての利用可能な保護タイプも有効になります。GuardDuty は、サービスにリンクされた
AWSServiceRoleForAmazonGuardDuty
という名前のロールをアカウントに作成します。このロールには、GuardDuty がセキュリティ検出結果を生成するために、GuardDuty 基本データソース から直接イベントを消費および分析することを可能にする許可と信頼ポリシーが含まれます。Malware Protection for EC2 は、別のサービスにリンクされたAWSServiceRoleForAmazonGuardDutyMalwareProtection
という名前のロールをアカウントに作成します。このロールには、Malware Protection for EC2 がエージェントレススキャンを実行して GuardDuty アカウント内のマルウェアを検出できるようにするアクセス許可と信頼ポリシーが含まれます。これにより、GuardDuty はアカウントに EBS ボリュームスナップショットを作成し、そのスナップショットを GuardDuty サービスアカウントと共有できます。詳細については、「GuardDuty のためのサービスにリンクされたロールの許可」を参照してください。サービスにリンクされたロールの詳細については、「サービスリンクロールの使用」を参照してください。 -
任意のリージョンで初めて GuardDuty を有効にすると、そのリージョンの 30 日間の GuardDuty 無料トライアルに AWS アカウントが自動的に登録されます。
次の動画では、管理者アカウントで GuardDuty の使用を開始し、その後複数のメンバーアカウントで有効にする方法について説明します。
ステップ 1: Amazon GuardDuty を有効にする
GuardDuty を使用する最初のステップは、アカウントでそれを有効にすることです。有効にすると、GuardDuty は、直ちに現在のリージョンでセキュリティ脅威のモニタリングを開始します。
GuardDuty 管理者として、組織内の他のアカウントの GuardDuty の検出結果を管理する場合は、メンバーアカウントを追加し、それらのアカウントに対して GuardDuty を有効にする必要があります。
注記
GuardDuty は有効にしないで GuardDuty Malware Protection for S3 を有効にする場合の手順については、「GuardDuty Malware Protection for S3」を参照してください。
-
https://console.aws.amazon.com/guardduty/
で GuardDuty コンソールを開きます。 -
[Amazon GuardDuty - すべての機能] オプションを選択します。
-
[開始する] を選択します。
-
[GuardDuty にようこそ] ページで、サービス条件を表示します。[GuardDuty を有効にする] を選択します。
ステップ 2: サンプル検出結果を生成し、ベーシックなオペレーションの詳細を確認する
GuardDuty がセキュリティ上の問題を検出すると、検出結果が生成されます。GuardDuty の検出結果は、その固有のセキュリティ問題に関する詳細を含むデータセットです。検出結果の詳細を使用して、問題の調査に役立てることができます。
GuardDuty は、placeholder 値を使用したサンプル検出結果の生成をサポートしています。このサンプルを使用して、GuardDuty の機能をテストし、検出結果を理解してから GuardDuty によって発見された実際のセキュリティ問題に馴染むために使われます。GuardDuty で利用可能な各検出結果タイプのサンプル検出結果を生成するには、以下のガイドに従ってください。アカウント内でシミュレートされたセキュリティイベントを生成するなど、サンプル検出結果を生成するその他の方法については、「サンプルの検出結果」を参照してください。
サンプル検出結果を作成して調査するには
-
ナビゲーションペインで [設定] を選択します。
-
[設定] ページの [結果のサンプル] で、[結果サンプルの生成] を選択します。
-
ナビゲーションペインで、概要 を選択して、 AWS 環境で生成された結果に関するインサイトを表示します。概要ダッシュボードのコンポーネントの詳細については、「Amazon GuardDuty の [要約] ダッシュボード」を参照してください。
-
ナビゲーションペインで [結果] を選択します。[Current findings] (最近の結果) ページに [SAMPLE] とプレフィックスされたサンプル検出結果が表示されます。
-
リストから検出結果を選択して、検出結果の詳細を表示します。
-
検出結果の詳細ペインで使用可能なさまざまな情報フィールドを確認できます。検出結果のタイプが異なると、フィールドが異なる場合があります。すべての検出結果タイプで使用可能なフィールドの詳細については、「検出結果の詳細」を参照してください。詳細ペインから、次のアクションを実行できます。
-
ペインの一番上の [結果 ID] を選択し、検出結果のための完全な JSON 詳細を開きます。完全な JSON ファイルは、このパネルからダウンロードすることもできます。JSON には、コンソールビューに含まれない追加情報が含まれており、他のツールやサービスで取り込むことができる形式です。
-
[影響を受けるリソース] セクションを表示します。実際の検出結果では、この情報は調査すべきアカウント内のリソースを特定するのに役立ち、実用的なリソース AWS Management Console に適した へのリンクが含まれます。
-
「+」または「-」の虫眼鏡アイコンを選択して、その詳細の包括的または排他的なフィルターを作成します。検出結果フィルターの詳細については、「GuardDuty での検出結果のフィルタリング」を参照してください。
-
-
-
サンプル検出結果をすべてアーカイブする
-
リストの上部にあるチェックボックスを選んで、すべての検出結果を選択します。
-
保持したい検出結果を選択解除します。
-
[アクション] メニューを選択し、[アーカイブ] をクリックして、サンプルの検出結果を非表示にします。
注記
Actions メニューを見るために、[最新] を選択し、検出結果ビューを切り替えるために [アーカイブ] を選択してください。
-
ステップ 3: Amazon S3 バケットへの GuardDuty の検出結果のエクスポートを設定する
GuardDuty では、検出結果のエクスポートを設定することをお勧めします。これにより、GuardDuty の 90 日間の保持期間を超えた無期限のストレージとして S3 バケットに検出結果をエクスポートできます。これにより、検出結果の記録を保持したり、 AWS 環境内の問題を経時的に追跡したりできます。GuardDuty は、 AWS Key Management Service () を使用して S3 バケットの検出結果データを暗号化しますAWS KMS key。設定を構成するには、GuardDuty に KMS キーのアクセス許可を付与する必要があります。詳細な手順については、「」を参照してください生成された検出結果を Amazon S3 にエクスポートする。
GuardDuty の検出結果を Amazon S3 バケットにエクスポートするには
KMS キーにポリシーをアタッチする
-
にサインイン AWS Management Console し、https://console.aws.amazon.com/kms
で AWS Key Management Service (AWS KMS) コンソールを開きます。 -
を変更するには AWS リージョン、ページの右上隅にあるリージョンセレクタを使用します。
-
ナビゲーションペインで、[カスタマーマネージドキー] を選択します。
-
既存の KMS キーを選択するか、「 デベロッパーガイド」の「対称暗号化 KMS キーを作成する」の手順を実行します。 AWS Key Management Service
KMS キーと Amazon S3 バケットのリージョンは同じである必要があります。
後のステップで使用するために、キー ARN をメモ帳にコピーします。
-
KMS キーのキーポリシーセクションで、編集を選択します。[ポリシービューへの切り替え] が表示された場合はそれを選択して [キーポリシー] を表示してから、[編集] を選択します。
-
次のポリシーブロックを KMS キーポリシーにコピーします。
{ "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 キーの Amazon リソースネーム (ARN) に置き換えます。キー ARN を検索するには、「AWS Key Management Service 開発者ガイド」の「Finding the key ID and ARN」を参照してください。 -
123456789012
は、検出結果をエクスポートする GuardDuty アカウントを所有する AWS アカウント ID に置き換えます。 -
Region2
を、GuardDuty の検出結果が生成され AWS リージョン る に置き換えます。 -
SourceDetectorID
は、検出結果が生成された特定のリージョンの GuardDuty アカウントのdetectorID
に置き換えます。アカウントと現在のリージョンの
detectorId
を検索するには、https://console.aws.amazon.com/guardduty/コンソールの [設定] ページを参照するか、ListDetectors API を実行します。
-
-
Amazon S3 バケットにポリシーをアタッチする
これらの検出結果をエクスポートする Amazon S3 バケットがまだない場合は、「Amazon S3 ユーザーガイド」の「バケットの作成」を参照してください。
-
[バケットポリシーを編集] ページが表示されるまで、「Amazon S3 ユーザーガイド」の「バケットポリシーを作成または編集するには」の手順を実行します。
-
次のポリシー例は、Amazon S3 バケットに検出結果をエクスポートする許可を GuardDuty に付与する方法を示しています。検出結果のエクスポートを設定した後にパスを変更する場合は、新しい場所に対する許可を付与するように、ポリシーを変更する必要があります。
次のポリシー例をコピーし、[バケットポリシーエディタ] に貼り付けます。
最後のステートメントの前にポリシーステートメントを追加した場合は、このステートメントを追加する前にカンマを追加します。KMS キーポリシーの JSON 構文が有効であることを確認します。
S3 バケットポリシーの例
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow GetBucketLocation", "Effect": "Allow", "Principal": { "Service": "guardduty.amazonaws.com" }, "Action": "s3:GetBucketLocation", "Resource": "
Amazon S3 bucket ARN
", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012
", "aws:SourceArn": "arn:aws:guardduty:Region2
:123456789012
:detector/SourceDetectorID
" } } }, { "Sid": "Allow PutObject", "Effect": "Allow", "Principal": { "Service": "guardduty.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "Amazon S3 bucket ARN/[optional prefix]
/*", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012
", "aws:SourceArn": "arn:aws:guardduty:Region2
:123456789012
:detector/SourceDetectorID
" } } }, { "Sid": "Deny unencrypted object uploads", "Effect": "Deny", "Principal": { "Service": "guardduty.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "Amazon S3 bucket ARN/[optional prefix]
/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "aws:kms" } } }, { "Sid": "Deny incorrect encryption header", "Effect": "Deny", "Principal": { "Service": "guardduty.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "Amazon S3 bucket ARN/[optional prefix]
/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "KMS key ARN
" } } }, { "Sid": "Deny non-HTTPS access", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "Amazon S3 bucket ARN/[optional prefix]
/*", "Condition": { "Bool": { "aws:SecureTransport": "false" } } } ] } -
ポリシーの例で
赤
でフォーマットされている次の値を置き換えることにより、ポリシーを編集します。-
Amazon S3 bucket ARN
は、Amazon S3 バケットの Amazon リソースネーム (ARN) に置き換えます。[バケット ARN] は、https://console.aws.amazon.com/s3/コンソールの [バケットポリシーを編集] ページで確認できます。 -
123456789012
は、検出結果をエクスポートする GuardDuty アカウントを所有する AWS アカウント ID に置き換えます。 -
Region2
は、GuardDuty の検出結果が生成される AWS リージョン に置き換えます。 -
SourceDetectorID
は、検出結果が生成された特定のリージョンの GuardDuty アカウントのdetectorID
に置き換えます。アカウントと現在のリージョンの
detectorId
を検索するには、https://console.aws.amazon.com/guardduty/コンソールの [設定] ページを参照するか、ListDetectors API を実行します。 -
S3 bucket ARN/[optional prefix]
プレースホルダー値の[optional prefix]
部分は、検出結果をエクスポートするオプションのフォルダの場所に置き換えます。プレフィックスの使用の詳細については、「Amazon S3 ユーザーガイド」の「プレフィックスを使用してオブジェクトを整理する」を参照してください。まだ存在していないオプションのフォルダの場所を指定した場合、GuardDuty は、S3 バケットに関連付けられたアカウントが検出結果をエクスポートしているアカウントと同じ場合にのみ、その場所を作成します。別のアカウントに属する S3 バケットに検出結果をエクスポートする場合は、このフォルダの場所が既に存在している必要があります。
-
KMS key ARN
は、S3 バケットにエクスポートされた検出結果の暗号化に関連付けられた KMS キーの Amazon リソースネーム (ARN) に置き換えます。キー ARN を検索するには、「AWS Key Management Service 開発者ガイド」の「Finding the key ID and ARN」を参照してください。
-
-
GuardDuty コンソールのステップ
https://console.aws.amazon.com/guardduty/
で GuardDuty コンソールを開きます。 -
ナビゲーションペインで [設定] を選択します。
-
[設定] ページの [検出結果のエクスポートオプション] で、[S3 バケット] の [今すぐ設定] (または必要に応じて [編集]) を選択します。
-
S3 バケット ARN には、結果を送信する
bucket ARN
を入力します。バケット ARN を表示するには、「Amazon S3 ユーザーガイド」の「S3 バケットのプロパティの表示」を参照してください。 Amazon S3 -
[KMS キー ARN] で、
key ARN
を入力します。キー ARN を見つけるには、「 AWS Key Management Service デベロッパーガイド」の「キー ID とキー ARN を検索する」を参照してください。 -
[Save] を選択します。
ステップ 4: SNS を使用して GuardDuty の検出結果アラートを設定する
GuardDuty は、Amazon EventBridge と統合されており、これを使用して、検出結果データを他のアプリケーションやサービスに送信して処理することができます。EventBridge では、GuardDuty の検出結果を使用して、検出結果イベントを AWS Lambda 関数、Amazon EC2 Systems Manager オートメーション、Amazon Simple Notification Service (SNS) などのターゲットに接続することで、検出結果への自動応答を開始できます。
この例では、EventBridge ルールのターゲットとなる SNS トピックを作成し、EventBridge を使用して GuardDuty から検出結果データをキャプチャするルールを作成します。結果として得られるルールは、検出結果の詳細をメールアドレスに転送します。検出結果を Slack または Amazon Chime に送信する方法、および送信される検出結果のアラートタイプを変更する方法については、「Amazon SNS トピックおよびエンドポイントの設定」を参照してください。
検出結果アラートの SNS トピックを作成するには
-
Amazon SNS コンソール (https://console.aws.amazon.com/sns/v3/home
) を開きます。 -
ナビゲーションペインで、[トピック] を選択してください。
-
[トピックの作成] を選択します。
-
[Type] (タイプ) に、[Standard] (標準) を選択します。
-
[名前] に
GuardDuty
と入力します。 -
[トピックの作成] を選択します。新しいトピックのトピック詳細が開きます。
-
[サブスクリプション] セクションで、[サブスクリプションの作成] を選択します。
-
[プロトコル] で [E メール] を選択します。
-
[Endpoint] (エンドポイント) に、通知を送信する先の E メールアドレスを入力します。
-
[Create subscription] (サブスクリプションの作成) を選択します。
サブスクリプションを作成した後に、E メールを通してサブスクリプションを確認する必要があります。
-
サブスクリプションメッセージを確認するには、E メールの受信ボックスに移動して、サブスクリプションメッセージで [Confirm subscription] (サブスクリプションの確認) を選択します。
注記
メール確認のステータスを確認するには、SNS コンソールに移動して [Subscriptions] (サブスクリプション) を選択します。
GuardDuty の検出結果をキャプチャしてフォーマットする EventBridge ルールを作成するには
-
https://console.aws.amazon.com/events/
で EventBridge コンソールを開きます。 -
ナビゲーションペインで [ルール] を選択します。
-
[ルールの作成] を選択します。
-
ルールの名前と説明を入力します。
ルールには同じリージョン内および同じイベントバス上の別のルールと同じ名前を付けることはできません。
-
[イベントバス] として、[デフォルト] を選択します。
-
[ルールタイプ] では、[イベントパターンを持つルール] を選択します。
-
[Next] (次へ) を選択します。
-
[Event source] (イベントソース) で、[AWS events] (イベント) を選択します。
-
[イベントパターン] で、[イベントパターンフォーム] を選択します。
-
[イベントパターンフォーム] では、AWS [サービス] を選択します。
-
[AWS service] ( サービス) では、[GuardDuty] を選択します。
-
[Event Type] (イベントタイプ) では、[GuardDuty Finding] (GuardDuty の検出結果) を選択します。
-
[Next] (次へ) を選択します。
-
[ターゲットタイプ] では、AWS [サービス] を選択します。
-
[Select a target] (ターゲットの選択) では、[SNS topic] (SNS トピック) を選択し、[Topic] (トピック) では、以前に作成した SNS トピックの名前を選択します。
-
[Additional settings] (追加設定) セクションの [Configure target input] (ターゲット入力の設定) では、[Input transformer] (入力トランスフォーマー) を選択します。
入力トランスフォーマーを追加すると、GuardDuty から送信される JSON 検出結果データが、人が読み取り可能なメッセージに書式設定されます。
-
[Configure input transformer] (入力トランスフォーマーの設定) を選択します。
-
[Target input transformer] (ターゲット入力トランスフォーマー) セクションで、[Input path] (入力パス) に以下のコードを貼り付けます。
{ "severity": "$.detail.severity", "Finding_ID": "$.detail.id", "Finding_Type": "$.detail.type", "region": "$.region", "Finding_description": "$.detail.description" }
-
E メールをフォーマットするには、[テンプレート] に次のコードを貼り付けて、赤色のテキストを自分のリージョンに適した値に置き換えてください。
"You have a severity
severity
GuardDuty finding typeFinding_Type
in theRegion_Name
Region." "Finding Description:" "Finding_Description
." "For more details open the GuardDuty console at https://console.aws.amazon.com/guardduty/home?region=region
#/findings?search=id%3DFinding_ID
" -
[確認] を選択します。
-
[次へ] をクリックします。
-
(オプション) ルールに 1 つ以上のタグを入力します。詳細については、Amazon EventBridge ユーザーガイドのAmazon EventBridge のタグを参照してください。
-
次へをクリックします。
-
ルールの詳細を確認し、[ルールの作成] を選択します。
-
(オプション) ステップ 2 のプロセスでサンプル検出結果を生成して、新しいルールをテストします。生成されたサンプル検出結果ごとにメールが届きます。
次のステップ
GuardDuty を引き続き使用すると、環境に関連する検出結果の種類を理解できるようになります。新しい検出結果を受け取ったときはいつでも、検出結果の詳細ペイン中の検出結果の記述から [詳細はこちら] を選択することにより、あるいは GuardDuty 検出結果タイプ の検出結果名を探すことにより、その検出結果に関する修復に関するレコメンデーションを含む情報を検索できます。
以下の機能は、GuardDuty が AWS 環境に最も関連性の高い検出結果を提供できるように調整するのに役立ちます。
-
インスタンス ID、アカウント ID、S3 バケット名などの特定の条件に基づいて検出結果を簡単に並べ替えるには、GuardDuty 内でフィルターを作成して保存できます。詳細については、「GuardDuty での検出結果のフィルタリング」を参照してください。
-
環境内で予想される動作に関する検出結果を受け取っている場合は、[suppression rules] (抑制ルール) で定義した基準に基づいて検出結果を自動的にアーカイブできます。
-
信頼できる IP のサブセットから検出結果を生成しないようにしたり、GuardDuty が通常のモニタリング範囲外の IP をモニタリングするには、[Trusted IP and threat lists] (信頼されている IP および脅威リスト) をセットアップできます。