目的
- EC2を稼働する際にEBSボリュームをデフォルトの暗号化設定をチェックせずに暗号化無しで作成している場合に、後から、EBSボリュームを暗号化したい
方法
EBSボリュームのsnapshotからコピーして復元する際に暗号化してそれをEC2に再アタッチする方法で行う
- snapshotを取得
- 暗号化を有効にしてsnapshotをコピー
- コピーされたsnapshotからコピーを作成
- 作成した新たなボリュームをインスタンスにアタッチ
実際に動いているサービスに対して行う時の手順の詳細
1、AWS KMSでキーを作成する
- Key Management Service (KMS)からキーの作成
https://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/services-ebs.html
2、EBSを暗号化する該当のEC2インスタンスをELBから外す。
- スナップショットを取るときに静止点を作ってデータの不整合を防ぐ必要がある
- インスタンスへの入出力を止めるために作業するインスタンスをELBから外してアクセスしてくる状態がないようにしてから作業する
3、該当のwebサーバ内でも通信ログが止まっているか確認
- ELBから外したあと、本当に通信が来ていないことを確認するために該当のwebサーバーログ等を確認する
4、稼働しているEC2インスタンスを停止する
5、EC2インスタンスに紐付いているEBS Volumeを特定する
6、EBS VolumeのSnapshotを作成する
7、作成されたSnapshotをコピーする
上記からスナップショット一覧へ
作成に時間がかかる(10〜15分程度)
コピーを作成する際に暗号化する
8、コピーしたSnapshotからEBS Volumeを作成する
暗号化したスナップショットからEBS Volumeをさらに暗号化して作成
- 名前はencrypted_{インスタンス名}にする。(既存の暗号化前のボリュームと区別するため)
- アベイラビリティーゾーンはebsボリュームを紐づける想定のインスタンスが存在するアベイラビリティーゾーンに設定する。
- マスターキーにはAWS KMSで作成したキーを使用。
9、EC2インスタンスに紐づいている既存のEBS Volumeをデタッチする
ルートデバイス確認。AmazonLinuxは /dev/xvda。後ほどルートデバイスを入力する欄あり
10、EC2インスタンスに前段の手順で作成した新たなEBS Volumeをアタッチする
EBSボリュームのアタッチ
11、EC2インスタンスを再起動する
- 「インスタンスの開始」からEC2インスタンスを起動する。
- EC2インスタンスのステータスチェックが合格になるのを確認
12、ELBへの紐付けを復活する。
- statusがhealthyになればオッケー
13、サービスnowebページが見れるかどうか確認
終了。
参考
- https://dev.classmethod.jp/articles/encryption-ebs-for-running-ec2-instance/#return-note-282862-1
- https://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/services-ebs.html3
終わりに
株式会社Relicでは、サーバーサイドエンジニアを積極的に採用中です。
またRelicでは、地方拠点がありますので、U・Iターンも大歓迎です!🙌
少しでもご興味がある方は、Relic採用サイトからエントリーください!