GuardDuty の開始方法 - Amazon GuardDuty

GuardDuty の開始方法

このチュートリアルでは、GuardDuty の実践入門を学習します。GuardDuty をスタンドアロンアカウントとして、または AWS Organizations を用いて GuardDuty 管理者として有効にするための最小要件はステップ 1 で説明します。ステップ 2 ~ 5 では、検出結果を最大限に活用するために、GuardDuty が推奨する追加機能の使用をカバーします。

開始する前に

GuardDuty は、AWS CloudTrail 管理イベント、および Amazon S3、DNS ログ、Amazon EKS 監査ログ、Amazon VPC フローログの AWS CloudTrail データイベントを監視する脅威検出サービスです。また、Amazon GuardDuty の Malware Protection の Amazon EBS ボリュームデータを分析します。これらは GuardDuty 内で個別に有効にする必要があります。これらのデータソースを使用して、GuardDuty はアカウントのセキュリティ結果を生成します。GuardDuty を有効にすると、すぐに環境のモニタリングが開始されます。GuardDuty はいつでも無効化して、AWS CloudTrail 管理イベント、および S3、DNS ログ、EKS 監査ログ、EBS ボリュームデータ、VPC フローログの AWS CloudTrail データイベントを処理しないように設定できます。

注記

GuardDuty サービスを有効にする前に、AWS CloudTrail 管理イベント、および S3、DNS ログ、EKS 監査ログ、VPC フローログの AWS CloudTrail データイベントを有効にする必要はありません。Amazon GuardDuty は、これらのサービスから直接、データの独立したストリームを取得します。新しい GuardDuty アカウントでは、GuardDuty Kubernetes Protection、Malware Protection、および S3 Protection がデフォルトで有効になっており、それらの一部またはすべてをオプトアウトできます。既存の GuardDuty のお客様は、GuardDuty Kubernetes Protection、Malware Protection、S3 Protection のいずれか、またはすべての保護プランを有効にするよう選択できます。詳細については、「Amazon GuardDuty でデータソースを使用する方法」を参照してください。

GuardDuty の有効化については、次の点に注意してください

  • GuardDuty はリージョンレベルのサービスです。つまり、このページで従う構成手順はすべて、GuardDuty でモニタリングしたいリージョンごとに繰り返す必要があります。

    AWS は、サポートされているすべてのリージョンで GuardDuty を有効にすることを強くお勧めします。このように設定することで、GuardDuty はアクティブに使用されていないリージョンでも、許可されていないアクティビティや異常なアクティビティに関する検出結果を生成できます。また、これにより GuardDuty が有効となり、IAM などのグローバルな AWS のサービスのための AWS CloudTrail イベントのモニタリングが可能となります。GuardDuty がサポートされているすべてのリージョンで有効になっていない場合、グローバルサービスに関連するアクティビティを検出する機能は低下します。GuardDuty がサポートされているリージョンの詳細リストについては、「リージョンとエンドポイント」を参照してください。

  • AWS アカウントに 管理者アクセス権を持つユーザーは、誰でも GuardDuty を有効にできますが、最小特権というセキュリティのベストプラクティスに従って、GuardDuty を専門に管理するために、IAM ユーザー、ロール、またはグループを作成することをお勧めします。GuardDuty を有効化するために必要な許可の詳細については、「GuardDuty の有効化に必要な許可」を参照してください。

  • いずれかのリージョンで GuardDuty をはじめて有効にすると、AWSServiceRoleForAmazonGuardDuty というアカウントのサービスにリンクされたロールが作成されます。このロールには、GuardDuty がセキュリティ検出結果を生成するために、AWS CloudTrail、VPC フローログ、および DNS ログから直接イベントを消費および分析することを可能にする許可と信頼ポリシーが含まれます。詳細については、「GuardDuty のためのサービスにリンクされたロールの許可」を参照してください。サービスにリンクされたロールの詳細については、「サービスリンクロールの使用」を参照してください。

  • どのリージョンにおいても、初めて GuardDuty を有効にすると、AWS アカウントは、そのリージョンでの 30 日間の GuardDuty の無料トライアルに自動的に登録されます。

ステップ 1: Amazon GuardDuty を有効にする

GuardDuty を使用する最初のステップは、アカウントでそれを有効にすることです。有効にすると、GuardDuty は、直ちに現在のリージョンのセキュリティ脅威のモニタリングを開始します。

GuardDuty 管理者として、組織内の他のアカウントの GuardDuty の検出結果を管理する場合は、メンバーアカウントを追加し、それらのアカウントに対して GuardDuty を有効にする必要があります。ご利用の環境で GuardDuty を有効にする方法については、オプションを選択してください。

Standalone account environment
  1. https://console.aws.amazon.com/guardduty/ で GuardDuty コンソールを開きます。

  2. [Get Started] (今すぐ始める) を選択します。

  3. [Enable GuardDuty] (GuardDuty を有効にする) を選択します。

Multi-account environment
重要

このプロセスの前提条件として、組織内で GuardDuty の管理者を委任するには、管理したいすべてのアカウントと同じ組織に所属し、AWS Organizations 管理アカウントへのアクセス権を持っている必要があります。管理者の委任には追加の許可が必要になる場合があります。詳細については、「委任された管理者の指定に必要な許可」を参照してください。

GuardDuty の管理者を委任する場合

  1. AWS Organizations 管理アカウントにログインする

  2. https://console.aws.amazon.com/guardduty/ で GuardDuty コンソールを開きます。

    アカウント内で GuardDuty が既に有効になっていますか?

    • GuardDuty がまだ有効になっていない場合は、[Get Started] (今すぐ始める) を選択し、[Welcome to GuardDuty] (GuardDuty にようこそ) ページで GuardDuty の委任された管理者を指定できます。

    • GuardDuty が有効になっている場合、[Settings] (設定) ページで GuardDuty の委任された管理者を指定することができます。

  3. 組織の GuardDuty の委任された管理者として指定したいアカウントの 12 桁の AWS アカウント ID を入力し、[Delegate] (委任) を選択します。

    注記

    GuardDuty がまだ有効になっていない場合、委任された管理者を指定すると、そのアカウントに対し現在のリージョンで GuardDuty が有効になります。

メンバーアカウントを追加するには

この手順では、AWS Organizations を通して GuardDuty の委任された管理者のアカウントにメンバーアカウントを追加する方法について説明します。招待でメンバーを追加するオプションもあります。GuardDuty でメンバーを関連付けるための両方の方法の詳細については、「Amazon GuardDuty での複数のアカウントの管理 GuardDuty との AWS のサービス統合」を参照してください。

  1. 委任された管理者のアカウントにログイン

  2. https://console.aws.amazon.com/guardduty/ で GuardDuty コンソールを開きます。

  3. ナビゲーションパネルで [Settings] (設定) を選択してから、[Accounts] (アカウント) を選択します。

    アカウントの一覧に組織内のすべてのアカウントが表示されます。

  4. アカウント ID の横にあるチェックボックスを選択し、メンバーとして追加したいアカウントを選択します。その後、[Action] (アクション) メニューから、[Add member] (メンバーの追加) を選びます。

    ヒント

    新しいアカウントをメンバーとして追加するには、[Auto-enable] (自動有効化) の機能を ON にします。ただし、この機能は機能を有効にした後に組織に参加したアカウントにのみ適用されます。

ステップ 2: サンプル検出結果を生成し、ベーシックなオペレーションの詳細を確認する

GuardDuty がセキュリティ上の問題を検出すると、検出結果を生成します。GuardDuty の検出結果は、その固有のセキュリティ問題に関する詳細を含むデータセットです。検出結果の詳細を使用して、問題の調査に役立てることができます。

GuardDuty は、placeholder 値を使用したサンプル検出結果の生成をサポートしています。このサンプルを使用して、GuardDuty の機能をテストし、検出結果を理解してから GuardDuty によって発見された実際のセキュリティ問題に馴染むために使われます。GuardDuty で利用可能な各検出結果タイプのサンプル検出結果を生成するには、以下のガイドに従ってください。アカウント内でシミュレートされたセキュリティイベントを生成するなど、サンプル検出結果を生成するその他の方法については、「サンプルの検出結果」を参照してください。

サンプル検出結果を作成して調査するには

  1. ナビゲーションペインで [Settings] (設定) を選択します。

  2. [Settings] (設定) ページの [Sample findings] (結果のサンプル) で、[Generate sample findings] (結果サンプルの生成) を選択します。

  3. ナビゲーションペインで [Findings] (結果) を選択します。[Current findings] (最近の結果) ページに [SAMPLE] とプレフィックスされたサンプル検出結果が表示されます。

  4. リストから検出結果を選択して、検出結果の詳細を表示します。

    1. 検出結果の詳細ペインで使用可能なさまざまな情報フィールドを確認できます。検出結果のタイプが異なると、フィールドが異なる場合があります。すべての検出結果タイプに渡り使用可能な検出結果フィールドの詳細については、「検出結果の詳細」を参照してください。詳細ペインから、次のアクションを実行できます。

      • ペインの一番上の [finding ID] (結果 ID) を選択し、検出結果のための完全な JSON 詳細を開きます。完全な JSON ファイルは、このパネルからダウンロードすることもできます。JSON には、コンソールビューに含まれない追加情報が含まれており、他のツールやサービスで取り込むことができる形式です。

      • [Resource affected] (影響を受けるリソース) セクションを表示します。実際の検出結果では、ここの情報は調査すべきアカウント内のリソースを特定するのに役立ち、アクション可能なリソースのための適切な AWS コンソールへのリンクを含みます。

      • 「+」または「-」の虫眼鏡アイコンを選択して、その詳細の包括的または排他的なフィルターを作成します。検出結果フィルターの詳細については、「検出結果のフィルタリング」を参照してください。

  5. サンプル検出結果をすべてアーカイブする

    1. リストの上部にあるチェックボックスを選んで、すべての検出結果を選択します。

    2. 保持したい検出結果を選択解除します。

    3. [Actions] (アクション) メニューを選択し、[Archive] (アーカイブ) をクリックして、サンプルの検出結果を非表示にします。

      注記

      Actions メニューを見るために、[Current] (最新) を選択し、検出結果ビューを切り替えるために [Archived] (アーカイブ) を選択してください。

ステップ 3: S3 バケットへの GuardDuty の検出結果のエクスポートを設定する

GuardDuty では、検出結果のエクスポートを設定することをお勧めします。これにより、GuardDuty の 90 日間のストレージ期限を超えた無期限ストレージのために S3 バケットに検出結果をエクスポートできます。これにより、検出結果の記録を保持したり、環境内の問題を経時的に追跡したりできます。ここで概説するプロセスでは、新しい S3 バケットをセットアップし、コンソール内から検出結果を暗号化するための新しい KMS キーを作成する手順を説明します。独自の既存のバケットや別のアカウントのバケットを使用する方法などの詳細については、「検出結果のエクスポート」を参照してください。

S3 エクスポートを設定するには

  1. 検出結果を暗号化するには、GuardDuty がそのキーを暗号化に使用することを許可するポリシーを持つ KMS キーが必要です。次のセクションで説明するポリシーを既存のキーにアタッチするか、コンソールから新しい KMS キーを作成できます。

    重要

    キーは、S3 バケットと同じ AWS リージョンに存在する必要があります。

    新しいプロジェクトを作成するには、以下の手順に従います。同じリージョンの既存のキーを使用している場合は、ポリシーを KMS キーにアタッチする手順に進みます。

    1. https://console.aws.amazon.com/kms コンソールにログインします。

    2. ナビゲーションペインで、[Customer managed keys] (カスタマー管理型のキー) を選択します。

    3. [Create key] (キーの作成) を選択します。

    4. [Key type] (キーのタイプ) の [Symmetric] (対称) を選択してから、[Next] (次へ) を選択します。

      注記

      KMS キーの詳細については、「キーの作成」を参照してください。

    5. キーの [Alias] (エイリアス) を指定し、[Next] (次へ) を選択します。

    6. [Next] (次へ) を選択し、再度 [Next] (次へ) を選択して、デフォルトの管理許可と使用許可を承諾します。

    7. [Finish] (完了) を選択し、KMS キーを作成します。

    8. キーエイリアスを選択します。

    9. [Key Policy] (キーポリシー) セクションで、[Switch to policy view] (ポリシービューへの切り替え) を選択します。

    10. "Statements": セクションに以下のステートメントを追加します。

      [Region] (リージョン) を、KMS キーが作成されたリージョンに置き換えます。[111122223333] をバケットを所有するソースアカウントの 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" } }
  2. https://console.aws.amazon.com/guardduty/ コンソールにログインします。

  3. ナビゲーションペインで [Settings] (設定) を選択します。

  4. [Findings export options] (結果のエクスポートオプション) の下で、[Configure now] (今すぐ設定) を選択します。

  5. [New bucket] (新規バケット) を選択します。バケットの一意の名前を入力します。

  6. (オプション) サンプル検出結果を生成して、新しいエクスポート設定をテストできます。ナビゲーションペインで [Settings] (設定) を選択します。

  7. [Sample findings] (サンプル検出結果) で、[Generate sample findings] (サンプル調査結果を生成) を選択します。新しいサンプル検出結果が、GuardDuty によって作成された S3 バケットのエントリとして 5 分以内に表示されます。

ステップ 4: SNS を使用して GuardDuty の検出結果アラートを設定する

GuardDuty は、処理のために他のアプリケーションやサービスに検出結果データを送信するために使用できる Amazon EventBridge で統合されます。EventBridge では、GuardDuty の検出結果を使用して、AWS Lambda 関数、Amazon EC2 Systems Manager オートメーション、Amazon Simple Notification Service (SNS) などのターゲットに検出結果イベントを接続することで、検出結果に対する自動応答をトリガーできます。

この例では、EventBridge ルールのターゲットとなる SNS トピックを作成し、EventBridge を使用して GuardDuty から検出結果データをキャプチャするルールを作成します。結果として得られるルールは、検出結果の詳細をメールアドレスに転送します。検出結果を Slack または Chime に送信する方法、および送信される検出結果の種類の変更方法については、「Amazon SNS トピックおよびエンドポイントの設定」を参照してください。

検出結果アラートの SNS トピックを作成するには

  1. https://console.aws.amazon.com/sns/v3/home で Amazon SNS コンソールを開きます。

  2. ナビゲーションペインで、[Topics] (トピック) を選択します。

  3. [Create Topic] (トピックの作成) を選択します。

  4. [Type] (タイプ) に、[Standard] (標準) を選択します。

  5. [Name] (名前) に「GuardDuty」と入力します。

  6. [Create Topic] (トピックの作成) を選択します。新しいトピックのトピック詳細が開きます。

  7. [サブスクリプション] セクションで、[サブスクリプションの作成] を選択します。

  8. [Protocol] (プロトコル) で [Email] (E メール) を選択します。

  9. [Endpoint] (エンドポイント) に、通知を送信する先の E メールアドレスを入力します。

  10. [Create subscription] (サブスクリプションの作成) を選択します。

    サブスクリプションを作成した後に、E メールを通してサブスクリプションを確認する必要があります。

  11. サブスクリプションメッセージを確認するには、E メールの受信ボックスに移動して、サブスクリプションメッセージで [Confirm subscription] (サブスクリプションの確認) を選択します。

    注記

    メール確認のステータスを確認するには、SNS コンソールに移動して [Subscriptions] (サブスクリプション) を選択します。

GuardDuty の検出結果をキャプチャしてフォーマットする EventBridge ルールを作成するには

  1. https://console.aws.amazon.com/events/ で EventBridge コンソールを開きます。

  2. ナビゲーションペインで [Rules] (ルール) を選択します。

  3. [‬Create rule]‭ (ルールの作成) を選択します。

  4. ルールの名前と説明を入力します。

    ルールには、同じリージョン内および同じイベントバス上の別のルールと同じ名前を付けることはできません。

  5. [Event bus] (イベントバス) として、[default] (デフォルト) を選択します。

  6. [Rule type] (ルールタイプ) では、[Rule with an event pattern] (イベントパターンを持つルール) を選択します。

  7. [Next] (次へ) を選択します。

  8. [Event source] (イベントソース) で、[AWSevents] (イベント) を選択します。

  9. [Event pattern] (イベントパターン) で、[Event pattern form] (イベントパターンフォーム) を選択します。

  10. [Event source] (イベントソース) では、AWS[services] (サービス) を選択します。

  11. [AWS service] (AWS サービス) では、[GuardDuty] (GuardDuty) を選択します。

  12. [Event Type] (イベントタイプ) では、[GuardDuty Finding] (GuardDuty の検出結果) を選択します。

  13. [Next] (次へ) を選択します。

  14. [Target types] (ターゲットタイプ) では、AWS[services] (サービス) を選択します。

  15. [Select a target] (ターゲットの選択) では、[SNS topic] (SNS トピック) を選択し、[Topic] (トピック) では、以前に作成した SNS トピックの名前を選択します。

  16. [Additional settings] (追加設定) セクションの [Configure target input] (ターゲット入力の設定) では、[Input transformer] (入力トランスフォーマー) を選択します。

    入力トランスフォーマーを追加すると、GuardDuty から送信される JSON 検出結果データが、人が読み取り可能なメッセージに書式設定されます。

  17. [Configure input transformer] (入力トランスフォーマーの設定) を選択します。

  18. [Target input transformer] (ターゲット入力トランスフォーマー) セクションで、[Input path] (入力パス) に以下のコードを貼り付けます。

    { "severity": "$.detail.severity", "Finding_ID": "$.detail.id", "Finding_Type": "$.detail.type", "region": "$.region", "Finding_description": "$.detail.description" }
  19. メールを書式設定するには、[Template] (テンプレート) に以下のコードを貼り付けます。

    "You have a severity <severity> GuardDuty finding type <Finding_Type> in the <region> 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%3D<Finding_ID>"
  20. [Confirm] (確認) を選択します。

  21. [Next] を選択します。

  22. (オプション) ルールに 1 つ以上のタグを入力します。詳細については、「Amazon EventBridge ユーザーガイド」の「Amazon EventBridge のタグ」を参照してください。

  23. [Next] を選択します。

  24. ルールの詳細を確認し、[Create rule] (ルールの作成) を選択します。

  25. (オプション) ステップ 2 のプロセスでサンプル検出結果を生成して、新しいルールをテストします。生成されたサンプル検出結果ごとにメールが届きます。

次のステップ

GuardDuty を引き続き使用すると、環境に関連する検出結果の種類を理解できるようになります。新しい検出結果を受け取ったときはいつでも、検出結果の詳細ペイン中の検出結果の記述から [Learn more] (詳細はこちら) を選択することにより、あるいは 検出結果タイプ ページ上の検出結果名を探すことにより、その検出結果に関する修復に関するレコメンデーションを含む情報を検索できます。

次の機能は、GuardDuty を調整して、AWS 環境にとって最も関連性の高い検出結果を提供できるようにするのに役立ちます。

  • インスタンス ID、アカウント ID、S3 バケット名などの特定の条件に基づいて検出結果を簡単に並べ替えるには、GuardDuty 内でフィルターを作成して保存できます。詳細については、「検出結果のフィルタリング」を参照してください。

  • 環境内で予想される動作に関する検出結果を受け取っている場合は、[suppression rules] (抑制ルール) で定義した基準に基づいて検出結果を自動的にアーカイブできます。

  • 信頼できる IP のサブセットから検出結果を生成しないようにしたり、GuardDuty が通常のモニタリング範囲外の IP をモニタリングするには、[Trusted IP and threat lists] (信頼されている IP および脅威リスト) をセットアップできます。