Amazon GuardDuty
Amazon Guard Duty ユーザーガイド

Amazon GuardDuty でのアカウントの管理

他のアカウントを招待して、GuardDuty を有効にし、AWS アカウントに関連付けることができます。招待が受け入れられると、アカウントは、GuardDuty のマスターアカウントとして指定されます。招待を受け入れたアカウントは、マスターアカウントに関連付けられたメンバーアカウントになります。これで、メンバーアカウントに代わって、GuardDuty の結果を表示および管理することができます。GuardDuty では、最大 1000 のメンバーアカウントをマスターアカウント (各リージョン) に登録できます。

AWS アカウントを同時に GuardDuty のマスターアカウントとメンバーアカウントにすることはできません。AWS アカウントで承諾できる GuardDuty のメンバーシップの招待は 1 つのみです。メンバーシップの招待の承諾はオプションです。

以下のセクションでは、GuardDuty コンソール、CLI、および API を使用してマスターアカウントおよびメンバーアカウントを作成する方法について説明します。また、マスターアカウントおよびマスターアカウントは AWS CloudFormation から使用することもできます。詳細については、AWS::GuardDuty::Master および AWS::GuardDuty::Member を参照してください。

注記

GuardDuty メンバーアカウントの作成時にクロスリージョンデータ転送が発生することがあります。メンバーアカウントの E メールアドレスを確認するために、GuardDuty では AWS の米国東部 (バージニア北部) リージョンでのみ動作する AWS 以外のアカウント情報検証サービスを使用します。

GuardDuty マスターアカウント

マスターアカウントのユーザーは、自分のアカウントおよび関連付けられているすべてのメンバーアカウントの GuardDuty を設定できるだけでなく、GuardDuty の結果を表示および管理できます。

マスターアカウントのユーザーが GuardDuty を設定する方法は以下のとおりです。

  • マスターアカウントのユーザーは、自身のアカウントでサンプル結果を生成できます。マスターアカウントのユーザーは、メンバーのアカウントでサンプル結果を生成できません。

  • マスターアカウントのユーザーは、自分のアカウントとすべてのメンバーアカウントで結果をアーカイブすることができます。

  • マスターアカウントのユーザーは、信頼できる IP リストと脅威リストを自分のアカウントでアップロードして管理できます。

    重要

    マスターアカウントからアップロードした、あるいはマスターアカウントにアップロードした信頼されている IP リストや脅威リストは、そのメンバーアカウントの GuardDuty 機能に適用されます。つまり、メンバーアカウントの場合、GuardDuty はマスターアカウントの脅威リストで既知の悪意ある IP アドレスを含むアクティビティに基づく結果を生成しますが、マスターの信頼される IP リストの IP アドレスに関連するアクティビティに基づく結果は生成しません。

  • マスターアカウントのユーザーは、以降の結果について CloudWatch イベントに送信される通知のデフォルトの頻度をカスタマイズできます。有効な値は、15 分、1 時間、またはデフォルトの 6 時間です。詳細については、「Amazon CloudWatch Events を使用した GuardDuty 結果のモニタリング」を参照してください。

    マスターアカウントが自分のアカウントで設定した頻度値は、そのすべてのメンバーアカウントの GuardDuty 機能に適用されます。つまり、マスターアカウントのユーザーがこの頻度値を 1 時間に設定すると、すべてのメンバーアカウントでも、以降の結果について CloudWatch イベントに送信される通知の頻度が 1 時間になります。

  • マスターアカウントのユーザーは、各自の (マスター) アカウントで GuardDuty を停止できます。また、マスターアカウントのユーザーは、メンバーアカウントで GuardDuty を停止することもできます。

    注記

    マスターアカウントのユーザーがマスターアカウントで GuardDuty を停止した場合、この停止はメンバーアカウントに自動的に適用されません。GuardDuty メンバーアカウントを停止するには、マスターアカウントのユーザーがこのメンバーアカウントを選択し、コンソールを介して GuardDuty を停止するか、StopMonitoringMembers API を実行してこのアカウント ID を指定します。

    また、マスターアカウントのユーザーは、コンソールから、あるいは StartMonitoringMembers API を実行してメンバーアカウントで GuardDuty を再度有効化できます。

  • マスターアカウントのユーザーは、各自の (マスター) アカウントで GuardDuty を無効化できます。ただし、マスターアカウントで GuardDuty を無効化する前に、すべてのメンバーアカウントを削除する必要があります。マスターアカウントのユーザーは、メンバーアカウントの GuardDuty を無効にすることはできません。

GuardDuty メンバーアカウント

メンバーアカウントのユーザーは、自分のアカウントの GuardDuty を設定し、GuardDuty の結果を表示および管理できます。メンバーアカウントのユーザーは、マスターアカウントまたは他のメンバーアカウントの GuardDuty の設定、結果の表示や管理を行うことはできません。

メンバーアカウントのユーザーが GuardDuty を設定する方法は以下のとおりです。

  • メンバーアカウントのユーザーは、自身のメンバーアカウントでサンプル結果を生成できます。メンバーアカウントのユーザーは、マスターアカウントや他のメンバーのアカウントでサンプル結果を生成できません。

  • メンバーアカウントのユーザーが自分のアカウント、マスターアカウント、他のメンバーアカウントで結果をアーカイブすることはできません。

  • メンバーアカウントのユーザーが、信頼されている IP リストや脅威リストをアップロードして管理することはできません。

    マスターアカウントからアップロードされた信頼されている IP リストや脅威リストは、そのメンバーアカウントの GuardDuty 機能に適用されます。つまり、メンバーアカウントの場合、GuardDuty はマスターアカウントの脅威リストで既知の悪意ある IP アドレスを含むアクティビティに基づく結果を生成しますが、マスターの信頼される IP リストの IP アドレスに関連するアクティビティに基づく結果は生成しません。

    注記

    GuardDuty アカウントが GuardDuty メンバーアカウントになると、その信頼されている IP リストと脅威リスト (GuardDuty メンバーアカウントになる前にアップロード済み) は無効になります。GuardDuty メンバーアカウントと GuardDuty マスターアカウントの関連付けが解除されると、その信頼されている IP リストと脅威リスト (GuardDuty メンバーアカウントになる前にアップロード済み) は再び有効になります。GuardDuty メンバーアカウントではなくなると、そのアカウントのユーザーはアカウントで信頼されている IP リストと脅威リストをアップロードし管理することができます。

  • メンバーアカウントのユーザーは、以降の結果について CloudWatch イベント イベントに送信される通知の頻度をカスタマイズできません。マスターアカウントが自分のアカウントで設定した頻度値は、そのすべてのメンバーアカウントの GuardDuty 機能に適用されます。つまり、マスターアカウントのユーザーがこの頻度値を 1 時間に設定すると、すべてのメンバーアカウントでも、以降の結果について CloudWatch イベントに送信される通知の頻度が 1 時間になります。詳細については、Amazon CloudWatch Events を使用した GuardDuty 結果のモニタリング を参照してください。

  • メンバーアカウントのユーザーは、各自のアカウントで GuardDuty を停止できます。メンバーアカウントのユーザーは、マスターアカウントや他のメンバーアカウントの GuardDuty を停止できません。

  • メンバーアカウントのユーザーは、各自のアカウントで GuardDuty を無効化止できます。メンバーアカウントのユーザーは、マスターアカウントや他のメンバーアカウントの GuardDuty を無効化できません。

GuardDuty コンソールでマスターアカウントとメンバーアカウントを指定する

GuardDuty では、自分のアカウントに別の AWS アカウントを追加して関連付けた場合や、別のアカウントが招待を受け入れてメンバーアカウントになることを承諾した場合、自分のアカウントがマスターアカウントになります。

自分のアカウントがマスターアカウントでない場合は、別のアカウントからの招待を受け入れることができます。招待を受け入れると、自分のアカウントはメンバーアカウントになります。

アカウントの追加、アカウントの招待、または別のアカウントからの招待の受け入れの手順は以下のとおりです。

  • ステップ 1 - アカウントを追加する

  • ステップ 2: アカウントを招待する

  • ステップ 3 - 招待を受け入れる

ステップ 1 - アカウントを追加する

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

  2. ナビゲーションペインで [Settings] の [Accounts] を選択します。

  3. [Add accounts] を選択します。

  4. [Add member] アカウントページで、[Enter accounts] に追加するアカウントの AWS アカウント ID と E メールアドレスを入力します。次に [Add account] を選択します。

    重要

    このステップで指定する E メールアドレスは、GuardDuty メンバーアカウントとして追加する AWS アカウントに関連付けられた E メールアドレスと同じにする必要があります。

    複数のアカウントを追加するには、ID と E メールアドレスを一度に 1 つずつ指定します。[Upload list (.csv)] を選択して、アカウントを一括追加することもできます。この機能は、一部のアカウントを招待して GuardDuty をすぐに有効にし、他のアカウントについては遅延させる場合に便利です。

    重要

    .csv リストでは 1 行に 1 つのアカウントを表示する必要があります。.csv リスト内のアカウントごとに、アカウント ID と E メールアドレスをカンマ区切りで指定する必要があります。以下の例のように、.csv ファイルの 1 行目にヘッダー (例: Account ID、Email) が含まれている必要があります。Account ID,Email後続の各行には、追加するアカウントの有効なアカウント ID および有効な E メールアドレスを含む必要があります。アカウント ID と E メールアドレスはカンマで区切ります。

    Account ID,Email 111111111111,user@example.com
  5. アカウントの追加が完了したら、[Done] を選択します。

    追加したアカウントが [Accounts] ページに一覧表示されます。このリストに追加された各アカウントの [Status] 列には [Invite] リンクがあります。

ステップ 2: アカウントを招待する

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

  2. ナビゲーションペインで [Settings] の [Accounts] を選択します。

  3. アカウントを招待して GuardDuty を有効にするには、追加したアカウントのリストで [Status] 列に表示される [Invite] リンクを選択します。

  4. [Invitation to GuardDuty] ダイアログボックスに、招待メッセージ (オプション) を入力し、[Send notification] を選択します。

    招待したアカウントの [Status] 列の値が [Pending] に変わります。

ステップ 3 - 招待を受け入れる

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

  2. 以下のいずれかを行います。

    • GuardDuty が有効になっていない場合は、[Enable GuardDuty] ページで [Enable GuardDuty] を選択します。次に [Accept] ウィジェットおよび [Accept invitation] ボタンを使用して、メンバーシップ招待を承諾します。

      重要

      メンバーシップ招待を承諾する前に GuardDuty を有効にする必要があります。

    • が既に有効になっている場合は、[Accept] ウィジェットおよび [Accept invitationGuardDuty] ボタンを使用して、メンバーシップ招待を承諾します。

    招待を承諾すると、アカウントが GuardDuty メンバーアカウントになります。招待の送信元のアカウントは GuardDuty のマスターアカウントになります。マスターアカウントのユーザーは、メンバーアカウントの [Status] 列の値が [Monitored] に変わったことを確認できます。これで、マスターアカウントのユーザーは、メンバーアカウントの GuardDuty の結果を表示して管理できます。

GuardDuty API オペレーションでのマスターアカウントとメンバーアカウントの指定

API オペレーションを使用して、マスターおよびメンバーの GuardDuty アカウントを指定することもできます。GuardDuty でマスターアカウントおよびメンバーアカウントを指定するために特定の GuardDuty API オペレーションを実行する際の必要な順序は以下のとおりです。

GuardDuty マスターアカウントとして指定する AWS アカウントの認証情報を使用して次の手順を実行します。

  1. GuardDuty が有効になっている AWS アカウント (マスター GuardDuty アカウントにするアカウント) の認証情報を使用して CreateMembers API オペレーションを実行します。

    現在の AWS アカウントのディテクター ID および GuardDuty メンバーにするアカウントのアカウント詳細 (アカウント ID および E メールアドレス) を指定する必要があります (この API オペレーションで 1 つ以上のメンバーを作成できます)。

    AWS コマンドラインツールを使用して、この操作を行うこともできます。次の CLI コマンドを実行できます (独自の有効なディテクター ID、アカウント ID、E メールを必ず使用してください:

    aws guardduty create-members --detector-id 12abc34d567e8fa901bc2d34e56789f0 --account-details AccountId=123456789012,Email=guarddutymember@amazon.com
  2. GuardDuty が有効になっている AWS アカウント (マスター GuardDuty アカウントにするアカウント) の認証情報を使用して InviteMembers API オペレーションを実行します。

    現在の AWS アカウントのディテクター ID および GuardDuty メンバーにするアカウントのアカウント ID (この API オペレーションで 1 つ以上のメンバーを招待できます) を指定する必要があります。

    注記

    message リクエストパラメータを使用してオプションの招待メッセージを指定することもできます。

    AWS コマンドラインツールを使用して、この操作を行うこともできます。次の CLI コマンドを実行できます (独自の有効なディテクター ID とアカウント ID を必ず使用してください:

    aws guardduty invite-members --detector-id 12abc34d567e8fa901bc2d34e56789f0 --account-ids 123456789012

GuardDuty メンバーアカウントとして指定する各 AWS アカウントの認証情報を使用して次の手順を実行します。

  1. GuardDuty メンバーアカウントに招待された AWS アカウントごとに CreateDetector API オペレーションを実行して招待を受け入れます。

    GuardDuty サービスを使用してディテクターリソースを有効にするかどうかを指定する必要があります。GuardDuty が動作するためには、ディテクターを作成して有効にする必要があります。招待を受け入れる前に、まず GuardDuty を有効にする必要があります。

    AWS コマンドラインツールを使用して、この操作を行うこともできます。以下の CLI コマンドを実行できます。

    aws guardduty create-detector --enable
  2. メンバーの正体を受け入れる AWS アカウントごとに、アカウントの認証情報を使用して AcceptInvitation API オペレーションを実行します。

    この AWS アカウント (メンバーアカウント) のディテクター ID、受け入れる招待を送信した AWS アカウントのマスター ID (この値は招待メール内または ListInvitations API オペレーションを実行して取得できます。これは accountID レスポンスパラメータの値です) および受信した招待の招待 ID を指定する必要があります。

    AWS コマンドラインツールを使用して、この操作を行うこともできます。次の CLI コマンドを実行できます (有効なディテクター ID、マスターアカウント ID、招待 ID を必ず使用してください:

    aws guardduty accept-invitation --detector-id 12abc34d567e8fa901bc2d34e56789f0 --master-id 012345678901 --invitation-id 84b097800250d17d1872b34c4daadcf5

複数のアカウントで同時に GuardDuty を有効にする

以下のいずれかの方法を使用して、複数のアカウントで同時に GuardDuty を有効にします。

Python スクリプトを使用して複数のアカウントで同時に GuardDuty を有効にする

enableguardduty.pydisableguardduty.py を実行できます。これは、https://github.com/aws-samples/amazon-guardduty-multiaccount-scripts からダウンロードできます。

enableguardduty.py は GuardDuty を有効にし、マスターアカウントから招待を送信してすべてのメンバーアカウントで招待を受け入れます。結果はすべてのメンバーアカウントのセキュリティ結果を含むマスター GuardDuty アカウントです。GuardDuty はリージョン別に分離されているので、各メンバーアカウントの結果はマスターアカウントで対応リージョンにロールアップされます。たとえば、GuardDuty マスターアカウントの us-east-1 リージョンには、関連付けているすべてのメンバーアカウントからの us-east-1 結果すべてのセキュリティ結果が含まれています。

スクリプトは StackSets サービスを考慮してモデル化されているため、GuardDuty を有効にしたい各アカウントで AWSCloudFormationStackSetExecutionRole という IAM ロールを必要とします。このロールは GuardDuty へのアクセス権を持つ StackSets を提供します。すでに StackSets を使用している場合は、スクリプトが既存のロールを活用できます。その他の場合は https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html の手順を使用し、GuardDuty を有効にしたい各アカウントで AWSCloudFormationStackSetExecutionRole をセットアップします。

管理者権限を持つロールがある新しい Amazon Linux インスタンスを起動します。このインスタンスにログインし、次のコマンドを実行します。

sudo yum install git python sudo pip install boto3 aws configure git clone https://github.com/aws-samples/amazon-guardduty-multiaccount-scripts.git cd amazon-guardduty-multiaccount-scripts sudo chmod +x disableguardduty.py enableguardduty.py

注記

プロンプトが表示されたら、us-east-1 または任意のデフォルトのリージョンに設定します。

スクリプトには GuardDuty マスターアカウントのアカウント ID のパラメータが 1 つあります。enableguardduty.py または disableguardduty.py を実行する前に、どちらかのスクリプトのグローバル変数を更新して AWS アカウントとマッピングします。アカウントと関連付けている E メールアドレスのリストを作成できます。マスター GuardDuty アカウントを指定し、メンバーアカウントに送信した招待メッセージをカスタマイズ (オプション) できます。

AWS CloudFormation StackSets を使用して複数のアカウントで同時に GuardDuty を有効にする

AWS CloudFormation スタックセットを使用すると、1 つの AWS CloudFormation テンプレートを使用して複数のリージョンにまたがる AWS アカウントにスタックを作成できます。各スタックに含まれるリソースはすべて、スタックセットの AWS CloudFormation テンプレートで定義されます。スタックセットを作成する際、使用するテンプレートに加え、そのテンプレートで必要なパラメータや機能を指定します。

[Enable Amazon GuardDuty (Amazon GuardDuty を有効にする)] テンプレートを使用すると、複数のアカウントで GuardDuty を同時に有効にできます。

重要

以下の手順を実行する前に、AWS アカウント内でのスタックセットオペレーションのアクセス権限を付与する前提条件のステップを完了してください。詳細については、「前提条件: スタックセットオペレーションのアクセス権限の付与」を参照してください 。

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

  2. ページ上部で、[StackSets] を選択し、[Create stack set] を選択します。

  3. [Select template] ウィザードの [Select template] ページで、[Select a sample template from the following templates] を選択します。

  4. [Enable Amazon GuardDuty (Amazon GuardDuty を有効にする)] サンプルテンプレートを選択し、[Next (次へ)] を選択します。

  5. ウィザードの [Specify details] ページで、次の情報を入力します。

    • スタックセットの名前を指定します。スタックセット名はアルファベット文字で始まり、文字、数字、ハイフンのみを含める必要があります。

    • オプション: GuardDuty マスターアカウント ID を指定します。

      重要

      マスターアカウント ID を指定した場合、このスタックセットは指定された各アカウントで GuardDuty ディレクターを作成し、このマスターアカウントにより指定された各アカウントに送信される GuardDuty メンバーシップ招待を受け入れます。この値を指定した場合、このスタックセットを作成する前に [Enable Amazon GuardDuty (Amazon GuardDuty を有効にする)] スタックセットテンプレートが適用されるすべてのリージョン内のすべてのアカウントに、このマスター GuardDuty アカウントからの招待が既にあることが必要で、既に作成されたディテクターがあってはいけません。つまり、このスタックセットを使用して複数のメンバーアカウントとリージョンで GuardDuty を同時に有効にし、すべてのメンバーのマスター GuardDuty アカウントとして特定のアカウントを指定する場合にのみこの値を指定します。

      マスターアカウント ID を指定しない場合、このスタックセットは指定された各アカウントでのみ GuardDuty ディテクターを作成できます。つまり、このスタックセットを使用して、関連性のない (メンバー/マスターの関係がない) 複数のアカウントで同時に GuardDuty を有効にする場合は、この値を指定しないでください。

  6. [Set deployment options] ページで、スタックセットのスタックをデプロイしたいアカウントおよびリージョンを提供してください。AWS CloudFormation は、リージョンのデプロイ失敗が指定された障害耐性を超えない限り、最初のリージョン内の指定されたアカウントにスタックをデプロイし、次のリージョンに移行し、それが繰り返されます。

    注記

    前のページでマスターアカウント ID を指定した場合、このスタックセットは [Specify accounts] セクションにリストされた各アカウントで GuardDuty ディレクターを作成し、マスターアカウントによりこれらの各アカウントに送信される GuardDuty メンバーシップ招待を受け入れます。したがって、GuardDuty マスターアカウントを指定した場合、このマスターアカウント ID を [Specify accounts] セクションに含めず、メンバーとしてこの GuardDuty マスターアカウントに指定するアカウントのみを含めてください。

  7. [Options] ページの [Tags] セクションでは、スタック内のリソースのキーと値のペアを指定してタグを追加できます。

    [Permissions] セクションで、StackSets がターゲットアカウントを管理するために使用できる IAM ロールを選択します。管理者とすべてのターゲットアカウントの IAM サービスロールをセットアップする詳しい手順については、「スタックセットオペレーションの基本アクセス権限の設定」を参照してください。

  8. [Review] ページで、設定とスタックセットのプロパティを確認します。スタックセットを作成する準備ができたら、[Create] を選択します。

詳細については、「Working with AWS CloudFormation StackSets」を参照してください。