AWS Organizations で GuardDuty の委任管理者を指定する

2020年8月11日

概要

やりたいこと

マスターアカウント以外で Organizations 配下のアカウントの GuardDuty を管理したい。

AWS 委任管理者

マスターアカウントからメンバーアカウントに対して、管理権限を委任できる機能。

委任管理者は以下ができるようになる。

  • 各アカウントのサービス有効化・無効化
  • アラートステータスの管理

Organizations で GuardDuty

今回は GuardDuty の委任管理者メンバーアカウントを設定する。

GuardDuty を AWS Organizations で使用する場合、任意のアカウントを GuardDuty 委任管理者に指定することができる。

委任管理者として指定されたアカウントは GuardDuty マスターアカウントになり、Organizations 組織のアカウントに対して GuardDuty を有効にして管理するアクセス許可が付与される。

GuardDuty アラートのステータス変更について、アカウント間の関係は以下となる。

  • 委任管理者は可能
  • メンバーアカウントは不可能
  • マスターアカウントは不可能

詳細な関係性については以下を参照。

CLI とコンソールから設定

メンバーアカウントを委任管理者に指定

マスターアカウントの認証情報を指定して、委任管理者の指定を行う。
この委任管理者はリージョンごとに指定となる。

enable-organization-admin-account コマンドで指定。

aws --profile organizations guardduty enable-organization-admin-account \
--admin-account-id 11111111111 \
--region "ap-northeast-1"

list-organization-admin-accounts コマンドで委任管理者の確認ができる。

aws --profile organizations guardduty list-organization-admin-accounts
{
    "AdminAccounts": [
        {
            "AdminAccountId": "11111111111",
            "AdminStatus": "ENABLED"
        }
    ]
}

マスターアカウントのコンソールから確認すると、以下のよう委任管理者を指定できている。

委任管理者からGuardDuty を有効化

コンソールから組織全体に

委任管理者に指定したアカウントのコンソールにログイン。

  • GuardDuty コンソール → アカウント
  • 以下の画面の「有効化」を押すと、Organizations 配下のすべてのアカウントで GuardDuty が有効化される。

コンソールからアカウントを選択して

もちろんアカウントを選択しての管理も可能。

  • アカウントを選択し「メンバーを追加」
  • メンバーとなれば GuardDuty の有効・無効を管理できる

CLI からアカウントを選択して

以下に書いてあるが、有効なディテクター ID、アカウント ID、E メールが必要なため、手間がかかる。。

全リージョンで

上記の方法だと単一リージョンしか有効化できていない。

全リージョンごとに上記の設定を繰り返していく。

  • マスターアカウントで委任管理者アカウントを指定
  • 委任管理者アカウントの GuarDuty コンソールから有効化

エラー

An error occurred (BadRequestException) when calling the EnableOrganizationAdminAccount operation: The request failed because another account is already enabled as GuardDuty delegated administrator for the organization.

別のアカウントが組織のGuardDuty委任管理者として既に有効になっているため、要求は失敗しました。

disable-organization-admin-account コマンドで管理委任者を削除し、その後別アカウントを enable-organization-admin-account で委任管理者に指定しようとしたらエラーが発生。

list-organization-admin-accounts コマンドで確認すると委任管理者は削除されていた。

{
    "AdminAccounts": []
}

enable-organization-admin-account で再度同じアカウントを委任管理者に指定すると、エラーが起きずに指定できた。

その後、マスターアカウントの GuardDuty コンソールから委任管理者の削除を行い、再度、別アカウントを enable-organization-admin-account で委任管理者に指定したら問題なく実行できた。

参考

AWS Organizations による GuardDuty アカウントの管理

【Organizations】組織内すべてのアカウント・すべてのリージョンへの GuardDuty設定を簡単に行う