menu

【AWS】暗号化されていないRDSを暗号化したい

公開日:2019年01月31日 カテゴリー:AWS, インフラ, 開発

「このRDS、暗号化できたらいいのにな」ってこと、ありませんか?

ネットセキュリティ対策が求められる昨今、稼働中のRDSが「暗号化」されていないものも多少なり存在していると思います。
コンプライアンス要件の達成も含め、掲題のようにお考えの方もいいらっしゃるのではないでしょうか?
そこで今回は、稼働中のRDS暗号化の方法・手順をご紹介します。

RDSを暗号化するメリット

文字通り、RDSのデータ保護が最大のメリットになります。
万一、AWSデータセンタへ不正アクセスや侵入被害にあった場合に効力を発揮しますので、リスクヘッジとしては大きな役割を担います。
※XSSなどによるアプリケーションの脆弱を突かれた場合、RDS暗号化では侵入・漏えいは防げません。

一方で暗号化によるRDSパフォーマンス低下が気になるところですが、大幅なパフォーマンス低下はなさそうです。それでも不安という方は、負荷テストを経て本番環境への導入を検討してみてください。

RDSの設定変更で暗号化を「有効」にする事はできない!

RDSの暗号化はRDSインスタンスの作成時のみで、RDSインスタンスの設定変更ではRDSの暗号化はできません。(2019年1月時点)
ただし、スナップショットは別です。
スナップショットを暗号化し、そこから復元する事で暗号化されたRDSへ置き換える事が可能になります。

一部のインスタンスタイプは暗号化に対応していないものもありますので、詳細は公式サイトをご参考ください。
Amazon RDS リソースの暗号化

設定作業の流れ

すでにシステム稼働しているRDS(MySQL+シングルAZ)の暗号化を想定しています。
RDSが一時的に使用不能になるため、システムダウンが発生することにご注意ください。

① スナップショットを取得
② スナップショットをコピー作成
∟ この時、暗号化を【有効】に!
③ 暗号化済スナップショットから復元

エンドポイントを変更せずに暗号化RDSへ接続させたい

エンドポイントは、インスタンス名によって決まります。

 例)
rdsInstanceName.xxxxxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com

最後に、暗号化RDSのインスタンス名を既存インスタンス名に入れ替える事で、
エンドポイントはそのままでプログラムサイドのDB接続設定を変更する必要がなくなります。

同じインスタンス名でRDSを複数作成・起動させることはできませんので、
先ずは非暗号RDSのインスタンス名を別名へ変更してから、暗号RDSのインスタンス名を適宜変更してください。

非暗号のRDSを停止または削除(任意)

不要になった非暗号RDSは停止、または削除して無駄な料金がかからないようにしておきましょう。
※停止する場合、停止してから1週間後にAWSによって自動起動されます。常時停止させておく仕組みが必要です。

おまけ

一連の作業にかかった時間は約45分程でした。(暗号RDSの初回起動に30分ほどかかりました…)
RDSの設定、連続稼働時間、インスタンスタイプなど状況によって作業にかかる時間も変動すると思いますので、あくまでご参考程度にお願いします。
・稼働期間:約3年
・インスタンスタイプ:db.t2.medium
・ストレージ:汎用SSD+50GB

☆☆ウィズテクノロジーでは、大阪、東京を中心としたシステム開発を行っております
システムのご相談はもとより、一緒に働くエンジニアもお待ちしております。☆☆