有没有办法根据客户端IP地址限制存储在Amazon S3中的文件的访问权限?
我有一个存储在那里的文件,只能通过特定的IP地址访问。怎么做?
答案 0 :(得分:35)
是的,虽然我自己没有用过它。
S3支持使用“访问策略语言”对存储桶和对象进行粒度控制。可以使用特定的白名单和黑名单IP语句。但是,您必须编写APL语句并上传它们。
http://docs.amazonwebservices.com/AmazonS3/latest/dev/AccessPolicyLanguage.html
以下是两个条件部分示例:
白名单
"Condition" : {
"IpAddress" : {
"aws:SourceIp" : ["192.168.176.0/24","192.168.143.0/24"]
}
}
黑名单
"Condition" : {
"NotIpAddress" : {
"aws:SourceIp" : ["192.168.176.0/24","192.168.143.0/24"]
}
}
答案 1 :(得分:20)
Amazon在他们的S3文档中的“Bucket Policy examples”下的Restricting Access to Specific IP Addresses处描述了这一点:
此语句中的条件标识允许的IP地址范围为54.240.143。*,但有一个例外:54.240.143.188。
{
"Version": "2012-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::examplebucket/*",
"Condition": {
"IpAddress": {"aws:SourceIp": ["54.240.143.0/24", "1.2.3.4/32" ]},
"NotIpAddress": {"aws:SourceIp": "54.240.143.188/32"}
}
}
]
}
您可以在AWS S3控制台中添加类似的内容。选择您的存储桶,单击Properties选项卡,然后单击Permissions。单击“添加存储桶策略”并将其粘贴到弹出对话框中。
我修改了Amazon的示例,以显示如何通过提供JSON数组而不是字符串来在策略中包含多个IP范围。 “1.2.3.4/32”的“aws:SourceIp”条目表示单个IP地址1.2.3.4也被授予访问权限。