我正在尝试编写一个存储桶策略,拒绝除我的特定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全局条件上下文密钥不适用于所有服务 . 我接近这个吗?
1 回答
你正在倒退 .
除非你公开一个桶,否则没有人可以访问这些内容 .
为Lambda创建角色,为其授予访问存储区的权限 . 将角色分配给Lambda .
现在只有Lambda可以访问存储桶 . 如果其他服务或用户需要访问存储桶,请创建授予该用户或服务访问权限的IAM策略或角色 .