我正在尝试此策略以允许用户仅使用特定IP(56.160.12.114)放置和列出对象访问权限,而其余所有其他应该只具有Get访问权限。但是这个政策对我不起作用:
{
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPDeny",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-wicked-awesome-bucket/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": "56.160.12.114/28"
}
}
}
]
}
答案 0 :(得分:2)
此政策说:拒绝任何未使用此IP地址范围的人
没关系,但您还需要一个允许访问的策略,因为默认行为是拒绝。因此,您正在拒绝默认情况下已被拒绝的人。
更好的方法是:
这样的事情:
{
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-wicked-awesome-bucket/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "56.160.12.114/28"
}
}
}
]
}
但请注意,这将授予s3:*
对来自该IP地址范围的任何系统的访问权限(包括连接到该网络范围的任何内容)。确保你没关系。
<强>更新强>
如果您只想授予用户放置和列出对象的权限,请使用:
{
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"s3:PutObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::jstack-b",
"arn:aws:s3:::jstack-b/*"
],
"Condition": {
"IpAddress": {
"aws:SourceIp": "56.160.12.114/28"
}
}
}
]
}