KMS шифрует данные файла с помощью Boto3 - PullRequest
0 голосов
/ 14 мая 2019

Я использую приведенный ниже код для шифрования данных в файле KMS. Есть ли способ сделать что-то подобное, используя boto3 в Python?

public KmsMasterKeyProvider getkmsKeyProvider(String arn) throws IOException{
    KmsMasterKeyProvider prov =  new KmsMasterKeyProvider(
            new DefaultAWSCredentialsProviderChain(),
            Region.getRegion(getRegion()),
            createConfiguration(),
            arn);
    return prov;

}

Код для шифрования

        AwsCrypto crypto = new AwsCrypto();
        KmsMasterKeyProvider prov =  util.getkmsKeyProvider(keyArn);

            FileInputStream decryptedStream = new FileInputStream(temp_data_file);
        String output = prop.getProperty(OUTPUT_TMP_PATH)+"file.out";

        final FileOutputStream out = new FileOutputStream(output);
        final CryptoOutputStream<?> encryptingStream = crypto.createEncryptingStream(prov,out);
        IOUtils.copy(decryptedStream, encryptingStream);
        encryptingStream.close();
        decryptedStream.close();

        File outputFile = new File(output);

1 Ответ

1 голос
/ 15 мая 2019

Примеры кода, которые вы показываете, используют AWS Encryption SDK [1], который доступен для Python [2], да!

Эквивалентный фрагмент того, что вы показываете в своем вопросе, будет:

import aws_encryption_sdk

def encrypt_file(cmk_arn, plaintext_filename, ciphertext_filename):
    key_provider = aws_encryption_sdk.KMSMasterKeyProvider(key_ids=[cmk_arn])

    with open(plaintext_filename, "rb") as plaintext, open(ciphertext_filename, "wb") as ciphertext:
        with aws_encryption_sdk.stream(mode="encrypt", source=plaintext, key_provider=key_provider) as encryptor:
            for chunk in encryptor:
                ciphertext.write(chunk)

Вы можете найти больше примеров здесь [3], а также в наших документах [1] [2].

[1] https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html

[2]https://aws -encryption-sdk-python.readthedocs.io / en / latest /

[3] https://github.com/aws/aws-encryption-sdk-python/tree/master/examples/src

...