また、鍵ファイルを同じインスタンス内に置かないためにS3から鍵ファイルを取得し、マウントした後に削除するようにします。
それでは手順を追ってみます。
まずcryptsetupで/dev/xvdfにアタッチされたEBSボリュームの暗号化を行い、マウントします。
# yum install -y cryptsetup # yum install xfsprogs -y # cryptsetup luksFormat -c aes -h sha256 /dev/xvdf # cryptsetup luksOpen /dev/xvdf encrypted # ls -l /dev/mapper/ # mkfs.xfs /dev/mapper/luks # mkdir /mnt/vol # mount -t xfs /dev/mapper/luks /mnt/vol # mkdir /mnt/vol/data
次に鍵ファイルを作成し、cryptsetupに登録します
# dd if=/dev/urandom of=/root/encrypted_key bs=1 count=1024 # cryptsetup luksAddKey /dev/xvdf /root/encrypted_key
S3バケットを作成し、そこへ鍵を保管します
自動で暗号化+マウントするために起動スクリプトをつくり、S3から鍵ファイルを取得しマウントするようにします。終わったらAMIを作成します。
# cat /etc/init.d/cryptmount ----------- #!/bin/sh # # # chkconfig: 345 60 16 aws s3 get-object --region ap-northeast-1 --bucket luks-key --key xvdf_luks_key /boot/xvdf_luks_key cryptsetup luksOpen /dev/xvdf luks --key-file /boot/xvdf_luks_key mount -t xfs /dev/mapper/luks /mnt/vol rm -rf /boot/xvdf_luks_key ----------- # rm -rf /root/xvdf_luks_key
IAM Roleを作成し、S3へのアクセスを許可します
作成したAMIの起動時にIAM Roleを指定します
これで、鍵がない状態ではEBSをマウントすることができなくなりました。
以上です。