[aws]s3バケットにIP制限をかける
s3にはbasic認証を設定することはできないのですが、IP制限なら設定することができます。
そのやり方を調べてみました。
バケット作成後、「Properties」=>「Permissions」=>「Edit bucket policy」を選択 以下のようなバケットポリシーを設定します。
Resourceにバケット名を入力し、IpAddressに許可したいIPを入力すればIP制限をかけることができます。
ただし、個別にpublic設定にしたファイルにはバケットポリシーが適用されないので注意が必要です。
2015/3/6追記:「"Effect": "Allow"」でアクセス許可設定をするとうまく設定が適用できなかったので「"Effect": "Deny"」を用いるパターンに修正しました
{
"Version": "2012-10-17",
"Id": "S3Policy#{unique_id}",
"Statement": [
{
"Sid": "Stmt#{unique_id}",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::バケット名/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIP": [
"xxx.xxx.xxx.xxx/xx",
"xxx.xxx.xxx.xxx"
]
}
}
}
]
}