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 账户中存储桶的能力。

将返回所有存储桶。无法限制 返回哪些 个桶。

如果您不希望用户看到其他存储桶的列表,则不要让他们能够列出存储桶名称。