概要
Amazon EC2で使用するEBS(Elastic Block Store)ボリュームには、機密データやアプリケーションデータが保存されます。これらのデータを保護するために、EBSボリュームの暗号化は欠かせません。
EBSボリュームの暗号化にはAWS KMS(Key Management Service) が統合されており、暗号化キーの管理をKMSに委任できます。KMSを使用することで、暗号化キーの作成・ローテーション・無効化・監査をAWSの基盤上で一元管理でき、EC2に接続されるすべてのEBSボリュームのデータを効果的に暗号化できます。
さらに、AWSではEBSデフォルト暗号化という機能が提供されており、アカウントのリージョン単位でEBSボリュームの暗号化をデフォルトで有効にできます。この機能を使えば、ボリューム作成時に暗号化を指定し忘れるリスクを排除できます。
本記事では、EBSボリューム暗号化の仕組みとKMSとの統合を解説し、実際にKMSカスタマー管理キーを使ったEBSボリュームの暗号化からデフォルト暗号化の設定までを体験します。
[!NOTE] KMSの3種類のキータイプ(AWS所有キー、AWSマネージドキー、カスタマーマネージドキー)についてはAWS暗号化キーの使い方 – 3種類の特徴と選び方を参照してください。

この記事のメリット
- EBSボリューム暗号化の仕組み(エンベロープ暗号化とデータキーの管理)を正確に理解できる
- KMSのAWS管理キーとカスタマー管理キーの使い分けを、EBSの文脈で把握できる
- EBSデフォルト暗号化を活用して、暗号化漏れを防止する運用方法を習得できる
- KMSカスタマー管理キーを使ったEBSボリュームの暗号化を実際に体験できる
- SCS試験でEBSボリュームの暗号化方式に関する問いに正確に答えられるようになる
執筆者とキャラクター紹介
執筆者:土肥(とひ)
株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。

クラウドおさる
クラウドおさるはじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。



基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。



猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。
技術解説
EBSボリューム暗号化の仕組み
EBSボリュームの暗号化では、エンベロープ暗号化が使用されます。具体的には以下の流れでデータが保護されます。
- KMSキー(マスターキー)からデータキーが生成される
- データキーでEBSボリュームのデータが暗号化される
- データキー自体はKMSキーで暗号化され、暗号化されたデータキーがボリュームのメタデータとして保存される
この仕組みにより、KMSキー自体はKMSの外部に出ることなく、大量のデータを効率的に暗号化できます。


暗号化の対象
EBSボリュームの暗号化を有効にすると、以下のデータがすべて暗号化されます。
- ボリューム内の保存データ(Data at Rest)
- ボリュームとインスタンス間を移動するすべてのデータ(Data in Transit)
- ボリュームから作成されたすべてのスナップショット
- スナップショットから作成されたすべてのボリューム
暗号化はEC2インスタンスをホストするサーバー側で処理されるため、アプリケーション側での対応は不要です。パフォーマンスへの影響もほとんどありません。
KMSキーの種類と使い分け
EBSボリュームの暗号化に使用できるKMSキーは、主に2種類あります。
| 項目 | AWS管理キー(aws/ebs) | カスタマー管理キー |
|---|---|---|
| 作成 | AWSが自動的に作成 | ユーザーが作成 |
| キーポリシー | 変更不可 | ユーザーが自由に設定 |
| 自動ローテーション | 毎年自動(変更不可) | 有効/無効を選択可能 |
| 削除 | 不可 | スケジュール削除が可能 |
| クロスアカウント共有 | 不可 | 可能 |
| CloudTrailでの監査 | 可能 | 可能 |
| 料金 | 無料 | 月額$1 + API利用料 |
AWS管理キー(aws/ebs) は手軽に使える反面、キーポリシーの変更やクロスアカウントでの共有ができません。一方、カスタマー管理キーはキーポリシーで細かいアクセス制御が可能で、クロスアカウントでのスナップショット共有にも対応しています。
セキュリティ要件としてキーの管理をユーザー側でコントロールする必要がある場合や、クロスアカウントでスナップショットを共有する場合は、カスタマー管理キーを選択します。
スナップショットと暗号化
EBSスナップショットと暗号化には、以下のルールがあります。
- 暗号化されたボリュームから作成されたスナップショットは、自動的に暗号化される
- 暗号化されたスナップショットから復元されたボリュームは、自動的に暗号化される
- 暗号化されていないスナップショットのコピー時に暗号化を有効にできる
- スナップショットのコピー時に、別のKMSキーで再暗号化できる(キーの変更が可能)
暗号化されたボリュームやスナップショットの暗号化を解除することはできません。暗号化されていない状態に戻す場合は、暗号化されていないスナップショットからボリュームを再作成する必要があります。
EBSデフォルト暗号化
EBSデフォルト暗号化は、アカウントのリージョン単位で設定できる機能です。有効にすると、そのリージョンで新規作成されるすべてのEBSボリュームとスナップショットのコピーが自動的に暗号化されます。
- デフォルトの暗号化キーとして、AWS管理キー(
aws/ebs)またはカスタマー管理キーを指定できる - ボリューム作成時に個別に別のキーを指定することも可能(デフォルトキーの上書き)
- 既存の暗号化されていないボリュームには影響しない(新規作成分のみ)
- AMIからインスタンスを起動する際のルートボリュームにも適用される
この機能を有効にすることで、暗号化の設定漏れを防止でき、組織のセキュリティポリシーへの準拠を確実にできます。
暗号化方式の比較
EC2に接続されるEBSボリュームのデータを暗号化するための選択肢として、以下の4つが考えられます。
| 方式 | 適切さ | 理由 |
|---|---|---|
| AWS KMSによるEBSボリューム暗号化 | 最適 | EBSと直接統合されており、ボリューム単位の暗号化・キー管理・監査を一元的に実現できる |
| AWS Systems Manager Parameter Store | 不適切 | パラメータ(設定値・シークレット)の管理サービスであり、EBSボリュームの暗号化機能は提供しない |
| AWS Certificate Manager(ACM) | 不適切 | SSL/TLS証明書の管理サービスであり、保存データの暗号化には対応しない |
| IAMアクセスキー | 不適切 | API認証用の認証情報であり、データの暗号化機能は持たない |
AWS KMSはEBSの暗号化機能と直接統合されているため、EBSボリュームの暗号化においては最も効果的な選択肢です。
Organizations + SCPによる暗号化の強制
AWS Organizationsを使用している場合、サービスコントロールポリシー(SCP) を活用して、暗号化されていないEBSボリュームの作成を組織全体で禁止できます。
以下のようなSCPを適用することで、暗号化が有効でないEBSボリュームの作成を拒否できます。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyUnencryptedEBSVolumes",
"Effect": "Deny",
"Action": "ec2:CreateVolume",
"Resource": "*",
"Condition": {
"Bool": {
"ec2:Encrypted": "false"
}
}
}
]
}この方法とEBSデフォルト暗号化を組み合わせることで、多層的な暗号化の強制が可能になります。
実践
前提条件
- リージョン:
ap-northeast-1(東京) - 以下のリソースが作成済みであること
| リソース種別 | リソース名 | 用途 |
|---|---|---|
| EC2インスタンス | 任意 | EBSボリュームのアタッチ先 |
手順1: KMSカスタマー管理キーの作成
AWSマネジメントコンソールにログインし、リージョンが ap-northeast-1(東京)であることを確認します。
上部の検索バーに KMS と入力し、表示された「Key Management Service」を選択します。
左側ナビゲーションの「カスタマー管理型のキー」を選択し、「キーの作成」をクリックします。キーの作成は 6 ステップのウィザード形式で進めます。
ステップ1: キーを設定
以下を設定します(いずれもデフォルト値のままです)。
- キーのタイプ:
対称 - キーの使用法:
暗号化および復号化
「次へ」をクリックします。


ステップ2: ラベルを追加
以下を入力します。
- エイリアス:
ebs-encryption-key - 説明:
EBSボリューム暗号化用のカスタマー管理キー
「次へ」をクリックします。


ステップ3: キーの管理アクセス許可を定義
キー管理者として、現在使用しているIAMユーザーまたはロールを選択し、「次へ」をクリックします。
ステップ4: キーの使用法アクセス許可を定義
キーユーザーとして、現在使用しているIAMユーザーまたはロールを選択し、「次へ」をクリックします。
ステップ5: キーポリシーを編集
ステップ3・4で選択した内容をもとにキーポリシーが自動生成されます。内容を変更せず、「次へ」をクリックします。
ステップ6: 確認
設定内容を確認し、「完了」をクリックします。
カスタマー管理型のキー一覧に ebs-encryption-key が表示されていることを確認します。


手順2: 暗号化されたEBSボリュームの作成
上部の検索バーに EC2 と入力し、表示された「EC2」を選択します。
左側ナビゲーションの「Elastic Block Store」→「ボリューム」を選択します。
「ボリュームの作成」をクリックします。
以下を設定します。
- 1. サイズ(GiB):
8(デフォルトは100です) - 2. 暗号化: 「このボリュームを暗号化する」にチェックを入れます
- 3. KMS キー: チェックを入れると表示される「KMS キーを選択」から、手順1で作成した
ebs-encryption-keyを選びます
ボリュームタイプ(汎用 SSD (gp3))とアベイラビリティーゾーンはデフォルトのままにします。アベイラビリティーゾーンは EC2 インスタンスと同じ AZ である必要があります(違う AZ のボリュームはアタッチできません)。その他の項目もデフォルトのままにします。


「ボリュームの作成」をクリックします。
ボリュームが作成され、「ボリュームの状態」が「使用可能」になることを確認します。ボリュームの詳細にある「暗号化」セクションで、「暗号化」が 暗号化済み、「KMS キーエイリアス」が ebs-encryption-key になっていることを確認します。


手順3: EC2にアタッチして動作確認
作成したボリュームを選択し、「アクション」→「ボリュームのアタッチ」をクリックします。
以下を設定します。
- 1. インスタンス: 前提条件のEC2インスタンスを選択(同じアベイラビリティーゾーンのインスタンスだけが候補に出ます)
- 2. デバイス名: 「データボリュームに推奨」グループから任意のデバイス名を選択(例:
/dev/sdf)


「ボリュームのアタッチ」をクリックします。
ボリュームの状態が「使用中」に変わったことを確認します。
EC2インスタンスの詳細画面に移動し、「ストレージ」タブを選択します。「ブロックデバイス」セクションに、アタッチしたボリュームが表示されていることを確認します。暗号化のステータスが「暗号化済み」であることも確認できます。


手順4: EBSデフォルト暗号化の有効化
EC2コンソールの左側ナビゲーション下部にある「設定」を選択し、「データ保護とセキュリティ」タブを開きます。「EBS 暗号化」セクションの「管理」をクリックします。
[!NOTE] EBSデフォルト暗号化の設定は、EC2の「設定」→「データ保護とセキュリティ」タブにある「EBS 暗号化」セクションに配置されています。
- 1. 「常に新しい EBS ボリュームを暗号化」の「有効化」にチェックを入れます
- 2. 「デフォルトの暗号化キー」の入力欄(プレースホルダは「暗号化キーを設定する」)に
ebs-encryption-keyと入力し、表示された候補(キーの ARN)を選択します
入力欄を空のままにすると AWS 管理キー
alias/aws/ebsが使われます。ここでは手順1で作成したカスタマー管理キーを指定します。


「EBS 暗号化を更新する」をクリックします。
設定が正常に更新されたことを確認します。


手順5: デフォルト暗号化状態でのボリューム作成確認
デフォルト暗号化が有効な状態で、新しいEBSボリュームを作成して暗号化が自動的に適用されることを確認します。
左側ナビゲーションの「Elastic Block Store」→「ボリューム」を選択し、「ボリュームの作成」をクリックします。
以下を設定します。
- ボリュームタイプ:
汎用 SSD(gp3) - サイズ(GiB):
8 - アベイラビリティーゾーン: 任意のAZ(例:
ap-northeast-1a)
「暗号化」セクションを確認すると、デフォルト暗号化が有効なため「このボリュームを暗号化する」のチェックボックスは表示されず、代わりに「デフォルトでは暗号化に設定」と表示されます。「KMS キー」には手順4で指定した ebs-encryption-key が自動的に選択され、キーの説明・所有者・キー ID・ARN も表示されます。


暗号化設定を変更せず、「ボリュームの作成」をクリックします。
ボリュームが作成され、詳細画面の「暗号化」セクションで「暗号化」が 暗号化済み になっていることを確認します。暗号化を個別に指定しなくても、デフォルト暗号化により自動的に暗号化が適用されたことがわかります。


まとめ
| 項目 | 内容 |
|---|---|
| EBSボリューム暗号化の仕組み | KMSキーからデータキーを生成するエンベロープ暗号化方式。ボリューム内のデータ、インスタンスとの転送データ、スナップショットがすべて暗号化される |
| KMSキーの選択 | AWS管理キー(aws/ebs)は手軽だがカスタマイズ不可。カスタマー管理キーはキーポリシー設定やクロスアカウント共有が可能 |
| EBSデフォルト暗号化 | リージョン単位で有効化でき、新規作成されるすべてのEBSボリュームを自動的に暗号化する。暗号化漏れの防止に有効 |
| 暗号化の強制 | EBSデフォルト暗号化に加え、SCPで暗号化されていないボリューム作成を拒否することで、組織全体で暗号化を強制できる |
| スナップショットの暗号化 | 暗号化ボリュームのスナップショットは自動暗号化。コピー時に別のKMSキーでの再暗号化も可能 |
参照先
- Amazon EBS 暗号化 – Amazon EC2
- デフォルトで暗号化 – Amazon EC2
- Amazon EBS ボリューム – Amazon EC2
- AWS KMS の概念 – AWS Key Management Service
- カスタマーマネージドキーの作成 – AWS Key Management Service
- Amazon EBS スナップショットのコピー – Amazon EC2











