gpt4 book ai didi

boto3 - 博托 : Find if bucket is public or private

转载 作者:行者123 更新时间:2023-12-03 20:27:08 24 4
gpt4 key购买 nike

我找不到轻松了解我的 AWS S3 存储桶是公共(public)还是私有(private)的方法。

我期待做list_bucket_response = s3client.list_buckets()并直接知道存储桶是否可公开访问。
我遇到了https://jgreenemi.com/how-to-check-if-your-s3-buckets-allow-public-read-acls/但就我而言,当我列出存储桶时,我没有得到 URI。

我也试过s3client.get_bucket_acl(Bucket=bucket_name)没有成功。

最佳答案

您必须评估 3 个不同的条件来检查存储桶是否是公共(public)的:

  • 政策
  • ACL
  • 阻止公共(public)访问设置

  • 据此 guide :
  • 使用 get_public_access_block() 检查是否设置了阻止公共(public)访问选项的方法。
  • response = s3client.get_public_access_block(Bucket='bucket_name')
    如果以下两项都设置为 true,则存储桶不是公开的:
    response['PublicAccessBlockConfiguration']['BlockPublicAcls']
    response['PublicAccessBlockConfiguration']['BlockPublicPolicy']
  • 使用 get_bucket_policy_status () 方法来检查策略是否允许公共(public)访问。

  • get_bucket_policy_status

    Retrieves the policy status for an Amazon S3 bucket, indicating whether the bucket is public

    response = s3_client.get_bucket_policy_status(Bucket='bucket_name')
    如果满足以下条件,则存储桶是公共(public)的:
    response['PolicyStatus']['IsPublic']
  • 检查 ACL 以查看被授权者是 AllUsers 还是 AuthenticatedUsers 组。
  • response = s3client.get_bucket_acl(Bucket='bucket_name')
    如果 ACL 向预定义的 AllUsers 或 AuthenticatedUsers 组的成员授予任何权限,则存储桶是公共(public)的。
    受让人(响应['Grants'][*]['Grantee']):
  • 类型:群
  • 网址:
  • http://acs.amazonaws.com/groups/global/AuthenticatedUsers
  • http://acs.amazonaws.com/groups/global/AllUsers


  • 如果需要,您可以进一步评估对象 ACL。

    关于boto3 - 博托 : Find if bucket is public or private,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59002558/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com