当我们将数据从加密的 AWS S3 存储桶发送到加密的 Google Cloud Storage 存储桶时,该数据是不是在传输过程中加密?

Posted

技术标签:

【中文标题】当我们将数据从加密的 AWS S3 存储桶发送到加密的 Google Cloud Storage 存储桶时,该数据是不是在传输过程中加密?【英文标题】:When we send data from an encrypted AWS S3 bucket to an encrypted Google Cloud Storage bucket, is that data encrypted in transit?当我们将数据从加密的 AWS S3 存储桶发送到加密的 Google Cloud Storage 存储桶时,该数据是否在传输过程中加密? 【发布时间】:2021-12-08 07:42:55 【问题描述】:

我正在使用谷歌云功能中的 gsutil 和 boto3 将文件从我的 AWS S3 存储桶复制到 GCS 存储桶。请参阅下面的代码。在我的云函数中,我传递了我的 AWS ACCESS_KEY 和 SECRET_KEY。

AWS S3 存储桶中的数据使用默认的 Amazon S3 主密钥 (SSE-S3) 进行加密,GCS 存储桶中的文件也使用默认的“Google 托管密钥”选项进行加密。

所以,我不担心存储中的数据加密,因为它已经处理好了,但我不确定数据是否在传输中加密。有谁知道,在这种特殊情况下,如果数据在传输过程中已经加密? 我是否需要在写入 S3 之前使用第三方工具(例如“密码术”)来加密文件以手动加密我的数据,然后在写入 GCS 存储桶之前使用此自定义生成的密钥解密文件?

import boto3
from boto3.session import Session 
from botocore.client import Config 
from botocore.handlers import set_list_objects_encoding_type_url 
import os
from io import BytesIO
from google.cloud import storage

'''
    copy all new files from AWS S3 to GCS
    Also delete files after copying
'''
def main(request):

    ACCESS_KEY = os.environ['ACCESS_KEY']
    SECRET_KEY = os.environ['SECRET_KEY']
    S3_BUCKET_NAME = os.environ['S3_BUCKET']
    GCS_BUCKET_NAME = os.environ['GCS_BUCKET']
    session = Session(aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY)

.....
.....
for s3_file in original_s3_file_list:
        file_name = s3_file.key
        s3_obj = s3.Object(S3_BUCKET_NAME,file_name)

        #copy S3 file to GCS
        data=s3_obj.get()['Body'].read()
        gcs_blob = gcs_bucket.blob(file_name)
        gcs_blob.upload_from_string(data)

【问题讨论】:

【参考方案1】:

您的数据已加密传输,因为传输使用 HTTPS(AWS 客户端 GCP)。

boto3 客户端的默认传输是 https。这可以使用 use_ssl 参数link 进行配置。默认值为 True

Google Cloud Storage 的默认传输方式也是 https。要将其更改为使用 http 需要修改 API_BASE_URL link。

【讨论】:

谢谢约翰,这真的很有帮助。是的,boto3 和云存储客户端似乎都在这里使用 SSL 与对方通信,因此数据在传输过程中保持加密。

以上是关于当我们将数据从加密的 AWS S3 存储桶发送到加密的 Google Cloud Storage 存储桶时,该数据是不是在传输过程中加密?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Lambda 返回权限被拒绝尝试从 S3 存储桶获取对象

将文件从 AWS s3 (SSE) 存储桶复制到谷歌云

将文件从 Mac (iCloud) 保存到 S3 存储桶 (AWS) 的脚本

如何使用aws java sdk将文件从S3存储桶从一个区域复制到另一个区域?

如何使用 gsutil 通过 http 链接从谷歌云存储下载到 AWS 实例或 s3 存储桶?

AWS Redshift:从 S3 上的许多存储桶加载数据