Amazon Web Services ブログ

自分自身の暗号化キーを Amazon DynamoDB に利用

今日、Amazon DynamoDB は DynamoDB データの暗号化のための カスタマー管理型カスタマーマスターキー (CMKs) のサポートを導入しました。 しばしば bring your own encryption (BYOE) あるいは bring your own key (BYOK) と呼ばれるこの機能により、 DynamoDB で暗号化キーを作成、所有、管理することができ、自分の暗号化を完全にコントロールし、また、DynamoDB データの管理を行うことができます。

DynamoDB は完全管理されたマルチリージョン、マルチマスターデータベースで、保管時の自分のデータをデフォルトで暗号化し、DynamoDB データのセキュリティを強化します。以前には、DynamoDB はデータの暗号化のために AWS owned CMK あるいは AWS managed CMKを使用するオプションを提供していました。現在、カスタマー管理型 CMK を使用し、重要なアプリを保護し、自分の組織の方針を守り、コンプライアンスと規制上の要件を遵守し、AWS 外の自分の暗号化キーの追加の安全なコピーを保持できます。

このブログでは、保管時 DynamoDB 暗号化を用いたカスタマー管理型 CMK の使用法をお示しします。

DynamoDB 暗号化キーオプション

AWS 管理 CMK を使用してデータを暗号化することを選択したのでなければ、DynamoDB は AWS 所有 CMK を使用して保管時テーブルデータの全てを正式に暗号化していました。しかし、現在、カスタマー管理型 CMK を使用することにより自分のデータを暗号化する選択肢があります。

自分のデータを暗号化し暗号化キーを更新するためにコードあるいはアプリの修正をする必要はありません。この暗号化キーを更新するプロセスはシームレスで稼働停止時間は必要とせず、サービスを落とすこともありません。全ての DynamoDB の暗号化キーオプションは、ストレージへの不正アクセスからデータを保護するために役立つ 256 ビットの Advanced Encryption Standard (AES-256) を使用します。また、 AWS CloudTrail を使用し、AWS Key Management Service (KMS) キー作成、使用、削除に関する詳細な監査情報をモニターすることもできます。

カスタマー管理型 CMK を使用し、シンプル API コールあるいは AWS CLI で、AWS マネジメントコンソール においてワンステップでデータの暗号化を行うことができます。カスタマー管理型 CMK をテーブルレベル暗号化キーとして指定した場合、DynamoDB テーブル、ローカルおよびグローバル 2 次インデックス、ストリームは、同じカスタマー管理型 CMK で暗号化されます。オンデマンドバックアップはバックアップが生成された時、指定されたテーブルレベル暗号化キーで暗号化されます。

カスタマー管理型 CMK で暗号化された新しい DynamoDB テーブルの作成法

カスタマー管理型 CMK を使用して保管時 DynamoDB 暗号化を始めるには、AWS マネジメントコンソールにサインインします。新たなテーブルを作成し、その暗号化のためにカスタマー管理型 CMK を使用するには、次のステップに従います。

  1. AWS KMS にカスタマー管理型 CMK を作成。詳細については、キーを作成 をご参照ください。
  2. テーブル設定 の下の デフォルト設定を使用 チェックボックスからチェックを外します (デフォルト設定を使用 を選択すると AWS 所有 CMK を使用してテーブルを暗号化します。これはこの例では行いません)。
  3. 保管時暗号化 の下の、「KMS – カスタマー管理型 CMK」 を選択します。
  4. ドロップダウンメニューから、テーブルの暗号化に使用したい AWS KMS カスタマー管理型 CMK を選択します。以下のスクリーンショットでは、dynamodb-cmk を選択しました。作成 を選択します。

既存のテーブル用のカスタマー管理型 CMK の有効化方法

すでにテーブルがあり、カスタマー管理型 CMK をその暗号化のために使用したい場合には、以下のステップに従います。

  1. AWS KMS にカスタマー管理型 CMK を作成します。詳細については、キーを作成 をご参照ください。
  2. DynamoDB コンソールで、概観 を選択してから 暗号化を管理 を選択します。
  3. KMS – カスタマー管理型 CMK”を選択します。ドロップダウンメニューから、テーブルの暗号化に使用したい AWS KMS カスタマー管理型 CMK を選択します。以下のスクリーンショットでは、dynamodb-cmk を選択しました。保存 をクリックします。

CloudFormation を使用し、カスタマー管理型 CMK で新しい DynamoDB テーブルを作成

以下の AWS CloudFormation テンプレートコード例は、新しい DynamoDB テーブルを作成し、暗号キーとしてカスタマー管理型 CMK を指定する方法を示しています。

AWSTemplateFormatVersion: "2010-09-09"
内容:カスタマー管理型 CMK を用いた DynamoDB 用 CloudFormation テンプレートサンプル
resources:
  dynamodbKMSKey:
    Type: AWS::KMS::Key
    Properties:
      内容:「例 CMK」
      KeyPolicy:
        Version: "2012-10-17"
        Id: "key-default-1"
        Statement:
         -
            Sid: "Allow administration of the key"
            Effect: "Allow"
            Principal:
              AWS: "arn:aws:iam::123456789012:user/ana"
            Action:
              - "kms:Create*"
              - "kms:Describe*"
              - "kms:Enable*"
              - "kms:List*"
              - "kms:Put*"
              - "kms:Update*"
              - "kms:Revoke*"
              - "kms:Disable*"
              - "kms:Get*"
              - "kms:Delete*"
              - "kms:ScheduleKeyDeletion"
              - "kms:CancelKeyDeletion"
            Resource: "*"
         -
            Sid: "Allow use of the key"
            Effect: "Allow"
            Principal:
              AWS: "arn:aws:iam::123456789012:user/ana"
            Action:
              - "kms:DescribeKey"
              - "kms:Encrypt"
              - "kms:Decrypt"
              - "kms:ReEncrypt*"
              - "kms:GenerateDataKey"
              - "kms:GenerateDataKeyWithoutPlaintext"
            Resource: "*"

  DynamoDBOnDemandTable:
    Type: "AWS::DynamoDB::Table"
    Properties:
      TableName: "dynamodb-kms"
      AttributeDefinitions:
        -
          AttributeName: pk
          AttributeType: S
      KeySchema:
        -
          AttributeName: pk
          KeyType: HASH
      BillingMode: PAY_PER_REQUEST
      SSESpecification:
        KMSMasterKeyId: !Ref dynamodbKMSKey
        SSEEnabled: true
        SSEType: "KMS"

上記のコード例が出発点となります。これがカスタマー管理型 CMK を管理し使用することのできる唯一のユーザーと同じアカウントユーザー (ana) を定義づけします。CMK 用 のより複雑な AWS Identity and Access Management (AWS IAM) 方針が必要になるかもしれません。従って、AWS KMS キーアクセスに関する AWS IAM 声明も考えに入れる必要があります。CloudFormation テンプレートの作成に関する詳細は KMS リソースタイプレファレンス および DynamoDB リソースタイプリファレンスをご覧下さい。

暗号化キーの確認

カスタマー管理型 CMK を用いて DynamoDB テーブルを暗号化するためにどの方法を使用したとしても、テーブルの詳細概観タブの DynamoDB コンソールで自分のテーブルが適切なキーを使用していることを確認できます。暗号化タイプ および KMS マスターキー ARN が自分の選択したものを反映していることを確認します。

結論

カスタマー管理型 CMK 用保管時 DynamoDB 暗号化サポートは、現在全ての商業 AWS リージョン(アジア太平洋(大阪ローカル)を除く)で利用可能です。また、この機能は、AWS 中国(北京)および AWS 中国(寧夏)リージョンおよび AWS GovCloud (米国) リージョンでも使用可能です。保管時暗号化についての詳細は 暗号化テーブルを管理をご覧下さい。

 


著者について

 

Chad Tindel はニューヨーク勤務の DynamoDB スペシャリストソリューションアーキテクトです。Chad は大企業のお客様と連携して DynamoDB ベースのソリューションの評価、設計、およびデプロイメントを行っています。Amazon に入社する前は、Red Hat、Cloudera、MongoDB、および Elastic で同じような役割を担っていました。

 

 

 

Mazen Ali は、アマゾン ウェブ サービスのシニアプロダクトマネージャーです。</p