5

DynamoDB: 暗号化とクロスリージョン レプリケーションを一緒に使用できますか?

新しいアプリケーションの DynamoDB を評価しています。私たちの要件は次のとおりです。

  • 保存時のデータ暗号化
  • ディザスター リカバリーのためのクロスリージョン レプリケーション。地域のアプリは、その地域のサービスのみに依存する必要があります

私たちの要件は、AWS が提供する Java ライブラリを使用することで個別に満たすことができます。解決策は次のとおりです。

ただし、これらのソリューションが連携できるかどうかはわかりません。リージョン間でレプリケートされたレコードを復号化できないことを懸念しています。クライアント側の暗号化ソリューションでは、ルートに KMS で管理されたキーを使用してキー階層を確立することをお勧めします。KMS は地域固有であるため、レコードを別の地域にレプリケートすると、レコードを復号化できなくなります。暗号化キーは、別のリージョンではアクセスできません。

質問は次のとおりです。

  • 暗号化キーが KMS にある場合、復号化またはクロスリージョン レプリケートされたレコードが不可能であるというのは本当ですか?
  • 暗号化された DynamoDB レコードをレプリケートするための推奨されるアプローチはありますか? 誰もこれを以前にやったことがありますか?
  • 検討すべき代替案はありますか?
4

1 に答える 1

5

あなたが正しいです。KMS キーはリージョン間で共有できないため、このままではセットアップは機能しません。

リージョン R1 から R2 にデータをレプリケートするとします。R2 にはそれぞれ KMS キー K1 と K2 があります。次の代替案を提案できます。

  1. ライブラリを少し変更して、レプリケーション中に K1 を使用して R1 からのデータを復号化し、K2 を使用して再暗号化します。DynamoDBStreamsRecordTransformerクラスに興味があるでしょう。
  2. R1 と R2 の両方に独自のキー マテリアルをインポートします。関連ドキュメントはこちらで確認してください。
    • 警告: ユース ケースによっては、運用上の問題が発生する可能性があります。

更新:あなたの考えも追加して、将来この質問に出くわした人を助けることができます:

  1. 独自のプレーンテキスト データ キーを作成し (おそらく KMS のGenerateRandom API を使用)、K1 と K2 の両方を使用して暗号化し ( Encrypt API を使用)、結果の両方の暗号テキストをデータと共に両方のリージョンに保存します。
    • 警告: 更新ごとにリージョンをまたいで呼び出します。オプション #1 では、更新は非同期です。
于 2016-11-11T08:07:07.857 に答える