Organizations環境下のDetectiveをメンバーアカウントから見る方法

2023.11.20

こんにちは。たかやまです。

Amazon Detectiveも他のAWSセキュリティサービス(GuardDuty, Security Hub etc...)と同様にOrganizations連携に対応しています。

ただ、Detectiveに関してはGuardDuty, Security Hubとは異なり管理アカウントからメンバーアカウントのサービスを有効化した場合にメンバーアカウント内でサービスの機能*1を利用することができません。
1 ここでは検索のこと

メンバーアカウントでインシデントが発生した場合に、都度管理アカウント管理者に調査依頼するのも手間になります。

今回はOrganizationsで管理されているDetectiveをメンバーアカウントからDetectiveを利用する方法を紹介します。

さきにまとめ

以下のいずれかの対応をおこなう

  1. メンバーアカウントにクロスアカウントアクセス権限を付与して管理アカウントのグラフを調査できるようにする
    • ただし、メンバーアカウントが管理アカウントで他のAWSアカウントの調査も可能になるので企業ポリシーとして問題ないか検討が必要
  2. メンバーアカウント自身がDetectiveのマスターアカウントになる
    • 管理アカウントにログ提供を行うDetectiveとメンバーアカウント自身のDetectiveが存在することになりログ料金が2重に発生する

やってみる

メンバーアカウントへクロスアカウントアクセス権限の付与

Detectiveでは以下のようなAWSマネージドポリシーが提供されています。
メンバーアカウントが管理アカウントに調査するための権限が今回は必要なのでAmazonDetectiveInvestigatorAccessを利用していきます。

マネージドポリシー名 概要
AmazonDetectiveFullAccess Detectiveへのフルアクセス権限を付与
AmazonDetectiveMemberAccess グラフの招待を管理したり、データ使用量を表示したりできます。
AmazonDetectiveInvestigatorAccess Detective アクションに対する限定的なアクセスを許可します。調査を実行することはできますが、メンバーアカウントの管理や動作グラフの変更はできません。
AmazonDetectiveOrganizationsAccess Detective の管理を別のアカウントに委任できます。
AmazonDetectiveServiceLinkedRole サービスリンクされたロール用のポリシー(サービス使用時に自動的に作成される)

Amazon Detective の AWS マネージドポリシー - Amazon Detective

それではこちらのマネージドポリシーを利用してクロスアカウントアクセス権限を付与していきます。

IAM Identity Center

Organizationsを利用している環境ということでここではIAM Identity Centerを使ってクロスアカウントアクセス権限を付与していきます。

まずは、IAM Identity Centerで許可セットを作成します。 許可セット > 許可セットの作成 を選択します。

許可セットのタイプはカスタム許可セットを選択します。

ポリシーと許可の境界の設定ではAWS マネージドポリシーでDetectiveの権限と必要であればSecurity Hub、 GuardDutyのReadOnlyマネージドポリシーを選択します。 というのも、DetectiveのAmazonDetectiveInvestigatorAccessポリシーだけではGuardDuty, Security Hubへのアクセス権限は提供されません。

DetectiveはGuardDutyとSecurity Hubのイベントを起因にイベントを調査することができます。Detectiveの調査性を上げるためにもGuardDuty、Security HubのReadOnly権限を付与しておくのをおすすめします。

ここで付与していくポリシーは以下の3つです。

  • AmazonDetectiveInvestigatorAccess
  • AWSSecurityHubReadOnlyAccess
  • AmazonGuardDutyReadOnlyAccess

許可セットの詳細の指定では、任意の許可セット名、説明、セッション期間を設定してください。
リレー状態ではログイン時のホーム画面を設定できます。

以下のDetectiveコンソールのサマリー画面のURLを設定しておくと便利です。

リレー状態 : https://<region>.console.aws.amazon.com/detective/home?region=<region>#summary

許可セットの設定状態はこちらです。

あとはセキュリティサービスの管理アカウントに許可セットをアタッチしていきます。
AWSアカウント > 対象の管理アカウントの選択 > ユーザーまたはグループを割り当てを選択

任意のユーザーまたはグループを選択します。
securityグループなどを用意してグループ運用しておくと便利です。

許可セットの割り当てでさきほど作成した許可セットを選択します。

グループの設定はこちらです。

動作確認

IAM Identity Centerの設定が完了したら、ログイン画面から確認します。
許可セットを付与したユーザまたはグループにSecurityIncidentInvestigatorという許可セットが追加されていればOKです。

ログインするとリレー状態で設定した管理アカウントのDetectiveサマリー画面が表示されます。

SecurityIncidentInvestigatorのDetectiveの調査権限のみ与えているので、アカウント管理の設定などは変更できません。

メンバーアカウントのDetectiveマスターアカウント化

もう一つのパターンはメンバーアカウント自身がDetectiveのマスターアカウントになる方法です。

冒頭ご紹介した通り、管理アカウントからメンバーアカウントのDetectiveを有効化した場合にメンバーアカウント内でDetectiveでの調査を行うことができません。

メンバーアカウント内でDetectiveを調査する場合にはメンバーアカウント自身がDetectiveのマスターアカウントになる必要があります。

メンバーアカウント自身をマスターアカウントにする方法は簡単で、メンバーアカウント内でaws detective create-graph実行することでメンバーアカウント自身をマスターアカウントにできます。

aws detective create-graph
実行例(クリックで展開)
aws detective create-graph
{
    "GraphArn": "arn:aws:detective:ap-northeast-1:xxxxxxxxxxxx:graph:c41a884e48a44c8e9854f237bf1cf403"
}

aws detective create-graphを実行すると検索機能が表示されます。
もちろんOrganizationsで管理されているDetectiveのグラフとは異なり、メンバーアカウント自身のみを検索できるグラフになります。

企業ポリシーとしてメンバーアカウントが他のAWSアカウントの調査を行えることが問題になる場合にはこちらの方法がおすすめです。

1点注意点として、Organizations管理アカウントで集約している状態でメンバーアカウント自身をマスターアカウントにした場合にはDetectiveのデータ量が2重に発生するので注意が必要です。

Detectiveの削除

ちなみに、Detectiveのメンバーアカウント側の動作グラフが不要になった場合にはaws detective delete-graphで削除できます。

graph_arn=$(aws detective list-graphs --query 'GraphList[].[Arn]' --output text)
aws detective delete-graph  --graph-arn ${graph_arn}

削除後は検索機能が表示されなくなります。

また使用状況についても、Organizations管理アカウントから集約分のみのデータ量になります。

最後に

Organizations環境でのメンバーアカウントからDetectiveを利用する方法を紹介しました。

企業ポリシーに合わせて、クロスアカウントアクセス権限を付与する方法とメンバーアカウント自身をマスターアカウントにする方法を選択いただければと思います。

以上、たかやま(@nyan_kotaroo)でした。