暗号化していないRDS DBインスタンスを暗号化する

2018.07.13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Amazon RDS リソースの暗号化オプションを有効化すると、AES-256 暗号化アルゴリズムにより以下のデータを暗号化することができます。 ※対応しているインスタンスクラスや制限事項についてはAmazon RDS リソースの暗号化をご確認ください。

  • DB インスタンス
  • 自動バックアップ
  • リードレプリカ
  • スナップショット
  • ログ

暗号化オプションはDB インスタンスの作成時にのみ有効にすることができ、作成後のインスタンスでは有効にすることができません。ただし暗号化されていないスナップショットのコピーは暗号化することが可能です。

そのため暗号化してコピーしたスナップショットから暗号化されたインスタンスを復元することができます。

今回は、暗号化していない既存インスタンスを暗号化オプションを有効化にしたインスタンスにする方法をご紹介します。

要件

  • MySQLエンジンの暗号化オプションを有効にしていないDB インスタンスを暗号化したい。
  • エンドポイントは変更したくない。

手順

Step1: スナップショットを作成する

  • 対象インスタンスを選択
  • インスタンスの操作から スナップショットの取得 をクリック

画像

  • スナップショット名を入力
  • スナップショットの取得 をクリック

画像

Step2: スナップショットを暗号化しスナップショットのコピーを作成する

  • スナップショットセクションから、先ほど取得したスナップショットを選択
  • スナップショットのアクションから スナップショットのコピー をクリック

画像

  • 新しい DB スナップショット識別子を入力
  • 暗号を有効化をチェック
  • マスターキーを選択する
  • スナップショットをコピーする をクリック

画像

Step3: 暗号化したスナップショットからDB インスタンスを復元する

  • スナップショットセクションから、暗号化したスナップショットを選択
  • スナップショットのアクションから スナップショットの復元 をクリック

画像

  • DB インスタンス識別子を入力
  • 各種設定は、元のインスタンスと同様にする
  • DB インスタンスの復元 をクリック

画像

Step4: 元のDB インスタンス名を変更する

  • インスタンスセクションから元のDB インスタンス名を選択
  • 変更 をクリック

画像

  • DB インスタンス識別子を入力する
  • 次へ をクリック

画像

変更の概要を確認して、DB インスタンス識別子エンドポイントが変更されることを確認します。

  • すぐに適用 にチェック
  • DB インスタンスの変更 をクリック

画像

Step5: 復元したDB インスタンス名を元のDB インスタンス名に変更する

  • インスタンスセクションから復元したDB インスタンス名を選択
  • 変更 をクリック

画像

  • DB インスタンス識別子に元のインスタンス名を入力する
  • DBパラメータグループを元のインスタンスと同様のものを選択する
  • セキュリティグループを元のインスタンスと同様のものを選択する
  • 次へ をクリック

注記

スナップショットから復元したインスタンスはデフォルトのDBパラメータグループ、セキュリティグループとなっているのでここでは、DBパラメータグループ、セキュリティグループも合わせて変更しています。

変更の概要を確認して、DB インスタンス識別子エンドポイントセキュリティグループDB パラメータグループが変更されることを確認します。

  • すぐに適用 にチェック
  • DB インスタンスの変更 をクリック

画像

Step6: 確認

インスタンスが起動したら作業は完了です。 暗号の有効化がはいとなっていることが確認できます。

画像

Step7: 元のDB インスタンスを削除する

問題がなければ、元のDB インスタンスを削除して終わりです。 手動スナップショットも不要な場合は削除します。

おまけ 各ステップで使う、AWS CLI

Step0: DBインスタンスの情報を取得

aws rds describe-db-instances \
--db-instance-identifier \
> before.txt

Step1: スナップショットを作成する

AWS CLI Command Reference| create-db-snapshot

aws rds create-db-snapshot \
--db-instance-identifier \
--db-snapshot-identifier

Step2: スナップショットを暗号化しスナップショットのコピーを作成する

AWS CLI Command Reference | copy-db-snapshot

aws rds copy-db-snapshot \
--source-db-snapshot-identifier \
--target-db-snapshot-identifier \
--copy-tags \
--kms-key-id

Step3: 暗号化したスナップショットからDB インスタンスを復元する

AWS CLI Command Reference | restore-db-instance-from-db-snapshot

aws rds restore-db-instance-from-db-snapshot \
--db-instance-identifier \
--db-snapshot-identifier \
--db-subnet-group-name \
--db-instance-class

Step4: 元のDB インスタンス名を変更する

AWS CLI Command Reference | modify-db-instance

aws rds modify-db-instance \
--db-instance-identifier \
--new-db-instance-identifier \
--apply-immediately

Step5: 復元したDB インスタンス名を元のDB インスタンス名に変更する

AWS CLI Command Reference | modify-db-instance

aws rds modify-db-instance \
--db-instance-identifier \
--new-db-instance-identifier \
--db-parameter-group-name \
--vpc-security-group-ids \
--apply-immediately

Step6: 確認

"StorageEncrypted": true になっていること、他の値は同じになっていることを確認します。

aws rds describe-db-instances \
--db-instance-identifier \
> after.txt
diff before.txt after.txt

まとめ

今回は暗号化オプションを有効にしていない元のDB インスタンスを、スナップショットのコピーから暗号化オプションを有効にしたDB インスタンスを作成する方法をご紹介しました。 エンドポイントを変えたくない場合も対応可能です。暗号化オプションを有効にする際にご参考ください。

参考URL