DynamoDB: можем ли мы использовать шифрование и межрегиональную репликацию вместе?

DynamoDB: можем ли мы использовать шифрование и межрегиональную репликацию вместе?

Мы оцениваем DynamoDB для нашего нового приложения. Наши требования:

  • Шифрование данных в состоянии покоя
  • Межрегиональная репликация для аварийного восстановления. Наше приложение в регионе должно полагаться на сервисы только в этом регионе.

Наши требования могут быть выполнены отдельно с использованием библиотек Java, предоставляемых AWS. Решения:

Однако мы не уверены, могут ли эти решения работать вместе. Мы обеспокоены тем, что не сможем расшифровать межрегиональные реплицированные записи. Решение для шифрования на стороне клиента рекомендует установить иерархию ключей с ключом, управляемым KMS, в корне. KMS зависит от региона, поэтому мы не сможем расшифровать записи, если реплицируем их в другой регион. Ключ шифрования недоступен в другом регионе.

Вопросы следующие:

  • Верно ли, что дешифрование или перекрестная репликация записей невозможно, если ключ шифрования находится в KMS?
  • Есть ли рекомендуемый подход к репликации зашифрованных записей DynamoDB? Кто-нибудь делал это раньше?
  • Есть ли альтернативы, на которые мы должны обратить внимание?

person ez121sl    schedule 09.11.2016    source источник
comment
Я голосую за то, чтобы закрыть этот вопрос как не по теме. Я не уверен, но, возможно, лучше задать этот вопрос на сайте dba.   -  person President James K. Polk    schedule 09.11.2016
comment
В зависимости от временных рамок, в течение которых вам нужно восстановить базу данных, вы можете попробовать сделать резервную копию на S3 и реплицировать ее. stackoverflow.com/questions/23510704/   -  person BillMan    schedule 10.11.2016


Ответы (1)


Ты прав. Как есть, настройка не будет работать, потому что ключи KMS нельзя использовать в разных регионах.

Допустим, вы реплицируете данные из региона R1 в R2, который имеет ключи KMS K1 и K2 соответственно. Могу предложить следующие альтернативы:

  1. Немного измените библиотеку, чтобы она расшифровывала данные с R1 с помощью K1 и повторно шифровала с помощью K2 во время репликации. Вас заинтересует класс DynamoDBStreamsRecordTransformer.
  2. Import your own key material in both R1 and R2. Check relevant documentation here.
    • Caveat: Might be operationally painful, depending on your use case.

Обновление: добавьте и свои мысли, чтобы в будущем это могло помочь любому, кто столкнется с этим вопросом:

  1. Create your own plaintext-data-key (possibly using KMS's GenerateRandom API), encrypt it using both K1 and K2 (using the Encrypt API), and store both the resulting cypher-texts along with your data in both the regions.
    • Caveat: Cross-region calls for every update. In option #1, the updates are asynchronous.
person ketan vijayvargiya    schedule 11.11.2016
comment
Спасибо! Интересная идея о DynamoDBStreamsRecordTransformer. Я рассмотрю это более подробно. Согласились с тем, что иметь дело с собственными ключевыми материалами сложно с операционной точки зрения. Существует еще одна возможность взлома библиотеки шифрования, когда в ней хранятся две копии ключа шифрования данных - одна копия зашифрована с помощью K1, а другая - с помощью K2. Затем код в R1 использует K1 для дешифрования первой копии ключа шифрования данных, а код в R2 использует K2 для дешифрования второй копии ключа шифрования данных. Затем код в обоих регионах может расшифровать данные. - person ez121sl; 14.11.2016
comment
это может сработать только в том случае, если вы можете предоставить KMS-ключ-данные-открытый текст, а он возвращает ключ-зашифрованных-данных. он поддерживает это? я не вижу здесь ничего подобного: docs.aws.amazon. com / kms / latest / APIReference / API_Operations.html - person ketan vijayvargiya; 14.11.2016
comment
Я не уверен, что импорт вашего собственного ключевого материала в KMS в двух регионах сработает. Согласно документам AWS, шифротексты не переносятся между CMK. При шифровании данных с помощью KMS CMK зашифрованный текст нельзя расшифровать с помощью любого другого CMK. Это относится ко всем CMK KMS и остается верным даже при импорте одного и того же ключевого материала в другой CMK. Похоже, это говорит о том, что даже с одним и тем же ключевым материалом разные CMK не могут расшифровать зашифрованные тексты друг друга. Примечание - из той же ссылки, на которую ссылается кетан в №2. - person Kirkaiya; 26.01.2017