AWS
aws-cli

複数アカウントの複数リージョンでGuardDuty有効化(少量アカウント)


背景

業務で扱っているAWSアカウントが複数あり、こいつらをポチポチ設定せずに一括で全リージョンでGuardDutyを有効化すべく、下記ブログを参考に検証用の10アカウントくらいでCloudFormationのStackSetsで有効化してみました。本記事では追加で必要になった手順をメモ。

[新機能] CloudFormation StackSetsを試してみた

一発でGuardDutyを全リージョン有効化して通知設定するテンプレート作った


手順

① 管理用ロール(AdministrationRole)作成

② 実行用ロール(StackSetsExecutionRole)作成

③ GuardDuty有効化テンプレート用意

④ StackSets作成


① 管理用ロール(AdministrationRole)作成

管理用アカウントにAdministrationRoleを作成します。

[新機能] CloudFormation StackSetsを試してみた に記載の通り実行。


② 実行用ロール(StackSetsExecutionRole)作成

複数のアカウントに実行用のロールを作成します。

[新機能] CloudFormation StackSetsを試してみた に記載の通り実行できますが、10アカウント分の管理コンソールでこれをやるのは辛い。

CLIを用いて、CloudFormationでAWSCloudFormationStackSetExecutionRoleを作成します。

$ aws cloudformation create-stack --profile XXXXX --stack-name Create-AWSCloudFormationStackSetExecutionRole --template-body file://AWSCloudFormationStackSetExecutionRole.yml --parameters ParameterKey=AdministratorAccountId,ParameterValue=XXXXXXXXXXXX --capabilities CAPABILITY_NAMED_IAM

ParameterKey=AdministratorAccountId,ParameterValue=XXXXXXXXXXXXで管理用アカウントのIDを指定します。なお、実行ロールのテンプレートはAWSドキュメントの前提条件: スタックセットオペレーションのアクセス権限の付与からダウンロードしたものを使用したので、ParameterKey=AdministratorAccountIdとなっています。参考ブログのテンプレートを使用する場合には ParameterKey=MasterAccountIdにする必要があります。

また、私のハマりポイントでしたが、IAMを作成する時には--capabilities CAPABILITY_NAMED_IAMがないとエラーになります。作成成功すると下記結果が返ってきます。

WS000004.JPG


③ GuardDuty有効化テンプレート用意

snsの通知まで設定する必要がなかった、というかslack通知するlambdaを後で作成しようと思っていたので、シンプルにGuardDuty有効化のテンプレートだけ用意しました。デザイナーからボンとアイコンをおいて作成したので、メタデータとか入っていますが、いらなそうです。そのままにしていますが。。。


guardduty_enable_yaml.template

AWSTemplateFormatVersion: 2010-09-09

Metadata:
'AWS::CloudFormation::Designer':
ca7cdb3f-c4ca-4b22-b78a-ff95d239eb92:
size:
width: 60
height: 60
position:
x: 216
'y': 110
z: 0
Resources:
GDDZ0EQ:
Type: 'AWS::GuardDuty::Detector'
Properties:
Enable: true
Metadata:
'AWS::CloudFormation::Designer':
id: ca7cdb3f-c4ca-4b22-b78a-ff95d239eb92


④ StackSets作成

[新機能] CloudFormation StackSetsを試してみた に記載の通り実行するのですが、複数アカウントなので、デプロイオプションの設定で「スタックがデプロイされている有効なアカウントのカンマ区切り値(CSV)のファイルをアップロード」を選択します。

スタックはまだデプロイされてないのですが、実行ロールさえ作成されてあれば問題なしでした。

WS000005.JPG

CREATE_COMPLETEが出てくるまで時間がかかりますが、気長に待ちます。

以上。