При работе с сервисами 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.