Amazon web services 拒绝特定范围以外的所有IP访问AWS S3
我有一个S3存储桶(“myBucket”),只有用户可以访问它,我们称之为“s3user”。我已将IAM策略附加到此用户,如下所示:Amazon web services 拒绝特定范围以外的所有IP访问AWS S3,amazon-web-services,amazon-s3,acl,amazon-iam,Amazon Web Services,Amazon S3,Acl,Amazon Iam,我有一个S3存储桶(“myBucket”),只有用户可以访问它,我们称之为“s3user”。我已将IAM策略附加到此用户,如下所示: { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:ListBucket",
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::myBucket"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:GetObjectVersion"
],
"Resource": "*"
}
]
}
{
"Version": "2012-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::myBucket/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"1.2.3.4/27",
"2.3.4.1/28",
"5.6.7.8/29"
]
}
}
}
]
}
我将此IAM策略附加到用户“s3User”,授予对“myBucket”的只读访问权。到目前为止还不错
现在,我添加了第二个策略,但现在不是IAM策略,而是S3 Bucket策略,如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::myBucket"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:GetObjectVersion"
],
"Resource": "*"
}
]
}
{
"Version": "2012-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::myBucket/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"1.2.3.4/27",
"2.3.4.1/28",
"5.6.7.8/29"
]
}
}
}
]
}
我希望此显式拒绝将拒绝所有不来自指定源IP范围的请求。但是,它仍然允许我列出来自其他IP的bucket内容。似乎桶政策根本没有效果
根据,当您有多个策略时,它们都被应用,并且显式拒绝优先于显式允许,所以我认为这应该是可行的,但事实并非如此
你知道为什么我不能基于sourceIP地址拒绝对bucket的请求吗
谢谢 您应该更新您的
Deny
策略,以包括对bucket本身而不是其内容执行的操作(/*
):
当然,如果只有使用IAM策略的用户才能访问bucket,您可以简单地在原始IAM策略上添加
IpAddress
条件,以便他们只能使用给定IP地址集中的bucket。这将避免使用拒绝
策略。您所说的“允许我从其他IP访问存储桶”是什么意思?具体是哪个命令?Deny
策略指的是mybucket/*
,可能不单独适用于mybucket
,因此ListBucket
可能仍然被允许。我的意思是我仍然可以列出bucket的内容(编辑问题以澄清这一点)谢谢,我会在周一检查这是否有效并让你知道。更新:它有效。我编辑了你的答案,在同一个声明中声明了两个资源(bucket及其内容),以避免重复IP地址。用户需要对S3 bucket进行只读访问,并且我们已经对用户应用了下面的IAM策略,正如您所建议的,我们没有应用任何bucket策略,因为这是唯一具有特定IP地址的用户。还是不行。请建议<代码>{“版本”:“2012-10-17”,“声明”:[{“Sid”:“VisualEditor0”,“效果”:“允许”,“操作”:[“s3:GetObject”,“s3:ListBucket”],“资源”:[“arn:aws:s3:::市场日志”,“arn:aws:s3:::marketplace logs/*”,],“Condition:{“IpAddress:{“aws:SourceIp:“13.xxx.xxx.xxx/32”}}}}}}}}}@nitin194请创建一个新问题,而不是通过对旧问题的评论提问。