[小ネタ] GuardDutyの招待ベース管理でEC2 Malware Protectionを有効化するには招待解除が必要です
こんにちは!クラウド事業本部のおつまみです。
GuardDutyでセキュリティ対策していますか?
今回、GuardDutyの組織管理(招待ベース)を利用している環境で、管理アカウントから EC2 Malware Protectionを有効化しようとしたところ、エラーに遭遇したので共有します。

3行まとめ
- GuardDutyを招待ベースで組織管理している場合、管理アカウントからもメンバーアカウントからもEC2 Malware Protectionを有効化できません
- メンバーアカウントで有効化するには、一旦GuardDutyの招待を解除する必要があります
- メンバーアカウントでMalware Protection有効化後に再度招待すれば、GuardDutyの組織管理とMalware Protectionを両立できます
前提:招待ベースでGuardDutyを管理している環境
GuardDutyのマルチアカウント管理には2つの方式があり、今回の環境では、GuardDutyを招待ベース(Invitation-based)で管理しています。
- AWS Organizations統合:AWS Organizationsと統合し、すべての機能を一元管理(推奨)
- 招待ベース:メール招待でアカウントを関連付ける従来方式(レガシー)
重要: 招待ベースは、AWS Organizationsによる管理とは異なります。招待ベースでは、メンバーアカウントを管理者アカウントに「紐付けている」状態ではありますが、AWS Organizationsの機能を使った統合管理ではありません。
参考:Amazon GuardDuty の複数のアカウント - Amazon GuardDuty
発生した問題
この招待ベース管理の環境で、EC2 Malware Protectionを有効化しようとしたところ、管理アカウントからもメンバーアカウントからも有効化できないという状況に遭遇しました。
メンバーアカウント側のエラー
メンバーアカウントのMalware Protection設定画面には以下のメッセージが表示され、設定を変更できませんでした。
お客様のアカウントは、組織の委任された管理者アカウント ID #XXXXXXXXXXXX によって管理されています
この設定は利用できません

管理アカウント側のエラー
一方、管理アカウント側から一括で有効化しようとしても、以下のエラーメッセージが表示されます。
AWS Organizationsによって管理されていないアカウントの Malware Protection ステータスを更新することはできません

問題の整理
つまり、以下のような矛盾した状況になってしまいました。
- メンバーアカウント側:「管理者アカウントによって管理されているため設定できません」
- 管理アカウント側:「AWS Organizationsで管理されていないため設定できません」
招待ベース管理では、どちらからもMalware Protectionを有効化できないという制限があります。
なぜこの制限があるのか
GuardDutyには2つのアカウント管理方式があります。
1. AWS Organizations による管理(推奨)
- AWS Organizationsと統合
- すべての機能を一元管理可能
- Malware Protectionも管理者アカウントから一括設定可能
2. 招待ベースによる管理(レガシー)
- メールによる招待でアカウントを関連付け
- 一部機能はメンバーアカウント側で個別設定が必要
- Malware Protectionはメンバーアカウント側での個別有効化が必要
今回の環境では招待ベースを使用していたため、メンバーアカウントで個別に設定する必要がありました。
しかし、招待を受けている状態では「組織によって管理されている」と判断され、設定変更ができないという矛盾した状況に陥っていました。
ドキュメントにも以下の通り記載されています。
メンバーアカウントで GuardDuty Malware Protection for EC2 のサービスにリンクされたロール (SLR) が作成されている必要があります。 AWS Organizationsによって管理されていないメンバーアカウントで、管理者アカウントが GuardDuty 実行型マルウェアスキャン機能を有効にすることはできません。
参考:マルチアカウント環境での GuardDuty 実行型マルウェアスキャンの有効化 - Amazon GuardDuty
解決方法:一旦招待を解除する
手順1:管理者アカウントで招待を解除
管理者アカウントのGuardDuty > アカウント画面から、対象のメンバーアカウントを選択し、「関連付けの解除」を実行します。

※画面の「タイプ」列に「By Invitation」と表示されており、招待ベースで管理されていることが確認できます。
また、画面上部には以下の情報メッセージが表示されています。
招待によって管理されるメンバーアカウントについては、こちらの指示に従って、
GuardDuty Malware Protection を有効にします。
このメッセージからも、招待ベース管理ではMalware Protectionの有効化に特別な手順が必要であることがわかります。
解除が完了すると、以下のメッセージが表示されます。
1個のアカウントを正常に 関連付けを解除済み しました

手順2:メンバーアカウントでMalware Protectionを有効化
メンバーアカウントに切り替え、GuardDuty > Malware Protection > EC2画面で「有効にする」をクリックします。

これで無事にEC2 Malware Protectionが有効化されます。
手順3:再度招待する(オプション)
必要に応じて、管理者アカウントから再度メンバーアカウントを招待すれば、GuardDutyの組織管理とMalware Protectionを両立できます。

注意点
招待ベースとOrganizations管理の違い
招待ベースでは、以下の機能がメンバーアカウント側での個別設定が必要です。
- EC2 Malware Protection
- Lambda Protection(一部設定)
- その他の保護プラン
一方、AWS Organizations統合を使用している場合は、これらすべてを管理者アカウントから一元管理できます。
移行を検討すべきケース
以下に該当する場合は、招待ベースからAWS Organizations管理への移行を検討することをお勧めします。
- すでにAWS Organizationsを使用している
- 複数のメンバーアカウントを管理している
- 設定の一元管理を実現したい
移行方法については、公式ドキュメントを参照してください。
参考:Amazon GuardDuty の複数のアカウント - Amazon GuardDuty
まとめ
今回は GuardDutyの招待ベース管理では、EC2 Malware Protectionをメンバーアカウントで有効化する際に一旦招待を解除する必要があるということを紹介しました。
まとめると、
- 管理者アカウントで対象アカウントの関連付けを解除
- メンバーアカウントでMalware Protectionを有効化
- (必要に応じて)管理者アカウントから再招待
この制限を理解しておくことで、スムーズにMalware Protectionを展開できます。可能であれば、AWS Organizations統合への移行も検討してみてください。
最後までお読みいただきありがとうございました。
どなたかのお役に立てれば幸いです。
以上、おつまみ(@AWS11077)でした!








