Безопасное шифрование данных в AWS с помощью управляемых ключей Boto3 и AWS KMS

При работе с сервисами AWS крайне важно обеспечить безопасность ваших данных, особенно при хранении конфиденциальной информации. Один из способов добиться этого — зашифровать данные с помощью управляемых ключей AWS Key Management Service (KMS). В этой статье мы рассмотрим несколько методов задания шифрования на стороне сервера с помощью Boto3, AWS SDK для Python, а также примеры кода.

Метод 1: загрузка объекта в корзину S3 с шифрованием на стороне сервера

import boto3
def upload_object_with_sse(bucket_name, object_key, file_path):
    s3 = boto3.client('s3')
    s3.upload_file(file_path, bucket_name, object_key, ExtraArgs={'ServerSideEncryption': 'aws:kms'})

Метод 2: копирование объекта с шифрованием на стороне сервера

import boto3
def copy_object_with_sse(source_bucket, source_key, destination_bucket, destination_key):
    s3 = boto3.client('s3')
    s3.copy_object(
        Bucket=destination_bucket,
        Key=destination_key,
        CopySource={'Bucket': source_bucket, 'Key': source_key},
        ServerSideEncryption='aws:kms'
    )

Метод 3. Использование AWS Encryption SDK

import boto3
import aws_encryption_sdk
def encrypt_data_with_kms(data, kms_key_id):
    kms = boto3.client('kms')
    data_key = kms.generate_data_key(KeyId=kms_key_id, KeySpec='AES_256')
    encrypted_data, encryption_context = aws_encryption_sdk.encrypt(
        source=data,
        key_provider=aws_encryption_sdk.KMSMasterKeyProvider(key_ids=[kms_key_id]),
    )
    return encrypted_data

Метод 4. Шифрование и дешифрование данных с помощью ключа KMS

import boto3
def encrypt_data_with_kms(data, kms_key_id):
    kms = boto3.client('kms')
    response = kms.encrypt(
        KeyId=kms_key_id,
        Plaintext=data
    )
    return response['CiphertextBlob']
def decrypt_data_with_kms(ciphertext, kms_key_id):
    kms = boto3.client('kms')
    response = kms.decrypt(
        CiphertextBlob=ciphertext
    )
    return response['Plaintext']

Используя Boto3 и сервис AWS KMS, вы можете легко внедрить шифрование на стороне сервера для ваших данных, хранящихся в сервисах AWS. В этой статье мы рассмотрели несколько методов указания шифрования на стороне сервера с помощью управляемых ключей AWS KMS. Загружаете ли вы объекты в S3, копируете объекты или шифруете/расшифровываете данные, эти примеры обеспечивают надежную основу для защиты ваших данных в AWS.