Amazon DynamoDB の保管時の暗号化では、256 ビットの Advanced Encryption Standard (AES-256) を使用してデータの暗号化が行われるので、基盤となるストレージへの不正アクセスからデータを保護できます。
保管データ暗号化には、テーブルの暗号化に使用される暗号化キーを管理するための AWS Key Management Service (AWS KMS) が統合されます。
注記
2022 年 5 月、AWS KMS は AWS マネージドキー のローテーションスケジュールを 3 年 (約 1,095 日間隔) ごとから毎年 (約 365 日間隔) に変更しました。
新しい AWS マネージドキーは、作成日から 1 年後に自動的にローテーションされ、それ以降はほぼ 1 年ごとにローテーションされます。
既存の AWS マネージドキー は、直近のローテーションから 1 年後にローテーションされ、その後毎年ローテーションされます。
AWS 所有のキー
AWS 所有のキー はお客様の AWS アカウントに保存されません。これらは、複数の AWS アカウントで使用するために AWS が所有および管理している KMS キーのコレクションの一部です。AWS のサービスでは、データの保護に AWS 所有のキー を使用できます。DynamoDB で使用する AWS 所有のキーは毎年 (約 365 日ごとに) ローテーションされます。
AWS 所有のキー は表示、管理、使用することはできず、その使用を監視することもできません。ただし、データを暗号化するキーを保護するための作業やプログラムを操作したり変更したりする必要はありません。
AWS 所有のキー のご利用に関しては、月額料金や使用料金は請求されません。また、アカウントの AWS KMS クォータにも影響しません。
AWS マネージドキー
AWS マネージドキー は、お客様のアカウントにある KMS キーであり、AWS KMS と統合されている AWS のサービスがお客様に代わって作成、管理、使用します。アカウントで AWS マネージドキー を表示して、キーポリシーを表示し、AWS CloudTrail ログでその使用を監査できます。ただし、これらの KMS キーを管理したり許可を変更したりすることはできません。
保管時の暗号化は、テーブルの暗号化に使用される DynamoDB (aws/dynamodb
) 用の AWS マネージドキー を管理するために AWS KMS と自動的に統合されます。暗号化された DynamoDB テーブルを作成したときにAWS マネージドキー が存在しない場合、AWS KMS は自動的に新しいキーを作成します。このキーは、この先作成するテーブルの暗号化に使用されます。AWS KMS は、安全で可用性の高いハードウェアとソフトウェアを組み合わせて、クラウド向けに拡張されたキー管理システムを提供します。
AWS マネージドキー の許可を管理する方法の詳細については、「AWS Key Management Service デベロッパーガイド」の「AWS マネージドキー の使用の承認」を参照してください。
カスタマーマネージドキー
カスタマーマネージドキーは、お客様が作成、所有、管理する AWS アカウントの KMS キーです。この KMS キーでは、キーポリシー、IAM ポリシー、および許可の確立と管理、有効化と無効化、暗号化対象のローテーション、タグの追加、KMS キーを参照するエイリアスの作成、削除スケジュールの設定などを完全に制御することができます。カスタマーマネージドキーの許可を管理する方法の詳細については、「カスタマーマネージドキーポリシー」を参照してください。
カスタマーマネージドキーをテーブルレベルの暗号化キーとして指定すると、DynamoDB テーブル、ローカルおよびグローバルセカンダリインデックス、およびストリームは、同じカスタマーマネージドキーで暗号化されます。オンデマンド Backup は、Backup の作成時に指定されたテーブルレベルの暗号化キーを使用して暗号化されます。テーブルレベルの暗号化キーを更新しても、既存のオンデマンド Backup に関連付けられている暗号化キーは変更されません。
カスタマーマネージドキーの状態を無効に設定するか、削除のスケジュールを設定すると、すべてのユーザーと DynamoDB サービスは、データの暗号化と復号化、およびテーブルに対する読み取り/書き込み操作を実行できなくなります。テーブルに対するアクセスを維持し、データ損失を防止するには、DynamoDB が暗号化キーにアクセスできる必要があります。
カスタマーマネージドキーを無効化したり、削除をスケジュールしたりすると、テーブルステータスはアクセス不能になります。テーブルの操作を続行できるようにするには、指定された暗号化キーへの DynamoDB アクセスを 7 日以内に提供する必要があります。暗号化キーにアクセスできないことが検出されると、DynamoDB から警告メール通知が送信されます。
注記
-
DynamoDB サービスがカスタマーマネージドキーに 7 日以上アクセスできない場合、テーブルはアーカイブされてアクセスできなくなります。DynamoDB は、テーブルのオンデマンド Backup を作成し、それに対して課金されます。このオンデマンド Backup を使用して、データを新しいテーブルに復元できます。復元を開始するには、最後に使用したカスタマーマネージドキーをテーブルで有効にし、DynamoDB からのアクセスを確立します。
-
グローバルテーブルレプリカの暗号化に使用したカスタマーマネージドキーにアクセスできない場合、DynamoDB は、このレプリカをレプリケーショングループから除外します。レプリカは削除されず、このリージョンに対するレプリケーションは、カスタマーマネージドキーにアクセス不能と検出されてから 20 時間後に停止します。
詳細については、「キーの有効化」と「キーの削除」を参照してください。
AWS マネージドキー の使用に関する注意事項
AWS KMS アカウントに保存されている KMS キーにアクセスできない場合、Amazon DynamoDB はテーブルデータを読み取れません。DynamoDB は、エンベロープ暗号化とキー階層を使用してデータを暗号化します。AWS KMS 暗号化キーは、このキー階層のルートキーを暗号化するために使用されます。詳細については、「AWS Key Management Service デベロッパーガイド」の「エンベロープ暗号化」を参照してください。
DynamoDB は、DynamoDB オペレーションごとに AWS KMS を呼び出すわけではありません。キーは、アクティブなトラフィックを持つ呼び出しごとに 5 分に 1 回更新されます。
SDK が接続を再利用するように設定されていることを確認してください。そうしないと、DynamoDB は、オペレーションごとに新しい AWS KMS キャッシュエントリを再確立しなければならなくなるのでレイテンシーが発生します。さらに、AWS KMSと CloudTrail のコストが上がってしまう可能性もあります。たとえば、Node.js SDK を使用してこれを行うには、keepAlive
を有効にした状態で新しい HTTPS エージェントを作成することができます。詳細については、「AWS SDK for JavaScript デベロッパーガイド」の「Node.js での keepAlive の設定」を参照してください。