[英]How to restrict S3 bucket access by network
我想允许对我的S3存储桶进行公共读取访问,但2个文件夹除外。
在2个文件夹中,我只想允许来自特定网络的访问者访问。
有没有办法定义这个?
有几种方法可以授予对存储在Amazon S3中的数据的访问权限:
您的用例将符合“ 存储桶策略” 。
您可以使用以下策略授予对整个Amazon S3存储桶的访问权限 :
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::examplebucket/*"]
}
]
}
您可以根据以下IP地址范围来授予访问权限 :
{
"Version": "2012-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::examplebucket/*",
"Condition": {
"IpAddress": {"aws:SourceIp": "54.240.143.0/24"},
"NotIpAddress": {"aws:SourceIp": "54.240.143.188/32"}
}
}
]
}
您希望“允许对我的S3存储桶进行公共读取访问,但2个文件夹除外”的情况要困难一些,因为这是一个“除”之外的所有用例。
选项1:特定的文件夹
例如:
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource":["arn:aws:s3:::examplebucket/folder1/*",
"arn:aws:s3:::examplebucket/folder2/*"]
},
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": ["arn:aws:s3:::examplebucket/folder3/*",
"arn:aws:s3:::examplebucket/folder4/*"],
"Condition": {
"IpAddress": {"aws:SourceIp": "54.240.143.0/24"}
}
]
}
但是,这要求您专门列出每个文件夹。
选项2:除...以外的所有内容
在此规则中,您授予公共访问权限,但是如果某些文件夹不在正确的IP范围内,则拒绝它们:
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource":["arn:aws:s3:::examplebucket/*"]
},
{
"Sid": "IPAllow",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": ["arn:aws:s3:::examplebucket/folder3/*",
"arn:aws:s3:::examplebucket/folder4/*"],
"Condition": {
"NotIpAddress": {"aws:SourceIp": "54.240.143.0/24"}
}
]
}
注意使用的Deny
与NotIpAddress
,它说,访问被拒绝,如果请求不是从定义的IP地址范围的到来。
但是, DENY
会覆盖ALLOW
,因此这也意味着,除非您来自该IP地址范围,否则您将无法访问受限存储区-即使您的IAM用户已被明确授予ALLOW
权限也是如此。 例如,如果您是具有S3中所有权限的管理员,但如果您来自给定IP范围,则仍将拒绝访问受限制的文件夹。 因此,它可能对您来说过于严格,因为它会影响所有使用情况,即使通过控制台/ API访问也是如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.