如何在 Amazon AWS S3 存储桶中找到未加密的文件?

Psy*_*oic 4 amazon-s3 amazon-web-services

我有什么:几个旧的 s3 存储桶,每个存储桶包含 100 万个对象,并打开了服务器端加密。

问题:旧文件未加密。我不能说加密是什么时候打开的。所以,我需要找到所有未加密的文件。

我已经尝试过使用 解决方案awscli,但速度很慢 - 2 秒内 1 个请求。

我的解决方案:

s3_buckets="uploads tmp logs whatever "
for s3_bucket in $s3_buckets;
do
    aws s3 ls s3://$s3_bucket --recursive \
    | awk '{print $NF}' \
    | ( while read object ; 
        do 
            object_status=$(aws s3api head-object --bucket $s3_bucket --key $object --query ServerSideEncryption --output text 2>&1) 
            if [ "$object_status" != "AES256" ]; then
                echo "Unencrypted object $object in s3://$s3_bucket"; >> /tmp/body.tmp
                objects_unencrypted=$((objects_unencrypted + 1))
            fi
            objects_count=$((objects_count + 1))
        done
    echo "Bucket $s3_bucket has $objects_count, where unencrypted $objects_unencrypted." >> /tmp/body.tmp )
done
Run Code Online (Sandbox Code Playgroud)

那么,也许有更好的解决方案?

是否可以创建Cloudwatch指标来显示未加密的字段?或任何其他人?

jar*_*mod 5

使用Amazon S3 清单

清单列表包含 S3 存储桶中的对象列表,每个列出的对象的元数据包括:

  • 加密状态 – 设置为 SSE-S3、SSE-C、SSE-KMS 或 NOT-SSE。SSE-S3、SSE-KMS 和具有客户提供的密钥 (SSE-C) 的 SSE 的服务器端加密状态。NOT-SSE 状态表示对象未使用服务器端加密进行加密。