查找所有 s3 公有存储桶



我正在python中研究boto3模块,我已经创建了一个机器人,该机器人可以找到可公开访问的存储桶,但这是为具有凭据的单个用户完成的。我正在考虑推进这些功能,并使机器人在每个用户帐户中获取所有可公开访问的存储桶。我想知道这是否可能,如果是,如何,如果不是为什么?

查看方法get_bucket_acl()

如果存储桶是公有的,您应该会看到 Grantee 的 ACL> http://acs.amazonaws.com/groups/global/AllUsers'

例:

>> client.get_bucket_acl(Bucket='PublicBucket')
....
  {'Grantee': {u'Type': 'Group',
    'URI': 'http://acs.amazonaws.com/groups/global/AllUsers'},
   'Permission': 'READ'}], ...

如您所见AllUsers允许全局组READ此存储桶的访问权限。

您可能还需要检查get_bucket_policy()并确保存储桶上是否有策略,它不允许公有访问。

例:

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::examplebucket/*"]
    }
  ]
}

"Principal": "*"表示每个人都可以访问S3:GetObject操作examplebucket/*

本文也可能有所帮助。

是不可能的。

无法发现存在的数百万个存储桶的名称。 已知至少有 2,000,000,000,000 个对象存储在 S3 中,这是几年前宣布的数字,可能大大低于现在的实际数字。 如果每个存储桶有 1,000,000 个此类对象,则意味着有 2,000,000 个存储桶来容纳它们。

您既没有时间和权限来扫描它们,直觉表明,如果您尝试过,AWS Security 会开始提出问题。

相关内容

  • 没有找到相关文章

最新更新