gpt4 book ai didi

python - boto3 aws 检查 s3 存储桶是否已加密

转载 作者:行者123 更新时间:2023-12-04 14:32:08 24 4
gpt4 key购买 nike

我在下面发布了以下代码,它获取 aws 上的所有 s3 存储桶列表,我正在尝试编写代码来检查存储桶是否在 python 中加密,但我无法弄清楚如何做到这一点。谁能告诉我如何修改我的代码来做到这一点。我尝试了在线示例并查看了文档。

我的代码是:

 from __future__ import print_function
import boto3
import os

os.environ['AWS_DEFAULT_REGION'] = "us-east-1"
# Create an S3 client
s3 = boto3.client('s3')
# Call S3 to list current buckets

response = s3.list_buckets()

# Get a list of all bucket names from the response
buckets = [bucket['Name'] for bucket in response['Buckets']]

# Print out the bucket list
print("Bucket List: %s" % buckets)

尝试了以下代码,但它们不起作用:
 s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket-name')
for obj in bucket.objects.all():
key = s3.Object(bucket.name, obj.key)
print key.server_side_encryption


 #!/usr/bin/env python
import boto3

s3_client = boto3.client('s3')
head = s3_client.head_object(
Bucket="<S3 bucket name>",
Key="<S3 object key>"
)
if 'ServerSideEncryption' in head:
print head['ServerSideEncryption']

最佳答案

首先值得了解一些关于 S3 和加密的事情。

  • 当您在 S3 存储桶上启用默认加密时,您实际上是在存储桶上配置服务器端加密配置规则,该规则将导致 S3 在配置规则后加密上传到存储桶的每个对象。
  • 与#1 无关,您可以将 S3 存储桶策略应用于存储桶,拒绝任何未加密对象的上传。这将阻止您添加未加密的数据,但它不会自动加密任何内容。
  • 您可以逐个对象地加密上传;加密不必是存储桶范围的。

  • 因此,找出哪些存储桶属于第 1 类(将自动加密上传到它们的任何内容)的一种方法,您可以这样做:
    import boto3
    from botocore.exceptions import ClientError

    s3 = boto3.client('s3')

    response = s3.list_buckets()

    for bucket in response['Buckets']:
    try:
    enc = s3.get_bucket_encryption(Bucket=bucket['Name'])
    rules = enc['ServerSideEncryptionConfiguration']['Rules']
    print('Bucket: %s, Encryption: %s' % (bucket['Name'], rules))
    except ClientError as e:
    if e.response['Error']['Code'] == 'ServerSideEncryptionConfigurationNotFoundError':
    print('Bucket: %s, no server-side encryption' % (bucket['Name']))
    else:
    print("Bucket: %s, unexpected error: %s" % (bucket['Name'], e))

    这将导致如下输出:
    Bucket: mycats, no server-side encryption
    Bucket: mydogs, no server-side encryption
    Bucket: mytaxreturn, Encryption: [{'ApplyServerSideEncryptionByDefault': {'SSEAlgorithm': 'AES256'}}]

    关于python - boto3 aws 检查 s3 存储桶是否已加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55718828/

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