share facebook facebook2 twitter menu hatena pocket slack

2015.06.23 TUE

S3のIAM設定のハマりどころ

WRITTEN BY今岡 久敏

以前書いた記事のS3のIAM設定ですが、最近のマネジメントコンソールだと怒られるので、修正版とその他ハマりどころを書きます。

StringEquals で “”は指定できないよ!

        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::<your bucket>"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:prefix": [
                        ""
                    ]
                }
            }
        },

と以前書いたのですが、ポリシーエラーだと言われて通りません。修正点は StringEquals => StringLike に修正してください、これで通ります。

CloudBerry専用の対策

前回の記事の設定では、CloudBerryを利用した場合のみ、自分のディレクトリまで掘ることが出来ません。対策はコチラです。(CloudBerry-Labに問い合わせて教えてもらいました)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::<Your Backet>"
            ],
            "Condition": {
                "StringLike": { "s3:prefix": [ "" ] },
                "StringEquals": { "s3:delimiter": [ "/" ] }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::<Your Bucket>"
            ],
            "Condition": {
                "Null": { "s3:prefix": "true" },
                "StringEquals": { "s3:delimiter": [ "/" ] }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::<Resource Path>"
            ]
        }
    ]
}

StringNotLikeで複数条件したいなら

            "Condition": {
                "StringNotLike": {
                    "s3:prefix": [
                        "hoge/*",
                        "arege/*"
                    ]
                }
            }

とします。 Condition の下に StringNotLikeを2つ書くのもポリシーエラーで通りません。
自分も、すぐ忘れてしまうので、メモします。

元記事はこちら

S3のIAM設定のハマりどころ

今岡 久敏

「常に新しいモノの方が、古いモノより優れている、というマインドを持てなくなった時、それはエンジニアとしての死を意味する」え、誰の言葉だって?俺の言葉だよ。