s3のバケットに
CloudFrontからはアクセスさせる。
S3への直接アクセスは、開発拠点からのみアクセスできる
S3にアップロードするEC2の所属するVPCからのみアクセスできる
というポリシーが必要になった。
NotPrincipalの存在に気付かなかったので少しハマった。
別途VPCのエンドポイントを作成して、使用するVPCからのアクセスを限定する必要がある。
qiita.rb
{
"Version": "2012-10-17",
"Id": "IP-VPC-CloudFront-Policy",
"Statement": [
{
"Sid": "2",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E233333eee"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::production-s3/*"
},
{
"Sid": "Allow-from-specific-IP-and-VPC-only",
"Effect": "Deny",
"NotPrincipal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E233333eee"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::production-s3/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"<IPアドレス>",
"<IPアドレス>",
"<IPアドレス>",
"<IPアドレス>
]
},
"StringNotEquals": {
"aws:sourceVpc": "vpc-<vpcid>"
}
}
}
]
}