gpt4 book ai didi

amazon-web-services - 列出具有公共(public)读取权限的 S3 对象(在私有(private)存储桶中)

转载 作者:行者123 更新时间:2023-12-03 14:33:46 28 4
gpt4 key购买 nike

我想保护 S3 存储桶中的文件,并确保没有共享敏感文件。

我知道查看哪些存储桶具有公共(public)权限的各种方法(在控制台中和使用脚本)。

但是,即使对象位于私有(private)存储桶中,也可以授予对象匿名读取权限。

很难跟踪/审核公开可读的文件/对象,因为除了浏览 AWS 控制台中的每条路径之外,我看不到任何找到它们的方法。

有没有办法列出存储桶中所有具有匿名(读取)权限的对象?任何方法都可以,包括 AWSCLI、Boto、REST 等。

我考虑尝试使用匿名 AWSCLI 配置文件,但这不允许列出存储桶内容,因此它只能用于单独测试文件。

我想我可以使用 Boto ( https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#objectacl ) 创建一个脚本。这是唯一的方法,还是有官方方法,例如 AWSCLI 命令?

最佳答案

您在谈论的是对象 ACL。本着 job-to-be-done 的精神,我想指出你可以configure a bucket to deny public object ACLs.这可能是企业预防的最佳实践之一。 auditing and verifying continuously is described here. 的最佳企业实践之一

更新 :如果您对监控和审计存储桶级 ACL 感兴趣,take a look at this managed AWS Config solution.

但是,如果您正在寻找使用 aws-cli 的 bash 脚本/工具。 (这是这个问题的标签),这可以解决问题:

bucket="my-bucket-name"
search_term="AllUsers"

for key in $(aws s3 ls --recursive s3://$bucket/ | awk '{$1=$2=$3=""; print $0}' | sed 's/^[ \t]*//'); do
acl=$(aws s3api get-object-acl --bucket $bucket --key $key) &&
result_found=$(echo $acl | grep -q $search_term) &&
if $result_found; then
echo $key;
echo $acl;
fi;
done

这是它的作用:
  • 递归列出存储桶中的所有对象
  • 遍历那些对象键
  • 询问 S3 该对象的 ACL 是什么
  • 如果该 ACL 包含字符串“AllUsers”(全局 s3 权限组),它将将该 ACL 回显到标准输出。

  • 我将此问题概括为“如果 ACL 包含给定的 $search_term,则在存储桶中回显所有 key 及其 ACL”,因此,如果其他人遇到类似但略有不同的问题,该解决方案仍然会有所帮助,只要他们更改 $search_term适合他们的问题的东西。

    理想情况下(假设你不想要公共(public)对象)如果你运行这个......什么都不应该出现。

    请记住,此解决方案不适用于包含大量对象的大型存储桶。

    关于amazon-web-services - 列出具有公共(public)读取权限的 S3 对象(在私有(private)存储桶中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52152035/

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