by shigemk2

当面は技術的なことしか書かない

IAMポリシーでS3アクセスを制御したい人生だった

一旦こういうアレ。

test-log/1/2/3/ 以下のディレクトリにだけアクセスしたい。他のバケットは見えないでいて欲しい。という感じのやつ。

つまりどういうことかっていうと、たとえば以下の様な感じでバケットの一覧があるとして、

aws s3 ls s3://
test-log
test-test1
test-test2
test-test3

test-log/1/2/3以外はユーザーから見えないようにしたいっていう寸法。それはこんな感じ。出尽くしたネタだけど。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:ListBucketVersions"
            ],
            "Resource": "arn:aws:s3:::test-log",
            "Condition": {
                "StringLike": {
                    "s3:prefix": "1/2/3/*"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::test-log/1/2/3/*"
        }
    ]
}

問題はこのポリシーをアタッチしても見えちゃうバケットがある、ということ。バケット名を直接指定して、lsすると中身の見えるバケットがある。実を言うとS3バケットにもポリシーがあって、そっちでアクセスを制御している場合もあるので、注意が必要だ!

docs.aws.amazon.com

dev.classmethod.jp

teketeke55.hatenablog.com

docs.aws.amazon.com

docs.aws.amazon.com

cloudpack.media

recipe.kc-cloud.jp

docs.aws.amazon.com