はじめに
皆さん、EBS(Elastic Block Store)のデフォルト暗号化はされていますでしょうか。
AWS Marketplaceの仮想アプライアンス製品(AMI)からEC2を構築した際、自動作成されたEBSボリュームが暗号化されていないことに気づいたことが本記事を書くきっかけです。
個別設定では漏れが生じるリスクがあるため、アカウント単位でのデフォルト暗号化が有効な対策と判断しました。
本記事ではその設定手順をAWS CLIを用いて解説します。
EBSデフォルト暗号化とは
EBSのデフォルト暗号化は、特定のAWSリージョンで今後新規に作成されるすべてのEBSボリュームを自動的に暗号化する機能です。
この設定を有効にすると、以下のリソースが暗号化によって保護されます。
- ボリューム内の保存データ (Data at rest)
- 暗号化されたボリュームから作成されたスナップショット
- 暗号化されたスナップショットから作成されたボリューム
暗号化はAWS KMSと連携して行われ、AES-256方式で実施されます。
EC2インスタンスからはOS上で透過的に動作するため、アプリケーションやOSの設定変更は一切不要です。
AWS CLIでの設定手順
【STEP 1:東京リージョンに対して有効化】
本記事では東京リージョン(ap-northeast-1)を対象に設定します。
aws ec2 enable-ebs-encryption-by-default --region ap-northeast-1
実行結果
{
"EbsEncryptionByDefault": true
}
"EbsEncryptionByDefault": true が返れば設定完了です。
【STEP 2:設定確認】
aws ec2 get-ebs-encryption-by-default --region ap-northeast-1
実行結果
{
"EbsEncryptionByDefault": true
}
AWS Security Hubとの関係
本設定は、AWS Security Hub の「EC2.7 EBS default encryption should be enabled」に対応しています。
このコントロールは「AWS 基礎セキュリティのベストプラクティス v1.0.0」の準拠項目に含まれており、重大度は「中(MEDIUM)」に分類されています。
Security Hubを利用している環境では、本設定を行うことでセキュリティスコアの向上にも直結します。
運用上の補足と注意事項
EBSデフォルト暗号化を有効にする際、知っておくべき重要な点がいくつかあります。
-
設定の適用範囲はリージョン単位
本記事では東京リージョン(ap-northeast-1)を対象としましたが、この設定はリージョンごとに独立しています。
つまり、東京リージョンで有効化しても、他のリージョンには適用されません。複数のリージョンでワークロードを運用している場合は、忘れずに各リージョンで設定を有効化してください。 -
既存ボリュームは暗号化されない
この設定が影響するのは、有効化後に新規作成されるEBSボリュームと、それから作成されるスナップショットのみです。
すでに存在する暗号化されていないボリュームは、この設定を有効にしても暗号化されません。
既存ボリュームを暗号化するには、一度スナップショットを取得し、そのスナップショットを暗号化しながらコピー、そして暗号化されたスナップショットから新しいボリュームを復元する、といった追加の作業が必要になります。 -
暗号化キー(KMSキー)の選択
デフォルトの暗号化では、裏側でAWS Key Management Service (KMS) が利用されます。
本記事で紹介したコマンドでは、AWSが自動で管理する「AWSマネージドキー (aws/ebs)」が使用されます。
もし、キーのアクセスポリシーやローテーションを自社で厳密に管理したい場合は、enable-ebs-encryption-by-defaultコマンドに--kms-key-idオプションを付与することで、独自に作成した「カスタマーマネージドキー(CMK)」を指定することも可能です。
まとめ
本記事では、EBSデフォルト暗号化の概要とAWS CLIを用いた設定手順を解説しました。
本記事がAWSを利用する方のセキュリティ対策の参考になれば幸いです。
参考リンク

