找到所有的s3公共桶

时间:2018-01-31 08:15:55

标签: python-2.7 amazon-s3 boto3 s3-bucket

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

2 个答案:

答案 0 :(得分:1)

查看方法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/*行动

This文章也可能有所帮助。

答案 1 :(得分:1)

这是不可能的。

无法发现存在的所有数百万个存储桶的名称。已知在S3中存储至少2,000,000,000,000个对象,这是几年前公布的数字,可能大大低于现在的实际数字。如果每个铲斗有1,000,000个这样的物体,那就意味着有2,000,000个铲斗可以容纳它们。

你缺乏扫描它们的时间和权限,直觉表明,如果你尝试过,AWS Security会开始提问。