[英]IAM Policy: Users cannot access S3 bucket
我创建了一个用户并分配了以下内联策略。 同时,我在 s3 中创建了一个存储桶。
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::bucketname"
当我将此策略应用于特定用户并尝试访问 S3 时,资源中列出的特定存储桶未显示? 我担心我已经对所有 s3 进行了操作,然后我的存储桶没有出现在 S3 中吗?
通过可视化编辑器,我尝试为相同的事物创建策略,策略如下所示
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:ListStorageLensConfigurations",
"s3:ListAccessPointsForObjectLambda",
"s3:GetAccessPoint",
"s3:PutAccountPublicAccessBlock",
"s3:GetAccountPublicAccessBlock",
"s3:ListAllMyBuckets",
"s3:ListAccessPoints",
"s3:ListJobs",
"s3:PutStorageLensConfiguration",
"s3:ListMultiRegionAccessPoints",
"s3:CreateJob"
],
"Resource": "*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::bucketname"
}
]
}
为什么要为列表创建单独的操作并允许每个资源使用?
一些操作在存储桶级别执行(例如列出存储桶),而一些操作在对象级别执行(例如下载对象)。
您可以同时授予这两种权限:
以下是用户策略示例 - Amazon Simple Storage Service的示例:
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action": "s3:ListAllMyBuckets",
"Resource":"*"
},
{
"Effect":"Allow",
"Action":["s3:ListBucket","s3:GetBucketLocation"],
"Resource":"arn:aws:s3:::bucketname"
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:DeleteObject"
],
"Resource":"arn:aws:s3:::bucketname/*"
}
]
}
您也可以将它们全部组合成一个策略:
{
"Version":"2012-10-17",
"Statement":[
{
"Effect": "Allow",
"Action": "*",
"Resource": ["arn:aws:s3:::bucketname", "arn:aws:s3:::bucketname/*"]
}
]
}
但请注意,此“全部允许”策略也授予用户删除对象和存储桶的权限,因此在授予用户此类权限时应非常小心。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.