как расшифровать ключ шифрования на стороне сервера s3, предоставленный клиентом

#amazon-s3 #encryption #boto3 #amazon-iam #aws-transcribe

#amazon-s3 #шифрование #boto3 #amazon-iam #amazon-transcribe

Вопрос:

Я использую boto3 с моим приложением flask для загрузки файла в корзину s3 с ключом шифрования на стороне сервера, предоставленным клиентом. Я попробовал start_transcription_job из зашифрованного файла s3, но у меня вышло исключение

 s3_client.upload_file(filename, BUCKET, s3filename, ExtraArgs={'SSECustomerKey': KEY, 'SSECustomerAlgorithm': 'AES256' })

transcribe_obj.start_transcription_job(
     TranscriptionJobName=job_name,
     Media={'MediaFileUri': s3uri},
     MediaFormat=file_extension,
     LanguageCode='en-US'
)
  

Исключение:

 botocore.errorfactory.BadRequestException: An error occurred (BadRequestException) when calling the StartTranscriptionJob operation: The S3 URI that you provided can't be accessed. Make sure your URI is valid and try your request again.
  

Комментарии:

1. Вы подтвердили, что проблема связана с использованием шифрования? Работает ли это при загрузке без шифрования? Имеет ли пользователь, выполняющий start_transcription_job() команду, разрешение на использование этого ключа KMS?

2. Я пробовал без шифрования. Он работает для транскрибирования аудиофайла, а также я использовал ключ kms. Это отлично работает. Мне нужно расшифровать файл s3, используя ключи, предоставленные клиентом sse

3. Я загрузил файл в корзину s3 с ключом, предоставленным клиентом sse. Можем ли мы выполнить транскрибирование (Media={‘MediaFileUri’: s3uri}) методом start_transcription_job()?

4. Или есть другие способы расшифровки файла s3 с использованием ключей шифрования на стороне сервера, предоставленных клиентом?

Ответ №1:

Из Защита данных с помощью шифрования на стороне сервера с помощью предоставленных клиентом ключей шифрования (SSE-C) — Amazon Simple Storage Service:

Вы управляете сопоставлением того, какой ключ шифрования использовался для шифрования какого объекта. Amazon S3 не хранит ключи шифрования. Вы несете ответственность за отслеживание того, какой ключ шифрования вы предоставили для какого объекта.

Я думаю, проблема в том, что объект зашифрован Ключом, который AWS не хранит. Поэтому, когда AWS Transcribe пытается прочитать объект, он не может расшифровать содержимое.

Похоже, что нет способа передать ключ start_transcription_job() .

Вам нужно будет использовать альтернативный метод шифрования, при котором AWS сможет расшифровать объект.