概要
やりたいこと
マネジメントアカウント(旧名組織マスターアカウント)以外でメンバーアカウントの GuardDuty を管理したい。
AWS 委任管理者
マネジメントアカウントからメンバーアカウントに対して、一部の AWS サービスの管理権限を委任できる機能。
利用できるサービスには以下がある。
- GuardDuty
- CloudFormation StackSets
- Security Hub etc…
委任管理者は以下ができるようになる。
- メンバーアカウントのサービス有効化・無効化
- アラートステータスの管理
AWS Organizations から GuardDuty 委任管理者を指定
マネジメントアカウントの AWS Organizations から、GuardDuty の委任管理アカウントを設定する。
委任管理アカウントとして指定されたアカウントは、 GuardDuty に対してのみ、マネジメントアカウント配下の AWS アカウント全てに以下の管理権限を持つようになる。
- GuardDuty の有効化・無効化
- GuardDuty アラートのステータス変更
委任管理アカウント、メンバーアカウント、マネジメントアカウントの GuardDuty に対する権限は以下となる。
- 委任管理アカウントは可能
- メンバーアカウントは不可能
- マネジメントアカウントは不可能
詳細な関係性については以下を参照。
委任管理者を指定する理由
マネジメントアカウントから全ての設定をしたほうが楽じゃん、となるが委任管理者を指定する理由は権限を最小化させるため。
AWSは「最小権限の原則」を推奨しており、この委任管理者から各 AWS サービスを管理したほうがいい。
例えば、 AWS Landing Zone ではセキュリティ専用のアカウントを作成し、GuardDuty 管理アカウントを指定(委任管理者)している。
ただし、委任管理者は組織全体への ConfigRules の適用はできるが、組織単位 (OU) ごとの適用は行えない。
CLI とコンソールから設定
メンバーアカウントを委任管理者に指定
マスターアカウントの認証情報を指定して、委任管理者の指定を行う。
この委任管理者はリージョンごとに指定となる。
enable-organization-admin-account コマンドで使う。
aws guardduty enable-organization-admin-account \ --profile organizations \ --admin-account-id 11111111111 \ --region "ap-northeast-1"
list-organization-admin-accounts コマンドで委任管理者の確認ができる。
aws guardduty list-organization-admin-accounts \ --profile organizations
{
"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 で委任管理者に指定したら問題なく実行できた。
コメント