我试图借助lambda函数在S3存储桶中进行编写,但希望S3存储桶仅可用于办公室网络中的IP。
我已经使用了此存储桶策略,但这不允许我的lambda写入S3存储桶,当我删除IP阻止部分时,lambda函数可以正常工作。
我如何更改此存储桶策略,以便它允许lambda写入但不允许外部IPS访问S3存储桶?
谢谢!
{
"Version": "2012-10-17",
"Id": "",
"Statement": [
{
"Sid": "AllowSESPuts",
"Effect": "Allow",
"Principal": {
"Service": "ses.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::mybucket.net/*",
"Condition": {
"StringEquals": {
"aws:Referer": "230513111850"
}
}
},
{
"Sid": "AllowECSPuts",
"Effect": "Allow",
"Principal": {
"Service": "ecs-tasks.amazonaws.com"
},
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::mybucket.net/*"
},
{
"Sid": "",
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::abc.net/*",
"arn:aws:s3:::abc.net"
],
"Condition": {
"StringNotLike": {
"aws:userId": [
"AROAJIS5E4JXTWB4RTX3I:*",
"230513111751"
]
},
"NotIpAddress": {
"aws:SourceIp": [
"81.111.111.111/24" --dummy IP
]
}
}
}
]
}
答案 0 :(得分:1)
通常,如果可以避免在策略中使用Deny
条语句,则会使工作更加轻松。
因此,您可以配置:
由于默认情况下拒绝访问,因此存储桶策略中无需使用Deny
语句。
答案 1 :(得分:0)
一种典型的方法是将lambda函数放置在专用VPC子网内。然后将一个S3网关VPC端点附加到该端点,并将相应的S3存储桶策略设置为仅允许从VPC端点执行某些操作。 [ref]