暗号化されていないEBSスナップショットを暗号化する
yoshidaです。
AWS Elastic Block Store(以下EBS)は暗号化に対応しており、暗号化のタイミングについて以下のような特徴があります。
- EBSボリュームの作成時に暗号化を有効にする
- 暗号化されていない既存のEBSボリュームは暗号化できない
- 暗号化されたEBSボリュームから取ったスナップショットは暗号化される
スナップショットについてはどうかというと、暗号化されたスナップショットから暗号化されていないスナップショットへの変換は出来ませんが、この逆、つまり、暗号化されていないスナップショットを暗号化することはできます。
AWS CLIからEBSスナップショットを暗号化する
スナップショットの暗号化にはEC2のCopySnapshot APIでEncrypted=true
を渡せば完了です。
AWS CLIから試してみましょう。
暗号化されていないスナップショットの確認
まずはEBSスナップショットを確認します。
$ aws ec2 describe-snapshots --owner-id 12345 { "Snapshots": [ { "Description": "", "Tags": [ { "Value": "unencrypted-snapshot", "Key": "Name" } ], "Encrypted": false, "VolumeId": "vol-asdf", "State": "completed", "VolumeSize": 8, "Progress": "100%", "StartTime": "2015-08-06T02:38:35.000Z", "SnapshotId": "snap-4321", "OwnerId": "12345" } ] }
"Encrypted": false
とあるように、スナップショットは暗号化されていません。
スナップショットの暗号化
このスナップショットから暗号化されたスナップショットを作成するには、スナップショットのコピーコマンド(ec2 copy-snapshot
)に--encrypted
オプションを渡します。
$ aws ec2 copy-snapshot --source-region ap-northeast-1 --source-snapshot-id snap-4321 --encrypted --description 'encrypted snapshot' { "SnapshotId": "snap-9876" }
暗号化されたスナップショットの確認
$ aws ec2 describe-snapshots --owner-id 12345 { "Snapshots": [ { "Description": "", "Tags": [ { "Value": "unencrypted-snapshot", "Key": "Name" } ], "Encrypted": false, "VolumeId": "vol-asdf", "State": "completed", "VolumeSize": 8, "Progress": "100%", "StartTime": "2015-08-06T02:38:35.000Z", "SnapshotId": "snap-4321", "OwnerId": "12345" }, { "Description": "encrypted snapshot", "Encrypted": true, "VolumeId": "vol-4004fb3b", "KmsKeyId": "arn:aws:kms:ap-northeast-1:12345:key/asdf", "State": "completed", "VolumeSize": 8, "Progress": "100%", "StartTime": "2015-08-06T02:44:08.000Z", "SnapshotId": "snap-9876", "OwnerId": "12345" } ] }
コピーコマンド経由で作成されたスナップショットは"Encrypted": true
というように無事暗号化されました。
暗号化の鍵について
EBS暗号化ではデフォルトのAWS Key Management Service(AWS KMS)カスタマーマスターキー(CMK)が使用されます。
コピー時に--kms-key-id
オプションを渡せばデフォルト以外のCMKを利用することも可能です。
暗号化に利用されている鍵は$ aws ec2 describe-snapshots
のレスポンスKmsKeyId
から確認できます。
まとめ
暗号化されていないEBSボリュームを直接暗号化することはできませんが、一度スナップショットを取ることで簡単に暗号化できました。