首页 > 解决方案 > 如何使用 aws-cli 确定 S3 存储桶是否具有公共访问权限

问题描述

我有一个在控制台中显示“公共访问”的存储桶,但是当我尝试读取 aws s3api get-public-access-block 时,出现错误:

$ aws s3api get-public-access-block --bucket my-test-bucket-name
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help
aws: error: argument operation: Invalid choice, valid choices are:

abort-multipart-upload                   | complete-multipart-upload               
copy-object                              | create-bucket...               

我正在运行 aws-cli 1.15.83:

$ aws --version
aws-cli/1.15.83 Python/2.7.14 Linux/4.14.77-70.59.amzn1.x86_64 botocore/1.10.82

标签: amazon-s3aws-cli

解决方案


您可以使用aws s3api get-bucket-policy-status来找出哪些存储桶已被识别为具有公共访问权限:

aws s3api get-bucket-policy-status --bucket my-test-bucket-name
{
    "PolicyStatus": {
        "IsPublic": true
    }
}

get-public-access-block功能与上周发布的新功能 [1] 相关,这些新功能有助于保护未来的存储桶不会被错误地创建为公共访问权限。

两者都get-public-access-block需要get-bucket-policy-status比 1.15.83 更新的 awscli 版本。我使用的具有这两个命令的版本是 1.16.58。

[1] https://aws.amazon.com/blogs/aws/amazon-s3-block-public-access-another-layer-of-protection-for-your-accounts-and-buckets/


推荐阅读