「CloudFormation スタックを作成・更新できる IAM ポリシーを指定されたユーザ(たち)に付与する」 CloudFormation テンプレート。 このテンプレートは「特定のスタックだけを更新できる」といった細かな制御を行わず、(下で述べる例外を除く)すべてのスタックを操作できるポリシーを定義するため、小規模な開発向けである。
- CloudFormation を操作する IAM ユーザ(複数可)を作成する (optional / しかし、このテンプレートが定義するポリシーはそれなりに強力(例えば S3) なので、他の一般用途のユーザとは分離することを勧める)
- このユーザが更新すべきでない CloudFormation スタックを決める (optional / その選択にあたっては下の「注意」節を参照)
- 十分に強い権限を持つユーザ(事実上は管理者)でログインする (このテンプレートが定義するポリシー自身に加えて、 IAM グループ・ロールの作成、ポリシーのアタッチなどをできる必要がある)
- CloudFormation コンソールからこのテンプレートを指定してスタックを作成する
- その際、1.で決めたユーザを
Users
、2.で決めたスタックをStacksNotAllowedToOperate
パラメータ(複数可)として指定する
このテンプレートで権限を付与されたユーザは、このテンプレートから作られるスタック自身と StacksNotAllowedToOperate
パラメータで指定されたスタックを除くすべてのスタックを更新できる。
更新できるスタックに制限があるのは、 「IAM リソースを変更できるスタック」を更新できるユーザは(事実上ほとんど確実に)自身の権限を昇格できてしまうためである。
これを問題にしないならば、単に管理者の IAM ユーザで CloudFormation をお使いなさい。
このテンプレートから作るスタックを維持する間、 「IAM リソースを変更できるスタック」のすべてが常に StacksNotAllowedToOperate
パラメータに含まれることを確認せよ。
このパラメータはコンマ区切りの ARN で指定し、細かいことを気にしないなら arn:*:cloudformation:*:*:stack/<StackName>/*
の形式である。
ただし、 ARN の最後の要素2文字は /*
の形でスタックの ID をワイルドカードに置き換える必要がある。
さもないとそのスタックの操作が禁止されない場合がある。 (CloudFormation の undocumented な挙動)
MIT License. See the head of CFnOperator.template.