我正在尝试编写一个存储桶策略,拒绝除了我的特定Lambda之外对我的存储桶的所有访问权限。我试图通过将Lambda的角色列入白名单并假定角色ARN来实现这一目标,如下面的政策所示。
之所以这样,是因为我在公司的AWS账户下工作,联盟用户认为他们是一名高级用户"或"只读"角色。 "超级用户"角色可以完全访问s3。我没有管理这些角色的权限,我需要阻止其他企业用户承担这些角色的权限用户"访问我的桶的角色。
我正在尝试使用AWS:SourceArn全局条件上下文密钥获取角色ARN,但似乎AWS:SourceArn无法正常工作:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "WhitelistRegistryAPILambdaRole",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:PutObject",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
"s3:GetObjectVersion",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::{BucketName}",
"arn:aws:s3:::{BucketName}/*"
],
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:iam::{AccountId}:role/{LambdaRoleName}"
}
}
},
{
"Sid": "WhitelistRegistryAPILambdaAssumedRole",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:PutObject",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
"s3:GetObjectVersion",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::{BucketName}",
"arn:aws:s3:::{BucketName}/*"
],
"Condition": {
"ArnLike": {
"AWS:SourceARN": "arn:aws:sts::{AccountId}:assumed-role/{LambdaRoleName}/{LambdaFunctionName}"
}
}
}
]}
docs表示aws:SourceArn全局条件上下文密钥不适用于所有服务。我接近这个吗?
答案 0 :(得分:2)
你正在倒退。
除非您公开说明,否则无人可以访问内容。
为Lambda创建角色,为其授予访问存储区的权限。将角色分配给Lambda。
现在只有Lambda可以访问存储桶。如果其他服务或用户需要访问存储桶,请创建授予该用户或服务访问权限的IAM策略或角色。