IAM FullAccess から一部アクションを拒否する権限を作る
概要
- IAM のロールを作成する際に、標準で定義されているAWS 管理ポリシーを使用することがあるかと思います。AWS 管理ポリシーは、一から作るより便利ですが、FullAccess (例: AmazonS3FullAccess, AmazonEC2FullAccess)だと権限が強く、ReadOnly (例: AmazonS3ReadOnlyAccess, AmazonEC2ReadOnlyAccess)だと権限が足りないといった悩みがあります。
- 今回は、その様な悩みを解消すべく、FullAccess から一部アクションを拒否する権限を作りたいと思います。AmazonS3FullAccess から “DeleteBucket" のアクションだけを拒否した権限とします。
IAM FullAccess から一部アクションを拒否する権限を作る方法
- 標準のAmazonS3FullAccess は、以下の権限となります。
- 以下の様に、Effect の要素を追加し、"Deny" を指定します。
- 上記JSON を使用し、IAM ポリシーを作成します。IAM ロールにIAM ポリシーを関連付けます。
IAM の権限をテストする
- それでは、作成したIAM ロールをEC2 に割り当て権限のテストを行います。
- EC2 からaws s3 の cli を実行し、バケットの作成 (書き込み)、オブジェクトの cp (書き込み)、オブジェクトの ls (読み取り) に成功しました。
- EC2 からaws s3 の cli を実行し、バケットの削除 (書き込み) に失敗しました。DeleteBucket の権限がありません。
- もちろん、s3 以外の権限もありません。想定通りの動作を確認しました。