最近,我开始致力于保护对我的S3存储桶的访问,并且我有两个源要授予访问权限,但拒绝访问任何其他源。
在这种情况下,获得访问权限的源例如是我的本地IP或VPC IP范围以及Lambda函数。
我创建了以下S3存储桶策略:
{
"Version": "2019-10-10",
"Statement": [
{
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::480311425080:role/<lambda role name>",
"arn:aws:sts::480311425080:assumed-role/<lambda role name>/<Lambda function name>"
],
"Service": "lambda.amazonaws.com"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::<bucket name>/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"<ip adress>/32",
"<ip adress>/32"
]
}
}
}
]
}
因此,正如您所看到的,我正在使用NotPrincipal
排除我相应的角色和Lambda,而我使用NotIpaddress
排除我的有效IP。
在这种情况下,我仍然可以从Lambda函数连接到S3,但是仍然可以从“可能没有授权IP”连接到S3。所以条件
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"<ip adress>/32",
"<ip adress>/32"
]
}
}
无法正常工作。
也许您会告诉只对NotPrincipal
使用角色ARN,但是这两者都不起作用。
仅将主体作为角色,而“未使用lambda函数指定arn”
"NotPrincipal": {
"AWS": "arn:aws:iam::880719415082:role/lambda_s3_access"
},
应用IP过滤的条件,但无法连接Lambda。
任何想法?
亲切的问候,
Rshad
最近,我开始致力于保护对S3存储桶的访问,我有两个源,我想授予访问权限,拒绝访问任何其他源。在这种情况下,获取......>
Amazon S3存储桶默认为私有。因此,除非您希望覆盖另一个策略中授予的权限,否则没有必要使用Deny
语句