【新機能】EBSのブートボリュームが暗号化できるように
こんにちは、せーのです。 今日はEBSの話題です。EBSの暗号化というのは以前から可能でしたが、今回はブートボリュームが暗号化できるようになった、という新機能のご紹介です。
全ての暗号化が可能に
今までもAWSの様々なサービスに暗号化が適用され、企業コンプライアンスやセキュリティ要件にも使えるものとなってきましたが、今回の新機能によってデータボリュームとして新たにアタッチしていたEBSの他に元々の起動ボリュームに使われていたEBSにも暗号化が可能になった事によってEC2に関わる全てのデータを暗号化して保存することが出来るようになりました。
他のサービス同様、EBSブートボリュームの暗号化もKMSというAWSの暗号化サービスを通じて行われますので、継続したセキュリティの維持や厳しいコンプライアンス要件、監査に対する対応に利用することも出来るようになります。OSはLinuxでもWindowsでもOK、です。データは必要に応じて復号化されてメモリに移され使うことが出来ます。
やり方はワンクッション置く
実際のやり方ですが暗号化されたボリュームのあるAMIが用意されているわけではなく、通常のAMIで一旦インスタンスを立ち上げ、そのインスタンスからイメージAMIを作り、それを新たなAMIとしてコピーする時にブートボリュームの暗号化を選択できます。つまり「コピーのAMIイメージを作る」という時にブートの暗号化ができるので今現在AMIの状態で持っているカスタムイメージがある場合はそのイメージからブートが暗号化されたAMIをコピーし、そこからインスタンスを作ることができます。
AMIをコピーするのは「ブートを暗号化する」という目的からそのAMIをパブリックとすることは憚られるからかと思われます。ブートが暗号化されたAMIは常にprivateとして保管され、アカウントを超えてコピーすることはできなくなります。ここらへんは重要なので例えば開発環境と本番環境のアカウントが違う場合は開発環境では通常のAMIでシステムを構築し、AMIを本番環境にコピーしてからブートを暗号化してからローンチ、というようなプロセスを取らないとせっかく作った開発環境のAMIが本番で使えなくなることが考えられますのでご注意下さい。
コピーのAMIイメージを作るにはマネージメントコンソールからコピーAMIを操作するか、API(SDKやAWS CLI)でec2-copy-imageコマンドを叩くか、のどちらかです。CLIの場合は
$ ec2-copy-image -r source_region -s source_ami_id \ [-n ami_name] [-d ami_description] [-c token] \ [--encrypted] [--kmsKeyID keyid]
というようにKMSのKeyIDを指定することで可能となります。[--kmsKeyID keyid]を指定しないで[--encrypted]のみを指定するとデフォルトのaws/ebsキーを使用します。
やってみた
それではやってみましょう。今回は簡単にマネージメントコンソールを使います。 マネージメントコンソールからEC2に飛び、通常にAmazon Linuxをローンチします。最初にインスタンスをローンチする際にはブートボリュームは暗号化することはできません。データボリュームは暗号化できますね。
インスタンスを立ち上げたらそこからイメージを作成します。この時点でもまたブートボリュームは暗号化できません。
イメージが作成できました。次にこのイメージをAMIコピーします。[アクション]から[AMIのコピー]を選択します。
AMIコピーの一番下に[Encrypt target EBS snapshots]のチェックを入れ、使用するマスターキーを選択します。マスターキーを作っていない人もデフォルトとしてEBS用のマスターキーが用意されていますのでそちらを使うことができます。
暗号化が完了したAMIです。パッと見た感じは区別が中々出来ないですね。
あとはこのAMIイメージからインスタンスを立ち上げます。ボリュームの部分でブートボリュームも暗号化できていることが確認できます。立ち上げ方は特に変わりません。
まとめ
いかがでしたでしょうか。一手間加えるだけでセキュリティ要件がアップするこちらの新機能、是非活用してみてください。