EC2でIAMロールとIAMユーザ、どちらが強い
知っていそうで知らないこと。
かなり初歩的なことかもしれないけど調べてみても見つけられなかったので、
簡単に検証できそうだしやってみました。
ロールをつけてEC2を起動
今回の検証ではEC2からのS3アクセスで勝負します。
まず以下のIAMポリシーがついたIAMロールがアタッチされたEC2インスタンスを起動します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "*" } ] }
起動後、EC2にログインしてS3との接続テストを行います。
aws s3 ls s3://mybucket 2016-06-29 10:13:41 0 test.txt 2016-06-23 13:25:11 14 testfile.txt
もちろん見れます。
ユーザを作ってaws configure
次にDeny Allのポリシーを与えたユーザを作成します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAll", "Effect": "Deny", "Action": "*", "Resource": "*" } ] }
このユーザのアクセスキーを使ってaws configure
を設定します。
[root@ip-10-0-1-165 ~]# aws configure AWS Access Key ID [None]: AKIA*********************** AWS Secret Access Key [None]: 2M6CqEyNCHN********************* Default region name [None]: ap-northeast-1 Default output format [None]: json
いざ勝負!
[root@ip-10-0-1-165 ~]# aws s3 ls s3://mybucket A client error (AccessDenied) occurred when calling the ListObjects operation: Access Denied
結果
IAMユーザのDeny Allが勝ちました。
しかし、DenyとAllowを逆にしたらどうなるか。
とか
与えるポリシーによってはこの通りではないかもしれないですが、
とりあえず、今回知りたいことはわかったので良しとします。