最近はQiitaしか投稿していなくてこちらはサボり気味ですが、ネタがあったので書きます。
内容はタイトルにある通り、参照用IAMユーザに対して、特定のEC2の起動停止が可能な権限を追加していきます。
実施作業
準備
参照用IAMユーザに権限をアタッチするためのIAMグループを作成します。
ポリシーには参照権限のみが付与されている管理ポリシーのReadOnlyAccessをアタッチします。

IAMユーザを作成し、作成したIAMグループに追加します。
IAMグループから権限が付与されています。

起動停止権限の許可
変更操作可能な別のIAMユーザでログインし、起動停止したいEC2にタグを設定します。

起動停止権限の許可するカスタムポリシーを作成して、IAMグループにアタッチします。

ポリシー内容は以下です。
特定のAWSタグを条件として操作を許可しています。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "ec2:*Instances",
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/TARGET": "USER"
}
}
}
]
}
EC2実行
もう一度参照用IAMユーザでコンソールにログインしなおして、タグを設定したEC2の起動を実施してみます。

先ほどとは違ってEC2の起動ができました。

タグをつけていない別のEC2を起動してみます。

タグが付いていない場合は起動に失敗しました。
想定通り、指定のタグを持つリソースに対してのみ操作ができていました。

感想及び所感
参照はさせたいけど変更操作は最低限に絞っておきたいときに、このようにReadOnlyAccessポリシーとタグ制御用のカスタムポリシーを組み合わせることで細かな権限管理が可能となります。
今回はEC2の起動停止に絞って権限を作成しましたが、タグが設定されていればEC2以外のサービスでも使えるので、是非使ってみてください。

