Windowsインスタンスのルートボリュームの暗号化を解除したい

EBS ボリュームの暗号化を解除する機能はありませんが、暗号化されていない新規ボリュームにデータをコピーを行うことで対応可能です。この記事では、暗号化された Windows Server インスタンスのルートボリュームを、Linux インスタンスを用いて暗号化されていない新規ボリュームにデータをコピーし、ルートボリュームを置き換える方法を説明します。
2024.03.23

困っていた内容

Windows Server の EC2 インスタンスのルートボリュームが暗号化されています。

これを復号化する必要があるのですが、手順を教えてください。

どう対応すればいいの?

暗号化された EBS の復号化はできません。

新規の EBS ボリュームを作成し、そこにデータをコピーし、ルートボリュームの置き換えを行う必要があります。

具体的には、以下の re:Post の手順が使用できます。

この re:Post 記事内に Windows Server に関する言及はありませんが、Windows Server インスタンスでも、この方法で対応可能です。

検証

使用したリソース

  • Target Instance (Windows)
    暗号化されたルートボリュームを持つ Windows Server インスタンス。この検証では Windows Server 2022 を使用しました。
  • New Volume
    Target Instance (Windows) と同じアベイラビリティゾーンに、暗号化されていない新しい EBS ボリュームを作成します。データの損失を避けるため、新しいボリュームは暗号化されたボリュームより大きいサイズである必要があります。
  • Rescue Instance (Linux)
    Target Instance (Windows) と同じアベイラビリティゾーンに、暗号化されたボリュームと新しいボリューム間のデータのコピーを行うための Linux インスタンスを作成します。この検証では Amazon Linux 2023 を使用しました。

対応手順

  1. Target Instance (Windows) の暗号化されているルートボリュームのデバイス名をメモしておきます。

  2. Target Instance (Windows) を停止後、ルートボリュームをデタッチします。

  3. 2 でデタッチしたボリュームと New Volume の両方を Rescue Instance (Linux) にアタッチします。

  4. Rescue Instance (Linux) に SSH で接続し、lsblk コマンドで二つのボリュームがアタッチされていることを確認します。

    $ lsblk
    NAME      MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
    xvda      202:0    0   8G  0 disk 
    ├─xvda1   202:1    0   8G  0 part /
    ├─xvda127 259:0    0   1M  0 part 
    └─xvda128 259:1    0  10M  0 part /boot/efi
    xvdf      202:80   0  30G  0 disk 
    └─xvdf1   202:81   0  30G  0 part 
    xvdg      202:96   0  50G  0 disk

  5. dd コマンドを使用し、データをコピーします。

    sudo dd if=/dev/xvdf of=/dev/xvdg bs=4096 status=progress

    ※ 上記コマンドでは /dev/xvdf が既存の暗号化されたボリューム、/dev/xvdg がコピー先の新しいボリュームを指しています。2 でアタッチした際のデバイス名に応じてコマンドを変更しご使用ください。

  6. コピー完了後、New VolumeRescue Instance (Linux) からデタッチします。

  7. New VolumeTarget Instance (Windows) のルートボリュームとしてアタッチします。このとき、デバイス名を手順 1 でメモしたものにします。

  8. Target Instance (Windows) を開始し、正常に起動できることを確認します。

参考資料