0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[AWS]クロスアカウントでのRDSスナップショット共有方法

Posted at

1. 手動スナップショットのクロスアカウント共有方法

  • 手動で取得したDBスナップショットは、他アカウントへプライベートに共有可能(最大20アカウントまで)。
  • 共有されたスナップショットは、共有先アカウントでコピーまたはリストアに利用できる。
    • 共有は、AWSマネジメントコンソールの「Share snapshot」アクション、AWS CLI、またはRDS APIで実施できる。
  • 共有時は、スナップショットの属性 restore に共有先アカウントIDを追加して権限を付与する。
  • AWS CLIでの共有方法
    以下のように、aws rds modify-db-snapshot-attribute コマンドを利用し、--attribute-name restore--values-to-add オプションで共有先のAWSアカウントIDを指定する。
    aws rds modify-db-snapshot-attribute \
        --db-snapshot-identifier mydbsnapshot \
        --attribute-name restore \
        --values-to-add 123456789012
    
    • 上記コマンドにより、指定したスナップショットの restore 属性に対象アカウントIDが追加され、共有先はそのスナップショットからDBインスタンスをリストアできる。
    • 複数アカウントに共有する場合は、カンマ区切りやJSON配列でIDを指定可能。
    • 共有解除の場合は、--values-to-remove オプションを使用する。
  • アクセス権の確認
    aws rds describe-db-snapshot-attributes コマンドで、スナップショットに許可されているAWSアカウント(AttributeValues)の一覧を確認できる。

注意: スナップショットを all で共有(公開)すると全AWSアカウントからリストア可能になるが、これは暗号化されていない手動スナップショットのみ対象。機密データを含む場合は公開共有は避けること。

2. 自動スナップショットをコピーして共有する方法

自動スナップショット(RDSがスケジュールに基づいて取得するバックアップ)は、直接他アカウントに共有できないため、以下の手順を取る:

① 自動スナップショットのコピー(手動スナップショットへの変換)

  • 共有元アカウントで自動スナップショットを手動スナップショットにコピーすることで、共有可能な状態にする。

  • コピーは、AWSマネジメントコンソールの「Copy snapshot」操作や、CLIコマンド aws rds copy-db-snapshot で実施できる。

  • 例(以下の値は適宜置き換えること):

    aws rds copy-db-snapshot \
      --source-db-snapshot-identifier arn:aws:rds:<source-region>:<source-account-id>:snapshot:<automated-snapshot-id> \
      --target-db-snapshot-identifier my-manual-copy
    
    • <source-region><source-account-id><automated-snapshot-id> は該当する情報に置換。
    • コピー完了後、my-manual-copy が手動スナップショットとして扱われる。

② コピーした手動スナップショットの共有

  • 手動スナップショットと同様に、modify-db-snapshot-attribute コマンドで共有先アカウントIDを指定して共有する。

    aws rds modify-db-snapshot-attribute \
      --db-snapshot-identifier my-manual-copy \
      --attribute-name restore \
      --values-to-add 123456789012
    
    • 123456789012 は共有先アカウントのAWSアカウントID。

③ 共有先での利用

  • 共有先アカウントでは、共有されたスナップショットを一度自アカウントにコピーする運用が一般的。
    • コンソールの「Shared with me(共有済み)」タブから「Copy snapshot」でコピーし、自アカウント内のスナップショットとして利用できる。

3. 暗号化されたスナップショットの共有方法(KMSキーの設定)

暗号化されたRDSスナップショットを共有する場合、KMS(Key Management Service)のキー設定と、スナップショットのコピー(再暗号化)が必要となる。
※デフォルトのAWS管理KMSキーで暗号化されたスナップショットは共有できない。

① カスタマー管理KMSキーの用意と権限付与

  • 共有元アカウントでカスタマー管理のKMSキーを作成し、キーのキーポリシーまたは使用権限に共有先アカウントを追加する。

  • 例として、以下のポリシーに共有先アカウントID(例: 123456789012)を追加する。

    {
      "Version": "2012-10-17",
      "Id": "key-default-1",
      "Statement": [
        {
          "Sid": "Allow use of the key",
          "Effect": "Allow",
          "Principal": {
            "AWS": [
              "arn:aws:iam::<your-account-id>:root",
              "arn:aws:iam::123456789012:root"
            ]
          },
          "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey"
          ],
          "Resource": "*"
        }
      ]
    }
    
  • ポリシー更新は以下のCLIコマンドで実施:

    aws kms put-key-policy \
      --key-id <your-kms-key-id> \
      --policy-name default \
      --policy file://kms-key-policy.json
    
    • <your-kms-key-id> は対象KMSキーID。

② 暗号化スナップショットのコピー(再暗号化)

  • 共有元アカウントで、元の暗号化スナップショットを、上記カスタムKMSキーを使用してコピー(再暗号化)する。

    aws rds copy-db-snapshot \
      --source-db-snapshot-identifier arn:aws:rds:<source-region>:<source-account-id>:snapshot:<encrypted-snapshot-id> \
      --target-db-snapshot-identifier my-encrypted-manual-copy \
      --kms-key-id <your-kms-key-id>
    
    • <encrypted-snapshot-id>: 元の暗号化スナップショットのID
    • <your-kms-key-id>: 更新したカスタムKMSキーのID
    • コピー完了後、my-encrypted-manual-copy が手動スナップショットとして扱われ、共有可能になる。

③ コピーした暗号化スナップショットの共有

  • 通常の手動スナップショットと同様に、以下のコマンドで共有先アカウントに共有する。

    aws rds modify-db-snapshot-attribute \
      --db-snapshot-identifier my-encrypted-manual-copy \
      --attribute-name restore \
      --values-to-add 123456789012
    

④ 共有先でのコピーと復元

  • 共有先アカウントでは、直接リストアはできないため、共有された暗号化スナップショットを自アカウントにコピーする。
    • コピー時には、共有先のカスタムKMSキーを指定して暗号化する必要がある。
    • コピーが完了すると、自アカウント内のスナップショットとして通常通りリストア可能となる。

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?