DynamoDBのLAG Vaultへのクロスアカウントバックアップを暗号化キータイプ別(AWS-owned / AWS-managed / CMK)に検証してみた

DynamoDBのLAG Vaultへのクロスアカウントバックアップを暗号化キータイプ別(AWS-owned / AWS-managed / CMK)に検証してみた

2026.04.07

こんにちは、クラウド事業本部 コンサルティング部の荒平(@eiraces)です。

AWSのリソースをクロスアカウントでバックアップする際には、暗号化キーの種類によって挙動が変わることがあります。
今回はDynamoDBについて、AWS-owned key で作ったテーブルはクロスアカウントコピーできるのか、AWS-managed key(aws/dynamodb)はどうなのか。この辺りの疑問を解消したく、パターンごとに検証してみました。

なお、今回はコピー先には通常の Backup Vault ではなく Logically Air-Gapped(LAG)Vault を使います。

前提知識

DynamoDB の暗号化キータイプ

DynamoDB テーブルの保管時暗号化(Encryption at Rest)には 3 種類のキータイプがあります。

キータイプ 概要 KMS 料金 キーポリシー変更
AWS-owned key DynamoDB が所有・管理している。KMS コンソールに表示されない 無料 不可(見えない)
AWS-managed key (aws/dynamodb) ユーザーアカウントの KMS に存在するが、 AWS が管理している 有料 不可(immutable)
Customer-managed key(CMK) ユーザーが作成・完全管理 有料 可能

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/EncryptionAtRest.html

Advanced DynamoDB backup

DynamoDB のクロスアカウントバックアップを行うには、Advanced DynamoDB backup を有効化する必要があります。(2021 年 11 月 21 日以降にBackup Vaultを有効化した場合はデフォルトで有効)

有効化すると DynamoDB は AWS Backup の Fully Managed 対象になり、バックアップは vault の KMS キーで暗号化 されます。ソーステーブルの暗号化キーとは切り離されるようです。

なお、この機能を有効にしていない状態だと、バックアップはソーステーブルと同じキーで暗号化され、クロスアカウントコピーやクロスリージョンコピーは使えません。

https://docs.aws.amazon.com/ja_jp/aws-backup/latest/devguide/advanced-ddb-backup.html

https://docs.aws.amazon.com/aws-backup/latest/devguide/backup-feature-availability.html#features-by-resource

Logically Air-Gapped(LAG)Vault

LAG Vault(論理エアギャップボールト)はランサムウェア対策の一環で検討されることが多くなっているバックアップボールトの一種です。

イメージとしては、自分の家(ユーザーアカウント)の金庫ではなく、銀行(AWS)の貸金庫にデータを預けるような感じです。仮にユーザーアカウントが侵害されても、バックアップデータには直接アクセスできない「論理的なエアギャップ」を実現します。

Standard Vault との主な違い

特徴 Standard Backup Vault LAG Vault
Vault Lock オプション コンプライアンスモード自動付与(WORM)
暗号化キー AWS-managed or CMK AWS-owned or CMK
共有方法 Vault access policy AWS RAM
保持期間 任意 最小 7 日以上(必須)

Standard Vault だと vault access policy でクロスアカウントアクセスを制御しますが、LAG Vault では AWS RAM(Resource Access Manager) を使って共有する点が大きな違いです。

https://docs.aws.amazon.com/aws-backup/latest/devguide/logicallyairgappedvault.html

構成図

本エントリの構成図です。DynamoDBを3つの暗号化方式で用意します。

image-20260407013225828

やってみた

LAG Vaultの作成に関しては以下の記事をご参考ください。

https://dev.classmethod.jp/articles/ga-backup-logically-air-gapped-vault/

前提として、LAG Vaultがソースアカウント・バックアップアカウント間でRAM共有されている状態で検証します。

ScreenShot 2026-04-07 at 00.13.31

1. KMSキー作成

ソースアカウント(DynamoDBのオリジナルが所属するアカウント)でKMSキーを作成します。
aws kms create-key で作成できます。

$ aws kms create-key \
    --description "DynamoDB CMK for cross-account backup test" \
    --region ap-northeast-1

{
    "KeyMetadata": {
        "AWSAccountId": "000000000000",
        "KeyId": "xxxxxxx-961c-4f2c-b126-4c556eb1935c",
        "Arn": "arn:aws:kms:ap-northeast-1:000000000000:key/9be72240-961c-4f2c-b126-4c556eb1935c",
        "CreationDate": "2026-04-06T14:36:23.701000+00:00",
        "Enabled": true,
        "Description": "DynamoDB CMK for cross-account backup test",
        "KeyUsage": "ENCRYPT_DECRYPT",
        "KeyState": "Enabled",
        "Origin": "AWS_KMS",
        "KeyManager": "CUSTOMER",
        "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
        "KeySpec": "SYMMETRIC_DEFAULT",
        "EncryptionAlgorithms": [
            "SYMMETRIC_DEFAULT"
        ],
        "MultiRegion": false,
        "CurrentKeyMaterialId": "b0ed6a385ada4c0a8db9246a37e0dcf2a0155c6c70e788db8f468955cxxxxxxx"
    }
}

CMKデータベース用にKeyIDを控えておきます。

2. DynamoDB テーブルの作成(Source Account)

3 種類の暗号化キータイプでテーブルを作成します。

テーブル名 暗号化キータイプ
test-aws-owned AWS-owned key
test-aws-managed AWS-managed key(aws/dynamodb
test-cmk Customer-managed key

test-aws-owned(AWS-owned key)

aws dynamodb create-table \
    --table-name test-aws-owned \
    --attribute-definitions AttributeName=PK,AttributeType=S \
    --key-schema AttributeName=PK,KeyType=HASH \
    --billing-mode PAY_PER_REQUEST \
    --region ap-northeast-1

test-aws-managed(AWS-managed key)

aws dynamodb create-table \
    --table-name test-aws-managed \
    --attribute-definitions AttributeName=PK,AttributeType=S \
    --key-schema AttributeName=PK,KeyType=HASH \
    --billing-mode PAY_PER_REQUEST \
    --sse-specification Enabled=true,SSEType=KMS \
    --region ap-northeast-1

test-cmk(Customer-managed key)

※ 実施する場合は、キーは実際のARNに置き換えてください。

aws dynamodb create-table \
    --table-name test-cmk \
    --attribute-definitions AttributeName=PK,AttributeType=S \
    --key-schema AttributeName=PK,KeyType=HASH \
    --billing-mode PAY_PER_REQUEST \
    --sse-specification Enabled=true,SSEType=KMS,KMSMasterKeyId=arn:aws:kms:ap-northeast-1:000000000000:key/9be72240-961c-4f2c-b126-4c556eb1935c \
    --region ap-northeast-1

最後に、リストア確認用に各テーブル50行ほど入れておきます。

for table in test-aws-owned test-aws-managed test-cmk; do
    for i in $(seq 1 50); do
      aws dynamodb put-item \
        --table-name "$table" \
        --item "{\"PK\":{\"S\":\"item-$i\"},\"name\":{\"S\":\"test-record-$i\"},\"value\":{\"N\":\"$i\"}}" \
        --region ap-northeast-1
    done
    echo "$table done"
  done

なおAWS-ownedキーを選択している場合は「AWSが所有するキー」と表示され、キーIDが確認できません。
(他のタイプはキーIDが確認できる)

ScreenShot 2026-04-06 at 23.46.31

3. DynamoDBのクロスアカウントバックアップ

各DynamoDB テーブルのバックアップを取得し、バックアップアカウントの LAG Vault にコピーします。
バックアッププランの中で「コピー先にコピー」オプションでクロスアカウントを指定することができます。

ScreenShot 2026-04-07 at 00.06.29

DynamoDBをバックアッププランに割り当てます。
なお、実行するIAMロールには AWSBackupServiceRolePolicyForBackupのマネージドポリシーが必要です。

image-20260407000255846

バックアップおよびコピーが完了しました。(所要時間:バックアップは36分、コピーは22分)

image-20260407011223154

EBS や RDS など Non-Fully Managed なリソースでは、AWS-managed key のクロスアカウントコピーは不可(キーポリシーが immutable でアカウント間共有できないため)ですが、DynamoDB は Advanced features を有効化すると Fully Managed になるため、AWS-managed key でもクロスアカウントコピーが可能です。

バックアップは vault の KMS キーで再暗号化されるので、ソーステーブルの暗号化キーに依存しないのが良いところですね。CMK のテーブルも問題なくコピーできました。

4. リストア確認

念のため、クロスアカウント先でリストアが可能か確認しておきます。

リストア時には暗号化キーを指定して別の暗号化方式に変えることができます。

ScreenShot 2026-04-07 at 01.16.45

復元ジョブは完了まで約2分〜6分(50レコード)でした。

ScreenShot 2026-04-07 at 01.21.25

復元直後はテーブルサイズが 0バイト と表示される(更新は6時間間隔)ので、ライブ項目数を取得します。
前手順でインポートした50項目が表示されました。

image-20260407011856849

中身もちゃんと読み取れる状態です。3パターンとも正常にリストアできていました。
事前の想定通り、問題なさそうです。

image-20260407012035950

検証結果

今回の検証結果です。ドキュメントに書いてあることでも、実際に動かしてみることが大事ですね。

ソーステーブルの暗号化 クロスアカウントコピー コピー先の暗号化 リストア検証
AWS-owned key 成功 LAG Vault の暗号化キー(AWS-owned) 成功
AWS-managed key(aws/dynamodb 成功 LAG Vault の暗号化キー(AWS-owned) 成功
Customer-managed key(CMK) 成功 LAG Vault の暗号化キー(AWS-owned) 成功

おわりに

DynamoDB のクロスアカウントバックアップを暗号化キータイプ別に検証し、3パターンすべてで LAG Vault へのコピーが成功する ことを確認しました。
なお、Vaultの暗号化キータイプは後から変更できないため注意が必要です。

Fully Managedのリソースが現状はそこまで多くないのが悩みどころですが、機能拡張によりサポートリソースが増えることを祈っています。

このエントリが誰かの助けになれば幸いです。
それでは、クラウド事業本部 コンサルティング部の荒平がお送りしました!

参考

https://docs.aws.amazon.com/aws-backup/latest/devguide/encryption.html

この記事をシェアする

関連記事