コンマ

メモ代わりにアウトプットしています。何か不備がありましたら、お気軽にコメント頂けると有り難いです。

【AWS】AWSのデフォルトKMSキーで暗号化したRDSスナップショットを別AWSアカウントに共有する方法

 TL;DR

AWSデフォルトのKMSキーで暗号化したRDSスナップショットを別AWSアカウントに共有する方法を記載しています。

関連情報

以下を参考にしました。

docs.aws.amazon.com

docs.aws.amazon.com

暗号化されていないRDSスナップショットを別アカウントに共有する方法は以下の記事で記載したのですが、 今回は暗号化されているRDSを別アカウント間で共有する方法をやってみます。 maedakosuke.hatenablog.com

また、上記のDB のスナップショットの共有 - Amazon Relational Database Serviceによると

スナップショットを共有する AWS アカウントのデフォルト AWS KMS 暗号化キーを使って暗号化されたスナップショットを共有することはできません。

とのことなので、すでにRDSをデフォルトのKMSキーを使用して、暗号化されている状態だと共有することができないぽいです。

なので、手順としては以下のような感じで試してみようと思います。

  1. スナップショットの取得(A)
  2. (A)をコピーしてデフォルトでないKMSキーで暗号化(B)
  3. (B)を共有
  4. (B)からDBを復元

前提条件

  • デフォルトのKMSキーで暗号化されたRDSが作成されていること。 f:id:koooosuke:20190425160030p:plain

やってみます。

1.まず現状のRDSのスナップショットを取得します。

f:id:koooosuke:20190425160929p:plain

暗号化されていない場合、この状態なら通常スナップショットを共有できるのですが、今の状態だと共有できません。 f:id:koooosuke:20190425161112p:plain

また、現状のRDSのKMSキーを別アカウントと共有するため、KMSキー詳細をみてみます。 f:id:koooosuke:20190425161629p:plain

KMSキーの詳細には、以下が記載されています。

このサービスで暗号化されたリソースを作成するときにマスターキーを定義しない場合、このマスターキーが使用されます。このキーの可用性、耐久性、セキュリティを確保するために、このキーの設定は変更できません。

とのことで、デフォルトのKMSキーは設定変更ができないので、まずKMSキーを新たに作成し、その暗号化キーに変更する必要がありそうです。

2.新たにKMSキーを作成します。

f:id:koooosuke:20190425162752p:plain

3.スナップショットをコピーして、新たに作成した暗号化キーでスナップショットを作成します。

スナップショットのコピー f:id:koooosuke:20190425163129p:plain

新たに作成したKMSキー(rds_key)をマスターキーとしてスナップショットをコピーします。(test-db-snapshot-new) f:id:koooosuke:20190425165910p:plain

4.test-db-snapshot-newを共有先のアカウントに共有します。 f:id:koooosuke:20190425170114p:plain

すると、共有先のAWSアカウントでスナップショットが共有ができていると思います。 f:id:koooosuke:20190425170415p:plain

ただ、この状態から復元はできないので、コピーをしようとするのですが、KMSキーが共有されておらず 権限がないため、コピーもできない状態です。そのため、KMSキーを共有していきます。 f:id:koooosuke:20190425170538p:plain

5.KMSキーを外部アカウントに対して共有します。

IAM>暗号化キーから外部アカウントAWSアカウントID番号を入力して、共有します。 f:id:koooosuke:20190425170820p:plain

6.共有先のAWSアカウントで共有済のスナップショットからコピーを作成し復元してみます。

共有されたスナップショットを復元することができなかったので、コピーを作成してみます。 f:id:koooosuke:20190425175729p:plain

次に、コピーしたスナップショットからDBを復元してみます。 f:id:koooosuke:20190425180837p:plain

正常に接続でき、復元できました。