AWS CLI 仅列出授权存储桶
AWS CLI list only authorized bucket
我的帐户中有 3 个存储桶 A、B 和 C。我创建了一个限制 IAM 用户访问特定存储桶的策略。这是政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::A"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::A/*"
}
]
}
将此策略应用于 IAM 用户后,我尝试使用 aws s3 ls
命令和凭据。
# list buckets
➜ aws s3 ls
2020-06-20 03:54:56 A
2020-06-20 03:54:56 B
2020-06-20 03:54:56 C
➜ aws s3 ls s3://A
PER sub-foler/
➜ aws s3 ls s3://B
An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied
貌似成功限制了A以外bucket的用户访问,但用户仍然可以看到B、C等其他bucket的存在
是否可以将用户列表限制为仅授权给它的存储桶(即 A)?
s3:ListAllMyBuckets
权限授予列出 AWS 账户中存储桶的能力。
将返回所有存储桶。无法限制 返回哪些 个桶。
如果您不希望用户看到其他存储桶的列表,则不要让他们能够列出存储桶名称。
我的帐户中有 3 个存储桶 A、B 和 C。我创建了一个限制 IAM 用户访问特定存储桶的策略。这是政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::A"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::A/*"
}
]
}
将此策略应用于 IAM 用户后,我尝试使用 aws s3 ls
命令和凭据。
# list buckets
➜ aws s3 ls
2020-06-20 03:54:56 A
2020-06-20 03:54:56 B
2020-06-20 03:54:56 C
➜ aws s3 ls s3://A
PER sub-foler/
➜ aws s3 ls s3://B
An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied
貌似成功限制了A以外bucket的用户访问,但用户仍然可以看到B、C等其他bucket的存在
是否可以将用户列表限制为仅授权给它的存储桶(即 A)?
s3:ListAllMyBuckets
权限授予列出 AWS 账户中存储桶的能力。
将返回所有存储桶。无法限制 返回哪些 个桶。
如果您不希望用户看到其他存储桶的列表,则不要让他们能够列出存储桶名称。