翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
の開始方法 GuardDuty
このチュートリアルでは、 の実践的な概要を説明します GuardDuty。をスタンドアロンアカウント GuardDuty または の GuardDuty 管理者として有効にするための最小要件 AWS Organizations については、ステップ 1 で説明します。ステップ 2~5 では、 が推奨する追加機能を使用して検出結果 GuardDuty を最大限に活用します。
トピック
[開始する前に]
GuardDuty は、 AWS CloudTrail 管理イベント、Amazon VPC Flow Logs、クエリログ基礎データソースなどの をモニタリングする脅威検出サービスです。 GuardDuty は、 Amazon Route 53 Resolver DNS保護タイプに関連付けられた機能を個別に有効にする場合にのみ分析します。機能には、Kubernetes 監査ログ、RDSログインアクティビティ、Amazon S3 AWS CloudTrail のデータイベント、Amazon EBSボリューム、Runtime Monitoring、Lambda ネットワークアクティビティログが含まれます。 Amazon S3 これらのデータソースと機能 (有効になっている場合) を使用して、 はアカウントのセキュリティ検出結果 GuardDuty を生成します。
を有効にすると GuardDuty、基本的なデータソースのアクティビティに基づいて、潜在的な脅威についてアカウントのモニタリングが開始されます。デフォルトでは、 拡張脅威検出が有効になってい AWS アカウント るすべての に対して が有効になっています GuardDuty。この機能は、アカウント内の複数の基本的なデータソース、 AWS リソース、および時間にわたる複数ステージの攻撃シーケンスを検出します。特定の AWS リソースに対する潜在的な脅威を検出するには、 GuardDuty が提供するユースケースに重点を置いた保護プランを有効にすることを選択できます。詳細については、「の機能 GuardDuty」を参照してください。
基本的なデータソースを明示的に有効にする必要はありません。S3 Protection を有効にした場合は、Amazon S3 データイベントのログ記録を明示的に有効にする必要はありません。同様に、EKS保護を有効にすると、Amazon EKS 監査ログを明示的に有効にする必要はありません。Amazon は、これらのサービスから直接独立したデータストリーム GuardDuty を取得します。
新しい GuardDuty アカウントでは、 でサポートされている利用可能な保護タイプの一部 AWS リージョン が有効になり、デフォルトで 30 日間の無料トライアル期間に含まれます。それらのいずれか、またはすべての設定をオプトアウトできます。 AWS アカウント GuardDuty が有効になっている既存の がある場合は、リージョンで利用可能な保護プランのいずれかまたはすべてを有効にすることができます。保護プランの概要とデフォルトで有効になる保護プランについては、「の料金 GuardDuty」を参照してください。
有効にするときは GuardDuty、次の項目を考慮してください。
-
GuardDuty はリージョンサービスです。つまり、このページで実行する設定手順は、モニタリングする各リージョンで繰り返す必要があります GuardDuty。
サポートされているすべての AWS リージョン GuardDuty で を有効にすることを強くお勧めします。これにより GuardDuty 、 は、アクティブに使用していないリージョンでも、許可されていないアクティビティや異常なアクティビティに関する検出結果を生成できます。これにより、 GuardDuty は などのグローバル AWS サービスの AWS CloudTrail イベントをモニタリングすることもできますIAM。サポートされているすべてのリージョンで が有効になってい GuardDuty ない場合、グローバルサービスに関連するアクティビティを検出する機能は低下します。 GuardDuty が利用可能なリージョンの完全なリストについては、「」を参照してくださいリージョンとエンドポイント。
-
AWS アカウントの管理者権限を持つユーザーは GuardDuty、 を有効にできますが、最小特権のセキュリティのベストプラクティスに従って、 IAMロール、ユーザー、またはグループを作成して、特に を管理する GuardDutyことをお勧めします。を有効にするために必要なアクセス許可については、 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 Malware Protection for S3 を有効にする場合は GuardDuty、「」を参照してくださいGuardDuty Malware Protection for S3。
ステップ 2: サンプル検出結果を生成し、ベーシックなオペレーションの詳細を確認する
がセキュリティ問題 GuardDuty を検出すると、検出結果が生成されます。 GuardDuty 検出結果は、その固有のセキュリティ問題に関する詳細を含むデータセットです。検出結果の詳細を使用して、問題の調査に役立てることができます。
GuardDuty では、プレースホルダー値を使用したサンプル検出結果の生成がサポートされています。プレースホルダー値を使用すると、 によって検出された実際のセキュリティ問題に対応する前に GuardDuty 、機能をテストし、検出結果に慣れることができます GuardDuty。以下のガイドに従って GuardDuty、利用可能な各検出結果タイプのサンプル検出結果を生成します。アカウント内でシミュレートされたセキュリティイベントを生成するなど、サンプル検出結果を生成するその他の方法については、「」を参照してくださいサンプルの検出結果。
サンプル検出結果を作成して調査するには
-
ナビゲーションペインで [設定] を選択します。
-
[設定] ページの [結果のサンプル] で、[結果サンプルの生成] を選択します。
-
ナビゲーションペインで、概要 を選択して、 AWS 環境で生成された結果に関するインサイトを表示します。概要ダッシュボードのコンポーネントの詳細については、「Amazon の概要ダッシュボード GuardDuty」を参照してください。
-
ナビゲーションペインで [結果] を選択します。検出結果のサンプルは、現在の検出結果ページにプレフィックス 〔SAMPLE〕 で表示されます。
-
リストから検出結果を選択して、検出結果の詳細を表示します。
-
検出結果の詳細ペインで使用可能なさまざまな情報フィールドを確認できます。検出結果のタイプが異なると、フィールドが異なる場合があります。すべての検出結果タイプで使用可能なフィールドの詳細については、「検出結果の詳細」を参照してください。詳細ペインから、次のアクションを実行できます。
-
ペインの上部にある検出結果 ID を選択して、検出結果の完全なJSON詳細を開きます。完全なJSONファイルは、このパネルからダウンロードすることもできます。JSON には、コンソールビューに含まれていない追加情報が含まれており、他のツールやサービスで取り込むことができる形式です。
-
[影響を受けるリソース] セクションを表示します。実際の検出結果では、この情報は調査すべきアカウント内のリソースを特定するのに役立ちます。また、実用的なリソース AWS Management Console に適した へのリンクが含まれます。
-
「+」または「-」の虫眼鏡アイコンを選択して、その詳細の包括的または排他的なフィルターを作成します。検出結果フィルターの詳細については、「での検出結果のフィルタリング GuardDuty」を参照してください。
-
-
-
サンプル検出結果をすべてアーカイブする
-
リストの上部にあるチェックボックスを選んで、すべての検出結果を選択します。
-
保持したい検出結果を選択解除します。
-
[アクション] メニューを選択し、[アーカイブ] をクリックして、サンプルの検出結果を非表示にします。
注記
Actions メニューを見るために、[最新] を選択し、検出結果ビューを切り替えるために [アーカイブ] を選択してください。
-
ステップ 3: Amazon S3 バケットへの GuardDuty 検出結果のエクスポートを設定する
GuardDuty では、 GuardDuty 90 日間の保持期間を超えて無期限に保存するために、検出結果を S3 バケットにエクスポートする設定を推奨しています。これにより、検出結果の記録を保持したり、 AWS 環境内の問題を経時的に追跡したりできます。 は、 AWS Key Management Service () を使用して S3 バケット内の検出結果データを GuardDuty 暗号化します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キーを選択するか、「 AWS Key Management Service デベロッパーガイド」の「対称暗号化KMSキーを作成する」の手順を実行します。
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
" } } }ポリシー例の
red
でフォーマットされた次の値を置き換えて、ポリシーを編集します。-
をKMSキーの Amazon リソースネーム (ARN)
KMS key ARN
に置き換えます。キーを見つけるにはARN、「 AWS Key Management Service デベロッパーガイド」の「キー ID の検索」およびARN「」を参照してください。 -
を、結果をエクスポートする GuardDuty アカウントを所有する AWS アカウント ID
123456789012
に置き換えます。 -
を、 GuardDuty 検出結果が生成される AWS リージョン
Region2
に置き換えます。 -
detectorID
を、結果が生成された特定のリージョンの GuardDuty アカウントのSourceDetectorID
に置き換えます。アカウントと現在のリージョン
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" } } } ] } -
ポリシー例の
red
でフォーマットされた次の値を置き換えて、ポリシーを編集します。-
を Amazon S3 バケットの Amazon リソースネーム (ARN)
Amazon S3 bucket ARN
に置き換えます。 Amazon S3 バケットARNは、 https://console.aws.amazon.com/s3/コンソールのバケットポリシーの編集ページにあります。 -
を、結果をエクスポートする GuardDuty アカウントを所有する AWS アカウント ID
123456789012
に置き換えます。 -
を、 AWS リージョン GuardDuty 検出結果が生成される
Region2
に置き換えます。 -
detectorID
を、結果が生成された特定のリージョンの GuardDuty アカウントのSourceDetectorID
に置き換えます。アカウントと現在のリージョン
detectorId
の を検索するには、https://console.aws.amazon.com/guardduty/コンソールの設定ページを参照するか、 ListDetectors API. -
S3 bucket ARN/[optional prefix]
プレースホルダー値[optional prefix]
の一部を、検出結果をエクスポートするオプションのフォルダの場所に置き換えます。プレフィックスの使用の詳細については、「Amazon S3 ユーザーガイド」の「プレフィックスを使用してオブジェクトを整理する」を参照してください。まだ存在しないオプションのフォルダの場所を指定すると、S3 バケットに関連付けられたアカウントが検出結果をエクスポートするアカウントと同じである場合にのみ、 はその場所 GuardDuty を作成します。別のアカウントに属する S3 バケットに検出結果をエクスポートする場合は、このフォルダの場所が既に存在している必要があります。
-
を、S3 バケットにエクスポートされた検出結果の暗号化に関連付けられたKMSキーの Amazon リソースネーム (ARN)
KMS key ARN
に置き換えます。キー を見つけるにはARN、「 AWS Key Management Service デベロッパーガイド」の「キー ID の検索」およびARN「」を参照してください。
-
-
GuardDuty コンソールのステップ
で GuardDuty コンソールを開きますhttps://console.aws.amazon.com/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: を使用して検出 GuardDuty 結果アラートを設定する SNS
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トピックを作成するには
-
https://console.aws.amazon.com/sns/v3/home
で Amazon SNSコンソールを開きます。 -
ナビゲーションペインで、[トピック] を選択します。
-
[トピックの作成] を選択します。
-
[Type] (タイプ) に、[Standard] (標準) を選択します。
-
[名前] に
GuardDuty
と入力します。 -
[トピックの作成] を選択します。新しいトピックのトピック詳細が開きます。
-
[サブスクリプション] セクションで、[サブスクリプションの作成] を選択します。
-
[プロトコル] で [E メール] を選択します。
-
[Endpoint] (エンドポイント) に、通知を送信する先の E メールアドレスを入力します。
-
[Create subscription] (サブスクリプションの作成) を選択します。
サブスクリプションを作成した後に、E メールを通してサブスクリプションを確認する必要があります。
-
サブスクリプションメッセージを確認するには、E メールの受信ボックスに移動して、サブスクリプションメッセージで [Confirm subscription] (サブスクリプションの確認) を選択します。
注記
E メールの確認ステータスを確認するには、 SNSコンソールに移動し、サブスクリプションを選択します。
GuardDuty 検出結果をキャプチャしてフォーマットする EventBridge ルールを作成するには
-
で EventBridge コンソールを開きますhttps://console.aws.amazon.com/events/
。 -
ナビゲーションペインで [ルール] を選択します。
-
[ルールの作成] を選択します。
-
ルールの名前と説明を入力します。
ルールには、同じリージョン内および同じイベントバス上の別のルールと同じ名前を付けることはできません。
-
[イベントバス] として、[デフォルト] を選択します。
-
[ルールタイプ] では、[イベントパターンを持つルール] を選択します。
-
[Next] (次へ) を選択します。
-
[Event source] (イベントソース) で、[AWS events] (イベント) を選択します。
-
[イベントパターン] で、[イベントパターンフォーム] を選択します。
-
[イベントパターンフォーム] では、AWS [サービス] を選択します。
-
[AWS のサービス] で、[GuardDuty] を選択します。
-
イベントタイプ で、GuardDuty検出結果 を選択します。
-
[Next (次へ)] を選択します。
-
[ターゲットタイプ] で、[AWS のサービス] を選択します。
-
「ターゲットの選択」でSNS「トピック」を選択し、「トピック」で、前に作成したSNSトピックの名前を選択します。
-
[Additional settings] (追加設定) セクションの [Configure target input] (ターゲット入力の設定) では、[Input transformer] (入力トランスフォーマー) を選択します。
入力トランスフォーマーを追加すると、 から送信されたJSON検出結果が人間が読めるメッセージ GuardDuty にフォーマットされます。
-
[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 ユーザーガイド」の「Amazon EventBridge タグ」を参照してください。 EventBridge
-
[Next (次へ)] を選択します。
-
ルールの詳細を確認し、[ルールの作成] を選択します。
-
(オプション) ステップ 2 のプロセスでサンプル検出結果を生成して、新しいルールをテストします。生成されたサンプル検出結果ごとにメールが届きます。
次のステップ
を引き続き使用すると GuardDuty、環境に関連する検出結果のタイプを理解できるようになります。新しい検出結果を受け取ったときはいつでも、検出結果の詳細ペイン中の検出結果の記述から [詳細はこちら] を選択することにより、あるいは GuardDuty 検出結果タイプ の検出結果名を探すことにより、その検出結果に関する修復に関するレコメンデーションを含む情報を検索できます。
以下の機能は、 AWS 環境に最も関連性の高い検出結果を提供 GuardDuty できるように を調整するのに役立ちます。
-
インスタンス ID、アカウント ID、S3 バケット名などの特定の基準に基づいて結果を簡単にソートするには、 内でフィルターを作成して保存できます GuardDuty。詳細については、「での検出結果のフィルタリング GuardDuty」を参照してください。
-
環境内で予想される動作に関する検出結果を受け取っている場合は、[suppression rules] (抑制ルール) で定義した基準に基づいて検出結果を自動的にアーカイブできます。
-
信頼できる のサブセットから検出結果が生成されないようにしたりIPs、通常のモニタリング範囲外のモニタリングを行った GuardDuty IPsりするには、信頼できる IP と脅威のリストを設定できます。