4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS CLIでEC2のルートボリュームを暗号化する

Last updated at Posted at 2016-10-13

はじめに

システム構築にEC2を使う場合に、社内セキュリティ基準などでディスクレベルの暗号化が必要な場合があるかと思います。
その際にEBSならばすぐに暗号化できるのですがルートボリュームは一手間かかるのでそれを紹介します。

手順

EC2のインスタンスを作成

事前にSecurity group、Subnet、IAMのインスタンスプロファイル、鍵を変数として設定しておいてください。
また、jqをyum install -y jq などでインストールしておいてください。

instanceid=`aws ec2 run-instances \
--image-id ami-1a15c77b \
--count 1 \
--instance-type t2.small \
--security-group-ids ${sg_id} \
--subnet-id ${subnet_id} \
--associate-public-ip-address \
--key-name ${key_name} \
--iam-instance-profile Arn=arn:aws:iam::${iam_profile} \
--block-device-mappings '[{"DeviceName":"/dev/xvda","Ebs":{"DeleteOnTermination":false, "VolumeSize":20,"VolumeType":"gp2"}}]' \
| jq -c -r '.Instances[]|.InstanceId'`

この時点ではルートボリュームは暗号化できません。

AMI作成

作成したインスタンスのAMIを作成します。
この時点でもまだルートボリュームは暗号化されていません。

amiid=`aws ec2 create-image --instance-id ${instanceid} --name "noenctest" --no-reboot | jq -c -r '.ImageId'`

AMIをコピー

ここで暗号化の処理をします。
下記の例ではKMSのkeyIDを指定していないのでデフォルトのものが使われますが、--kms-key-idで指定することもできます。
また、暗号化したAMIはアカウントを超えてコピーすることはできなくなります(private設定になる)ので、検証・ステージング・本番等でアカウントが別れている場合は要注意です。

enc_amiid=`aws ec2 copy-image --source-image-id ${amiid} --source-region ap-northeast-1 --region ap-northeast-1 --encrypted --name "enctest" | jq -c -r '.ImageId'`

これで暗号化ができました!
念のためコンソールから確認してみると
スクリーンショット 0028-10-13 15.37.34.png

暗号化できてますね!

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?