我试图将IAM角色限制为只能访问S3存储桶中的特定子文件夹(键前缀)。这是我正在使用的政策JSON,但当前用户仍可以访问存储桶中的其他文件夹:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::somebucket",
"arn:aws:s3:::somebucket/*"
]
},
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": [
"s3:ListBucketVersions",
"s3:ListBucketByTags",
"s3:GetBucketAcl"
],
"Resource": [
"arn:aws:s3:::mybucket"
]
},
{
"Sid": "VisualEditor3",
"Effect": "Allow",
"Action": [
"s3:GetObjectAcl",
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::mybucket/datasets/company1/*"
]
}
]
}
目前,使用该角色,我仍然可以做到,例如
aws s3 cp s3://mybucket/datasets/company2/dataset.csv
并下载数据集。我在做什么错了?
当我尝试模拟该策略时,这似乎是正确的(尝试在mybucket/datasets/company2/dataset.csv
上进行getObject隐式失败,但这实际上没有发生。此用户没有附加任何其他策略。