我的目标是创建仅具有API访问权限和对特定S3存储桶的允许操作集的技术用户。
我使用了“策略生成器”并复制/粘贴了存储桶的ARN。我还复制/粘贴了用户的ARN(IAM控制台用户配置文件)。为了简化测试,我授予了对所有操作(“ s3:*)
的访问权限在创建用户期间,我没有授予任何权利。我只检查了“使用访问密钥”并下载了certificate.csv文件。
测试场景如下:
这是我对存储桶应用的策略:
{
"Id": "Policy4321",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt12345",
"Action": "s3:*",
"Effect": "Allow",
"Resource": "arn:aws:s3:::my-bucket-name",
"Principal": {
"AWS": [
"arn:aws:iam::111111111111:user/svc_acc"
]
}
}
]
}
我的方法有什么问题?
答案 0 :(得分:0)
您的方法很好,但是您的政策不正确。
此策略仅适用于存储桶本身,不适用于其持有的对象。因此,根据您调用的命令,您可能会获得“访问被拒绝”。将/ *添加到存储桶ARN中,以将其应用于对象。
“资源”:“ arn:aws:s3 ::: my-bucket-name / *”
但是,在这种情况下,我将使用IAM策略,因为它已绑定到用户。您还可以通过检查其附加政策轻松检查用户可以访问的内容。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": ["arn:aws:s3:::my-bucket-name/*"]
}
]
}