こんにちは。サニービュー事業部の小寺です。
EC2を使われている方は多いですよね。
デフォルト設定の場合、稼働しているEC2インスタンスのEBS Volumeは特に暗号化されていません。セキュリティ要件によって、稼働後にEBSを暗号化する必要が出ることもありますよね。
ということで、今日は、Amazon EBSの暗号化についてお伝えします。
Amazon EBSとは
Amazon Elastic Block Store の略で、Amazon Elastic Compute Cloud (EC2) にアタッチして使われる使いやすく、スケーラブルで、高性能なブロックストレージサービスです。
・高い可用性
EBSボリュームは 99.999% の可用性を持つように設定されています。
io2 Block Expressボリュームによる99.999%の耐障害性で障害から保護します。1年間使用したとして、5分15秒の停止まで許容するという数字になっています。
・ディスクは大きく2つのタイプが存在
SSD バックドストレージ (パフォーマンスは主に IOPS に依存します)
データベースやブートボリュームなどのトランザクションワークロードが主な利用目的です。
HDD バックドストレージ (パフォーマンスは主に MB/秒に依存します)
MapReduce やログ処理などのスループット集約型ワークロードが主な利用目的です。
・Amazon データライフサイクルマネージャーでのスケジューリングされたスナップショットの作成
データサイクルマネージャーを使用して、EBSのスナップショットをスケジューリングして自動で取得できます。データのバックアップや保存期間を設定でき、ポリシーに沿ったバックアップを行うことが出来ます。
ライフサイクルの管理によって、スナップショットが定期的にクリーンアップされ、適切なコスト管理ができるようになります。
EBS 暗号化の仕組み
EC2 インスタンスのブートボリュームとデータボリュームの両方を暗号化できます。
暗号化された EBS ボリュームを作成し、サポートされるインスタンスタイプにアタッチする場合、以下のタイプのデータが暗号化されます。
・ボリューム内の保存データ
・ボリュームとインスタンスの間で移動されるすべてのデータ
・ボリュームから作成されたすべてのスナップショット・それらのスナップショットから作成されたすべてのボリューム
既存のEBSは暗号化できるの?
既存の暗号化されていないボリュームを暗号化したり、暗号化されたボリュームから暗号化を削除したりする直接的な方法はありません。
では、既存の暗号化されていないEBSをどうやって暗号化すれば良いのでしょうか。
EC2インスタンスにアタッチされたEBSを暗号化したボリュームに差し替えることで実現できます。
1)KMSキーを作成します
KMSを使って、スナップショットから作成されたボリュームを暗号化できるようにします。
KMSより「キーの作成」をクリックします。
暗号化には「対称CMK」と「非対象CMK」の2つがあります。今回、使用するのは「対称CMK」です。

後は、そのまま次へをクリックし、キーが作成されます。

2)スナップショットを取得します
EC2を停止します。EC2インスタンスに紐付いているEBS Volumeがどれか特定します。この時点では、まだ暗号化がされていない状態です。

対象のボリュームを選んで、スナップショットの作成を実行します。
3)EBS(暗号化)ボリュームを作成します
暗号化したスナップショットからEBSボリュームを作成します。まずは、2)で取得したスナップショットをコピーし、暗号化をします。

暗号化のオプションとKMSのKey ID(Key Alias)を指定します。

無事にスナップショットの暗号化がされました。

次に暗号化されたスナップショットからEBSを作成します。

4)暗号化されていないEBSボリュームをEC2インスタンスからデタッチします。
EC2インスタンスに紐付いているEBS Volumeがどれか特定します。
暗号化されていない方のボリュームを「ボリューム」より「デタッチ」を選びます。
5)暗号化されたEBSボリュームをEC2インスタンスにアタッチします。
3)で作成した暗号化されたボリュームを選び、「ボリューム」より「アタッチ」を選びます。これで、EBSの暗号化は完了です。
まとめ
EC2インスタンスにアタッチされたEBSボリュームが非暗号化の場合に、
暗号化したボリュームに差し替える手順は以下の通りです。
・KMSキーの作成
・スナップショット(暗号化されていない)の取得
・スナップショットのコピー(暗号化)を行う
・EBS(暗号化)ボリュームを作成
・既存の暗号化されていないEBSをデタッチ
・暗号化されたEBSをアタッチ
