読者です 読者をやめる 読者になる 読者になる

らくがきちょう

なんとなく

特定の S3 Bucket にしかアクセス出来ない IAM Role を作る

例えば EC2 インスタンスからバックアップを S3 に保存する為に AmazonS3FullAccess の Policy を付与すると、不必要な Bucket までフルアクセス出来てしまいます。操作ミス等があっても、意図しない Bucket には影響を与えないようにする為には『指定した Bucket にしかアクセスさせない Policy』を作成することで対応可能です。

例えば「SAMPLE.BUCKET」という Bucket にのみ、アクセスを許可する Policy は以下のようになります。s3:ListAllMyBuckets は Allow しているので例えば aws s3 ls で Bucket 名を列挙することは出来ますが、aws s3 ls ANOTHER.BUCKET で許可していない Bucket の中身を表示しようとするとエラーになります(拒否されます)。当然、aws s3 ls SAMPLE.BUCKET はエラーにならず、Bucket の中身が表示されます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::SAMPLE.BUCKET",
                "arn:aws:s3:::SAMPLE.BUCKET/*"
            ]
        }
    ]
}