我当前的S3存储桶策略全局启用s3:getObject
和s3:putObject
,我试图通过指定存储桶策略来限制它。
虽然s3:getObject
是安全的,但我想将s3:putObject
的访问权限仅限于特定的AWS Lambda函数。
该功能通过对CloudFront的HTTP请求匿名触发,因此不涉及AWS用户。
如何通过Lambda的ARN标识符限制访问?
现行政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:getObject",
"Resource": "arn:aws:s3:::{bucket_name}/*"
},
{
"Sid": "LambdaPutObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:putObject",
"Resource": "arn:aws:s3:::{bucket_name}/*"
}
]
}
答案 0 :(得分:2)
实际上,所需要的只是为Lambda创建访问策略。有预定义的,例如lambda_basic_execution
。
可以在AWS控制台内找到角色配置:
Lambda > Functions > {name} > Roles
IAM > Roles
这是一个帮助我的具体配置:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::{bucket_name}/*"
}
]
}