RDSを使用する上で「暗号化」は避けられないものだと思います。
今回は、スナップショットの暗号化について少しだけ詳しくなれるように、最低限の解説をしたいと思います。
暗号化の対象は?
暗号化される対象は以下になります。
- DBインスタンス
- スナップショット
- 自動バックアップ
- リードレプリカ
- ログ
暗号化の仕組みは?
AWS KMSキー(AWSマネージドキー or カスタマーマネージドキー)を利用して暗号化されます。暗号化や復号はRDSが裏でやってくれるため、クライアントアプリケーション側で追加設定などは不要です。
以下は、簡単な暗号化/復号化のイメージです。
暗号化

復号化

データを暗号化する上で気をつけることは?
- データの暗号化は、DBインスタンス作成時にしか実施できません。また、途中で暗号化を無効にすることができません。
- DBインスタンスがKMSへのアクセスできなくなると、DBインスタンスが終了状態になります。そうなると、バックアップから復元する必要があります。そのため、暗号化する場合はバックアップを取得しておくことが大切になってきます。
暗号化されたスナップショットを別AWSアカウントに共有するには?
システムを運用していると「本番アカウントから開発アカウントにデータを持ってきたい!」とかよくあります。そんなときのために知っておきたい手順を紹介します。(もちろん本番のスナップショットが暗号化されている前提です!暗号化されていないスナップショットの共有は簡単なので今回は割愛します。)
注意点
KMSのAWSマネージドキーを利用して暗号化している場合は共有することができません。(以下の画像は例)

手順
1.コピー元のAWSアカウントにて、KMSカスタマーマネージドキーで暗号化したスナップショットを用意する。
2.コピー元のAWSアカウントにて、1で使用したKMSキーのポリシーに、コピー先AWSアカウントの「kms:CreateGrant」を許可する。(以下、XXXXXXXXXXにコピー先AWSアカウントIDが入ります。)
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:sts::XXXXXXXXXX:assumed-role/OrganizationAccountAccessRoleToStaging/test-user"
},
"Action": "kms:CreateGrant",
"Resource": "*"
}
3.コピー先AWSアカウントにて、共有されたスナップショットをコピーする。
尚、コピーするときにエラーが出た場合(以下のような)は、2の作業ができていない可能性があります。

コメント