Amazon Web Services ブログ

New – DynamoDB の保存時の暗号化

AWS re:Invent 2017 では、Werner は対象者に対して、次のように勧めました。「誰も見ていないようにダンスをして、誰もがしているように暗号化してください。

AWS チームは常に、機密データを保護し、またコンプライアンスの目標を達成するために支援することを容易にする機能を追加したいと考えています。たとえば、2017 年に当社は SQSEFS に対して保存時の暗号化を開始し、S3 に対して追加の暗号化オプション、さらに Kinesis データストリームのサーバー側の暗号化を開始しました。

今日、Amazon DynamoDB に対して保存時の暗号化の導入に、別のデータ保護オプションを提供しています。新規テーブルを作成するときに暗号化を有効にするだけで、後は DynamoDB が行います。お使いのデータ (テーブル、ローカルセカンダリインデックス、グローバルセカンダリインデックス) は、AES-256 およびサービスデフォルトのAWS Key Management Service (KMS) キーを使用して暗号化されます。暗号化はストレージオーバーヘッドを追加せず、完全に透過的です。以前のように、アイテムを挿入、クエリ、スキャン、および削除できます。チームは暗号化を有効にして、暗号化した DynamoDB テーブルで異なるいくつかのワークロードで実行した後、レイテンシーで変更を観察しませんでした。

暗号化テーブルの作成
AWS マネジメントコンソール、API (CreateTable)、または CLI (create-table) から暗号化テーブルを作成できます。私はコンソールを使用します。私は通常通り、次のように名前を入力して、プライマリーキーを設定します。

先に進む前に、[デフォルト設定の使用] をオフにして、[暗号化] セクションまで下方にスクロールして、[暗号を有効化] をオンにします。次に、[作成] をクリックすると、私のテーブルが暗号化形式で作成されます。

一目でテーブルの暗号化設定を確認することができます。

コンプライアンスチームが、DynamoDB でキーを使ってデータを暗号化する方法を尋ねられたら、AWS CloudTrail トレールを作成して、アイテムを挿入し、テーブルをスキャンして AWS KMS API へのコールを確認することができます。以下がトレールからの抽出です。

{
  "eventTime": "2018-01-24T00:06:34Z",
  "eventSource": "kms.amazonaws.com",
  "eventName": "Decrypt",
  "awsRegion": "us-west-2",
  "sourceIPAddress": "dynamodb.amazonaws.com",
  "userAgent": "dynamodb.amazonaws.com",
  "requestParameters": {
    "encryptionContext": {
      "aws:dynamodb:tableName": "reg-users",
      "aws:dynamodb:subscriberId": "1234567890"
    }
  },
  "responseElements": null,
  "requestID": "7072def1-009a-11e8-9ab9-4504c26bd391",
  "eventID": "3698678a-d04e-48c7-96f2-3d734c5c7903",
  "readOnly": true,
  "resources": [
    {
      "ARN": "arn:aws:kms:us-west-2:1234567890:key/e7bd721d-37f3-4acd-bec5-4d08c765f9f5",
      "accountId": "1234567890",
      "type": "AWS::KMS::Key"
    }
  ]
}

提供開始
この機能は、現在、米国東部 (バージニア北部)米国東部 (オハイオ)米国西部 (オレゴン)欧州 (アイルランド) リージョンで利用できますので、今日から使用し始めることができます。

暗号化には料金はかかりません。DynamoDB が代理で AWS KMS に行うコールにのみ料金がかかります。

Jeff;