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