EBSボリューム暗号化とKMS ── すべてのボリュームを確実に暗号化する方法

目次

概要

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ボリューム暗号化の全体像(EC2インスタンス・EBSボリューム・KMSキーの関係と、デフォルト暗号化の仕組みを示す図)
EBSボリューム暗号化の全体像(EC2インスタンス・EBSボリューム・KMSキーの関係と、デフォルト暗号化の仕組みを示す図)

この記事のメリット

  • EBSボリューム暗号化の仕組み(エンベロープ暗号化とデータキーの管理)を正確に理解できる
  • KMSのAWS管理キーとカスタマー管理キーの使い分けを、EBSの文脈で把握できる
  • EBSデフォルト暗号化を活用して、暗号化漏れを防止する運用方法を習得できる
  • KMSカスタマー管理キーを使ったEBSボリュームの暗号化を実際に体験できる
  • SCS試験でEBSボリュームの暗号化方式に関する問いに正確に答えられるようになる

執筆者とキャラクター紹介

執筆者:土肥(とひ)

株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。

土肥

クラウドおさる

クラウドおさる

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

クラウドおさる

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

クラウドおさる

猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。

技術解説

EBSボリューム暗号化の仕組み

EBSボリュームの暗号化では、エンベロープ暗号化が使用されます。具体的には以下の流れでデータが保護されます。

  1. KMSキー(マスターキー)からデータキーが生成される
  2. データキーでEBSボリュームのデータが暗号化される
  3. データキー自体はKMSキーで暗号化され、暗号化されたデータキーがボリュームのメタデータとして保存される

この仕組みにより、KMSキー自体はKMSの外部に出ることなく、大量のデータを効率的に暗号化できます。

EBSボリューム暗号化のエンベロープ暗号化フロー(KMSキー→データキー生成→ボリュームデータ暗号化の流れ)
EBSボリューム暗号化のエンベロープ暗号化フロー(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デフォルト暗号化を組み合わせることで、多層的な暗号化の強制が可能になります。

フリーランス案件
クラウドおさる
クラウドキャリアフリーランス

AWS の実務経験があるなら、単価を上げにいく

AWS に特化したフリーランスエージェントです。以下は取り扱い案件の一例です。設計・SRE・セキュリティ・生成 AI の領域で、専門を掛け合わせるほど単価が上がります。

横にスクロールできます。掲載時点の情報のため、募集が終了している場合があります。条件の近い案件をご紹介しますので、お気軽にご相談ください。

実践

前提条件

  • リージョン: ap-northeast-1(東京)
  • 以下のリソースが作成済みであること
リソース種別リソース名用途
EC2インスタンス任意EBSボリュームのアタッチ先

手順1: KMSカスタマー管理キーの作成

AWSマネジメントコンソールにログインし、リージョンが ap-northeast-1(東京)であることを確認します。

上部の検索バーに KMS と入力し、表示された「Key Management Service」を選択します。

左側ナビゲーションの「カスタマー管理型のキー」を選択し、「キーの作成」をクリックします。キーの作成は 6 ステップのウィザード形式で進めます。

ステップ1: キーを設定

以下を設定します(いずれもデフォルト値のままです)。

  • キーのタイプ: 対称
  • キーの使用法: 暗号化および復号化

「次へ」をクリックします。

KMSキー作成 ステップ1(キーのタイプと使用法の選択画面)
KMSキー作成 ステップ1(キーのタイプと使用法の選択画面)

ステップ2: ラベルを追加

以下を入力します。

  • エイリアス: ebs-encryption-key
  • 説明: EBSボリューム暗号化用のカスタマー管理キー

「次へ」をクリックします。

KMSキー作成 ステップ2(エイリアスと説明の入力画面)
KMSキー作成 ステップ2(エイリアスと説明の入力画面)

ステップ3: キーの管理アクセス許可を定義

キー管理者として、現在使用しているIAMユーザーまたはロールを選択し、「次へ」をクリックします。

ステップ4: キーの使用法アクセス許可を定義

キーユーザーとして、現在使用しているIAMユーザーまたはロールを選択し、「次へ」をクリックします。

ステップ5: キーポリシーを編集

ステップ3・4で選択した内容をもとにキーポリシーが自動生成されます。内容を変更せず、「次へ」をクリックします。

ステップ6: 確認

設定内容を確認し、「完了」をクリックします。

カスタマー管理型のキー一覧に ebs-encryption-key が表示されていることを確認します。

KMSカスタマー管理キー作成完了(ebs-encryption-key が一覧に表示されている状態)
KMSカスタマー管理キー作成完了(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 のボリュームはアタッチできません)。その他の項目もデフォルトのままにします。

EBSボリューム作成画面(暗号化を有効にし、ebs-encryption-key を選択した状態)
EBSボリューム作成画面(暗号化を有効にし、ebs-encryption-key を選択した状態)

「ボリュームの作成」をクリックします。

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

作成されたEBSボリュームの詳細画面(暗号化済みステータスとKMSキー情報が確認できる状態)
作成されたEBSボリュームの詳細画面(暗号化済みステータスとKMSキー情報が確認できる状態)

手順3: EC2にアタッチして動作確認

作成したボリュームを選択し、「アクション」→「ボリュームのアタッチ」をクリックします。

以下を設定します。

  • 1. インスタンス: 前提条件のEC2インスタンスを選択(同じアベイラビリティーゾーンのインスタンスだけが候補に出ます)
  • 2. デバイス名: 「データボリュームに推奨」グループから任意のデバイス名を選択(例: /dev/sdf)
EBSボリュームのアタッチ画面(インスタンスとデバイス名を設定した状態)
EBSボリュームのアタッチ画面(インスタンスとデバイス名を設定した状態)

「ボリュームのアタッチ」をクリックします。

ボリュームの状態が「使用中」に変わったことを確認します。

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

EC2インスタンスのストレージタブ(アタッチされた暗号化済みEBSボリュームが確認できる状態)
EC2インスタンスのストレージタブ(アタッチされた暗号化済みEBSボリュームが確認できる状態)

手順4: EBSデフォルト暗号化の有効化

EC2コンソールの左側ナビゲーション下部にある「設定」を選択し、「データ保護とセキュリティ」タブを開きます。「EBS 暗号化」セクションの「管理」をクリックします。

[!NOTE] EBSデフォルト暗号化の設定は、EC2の「設定」→「データ保護とセキュリティ」タブにある「EBS 暗号化」セクションに配置されています。

  • 1. 「常に新しい EBS ボリュームを暗号化」の「有効化」にチェックを入れます
  • 2. 「デフォルトの暗号化キー」の入力欄(プレースホルダは「暗号化キーを設定する」)に ebs-encryption-key と入力し、表示された候補(キーの ARN)を選択します

入力欄を空のままにすると AWS 管理キー alias/aws/ebs が使われます。ここでは手順1で作成したカスタマー管理キーを指定します。

EBSデフォルト暗号化の設定画面(暗号化を有効にし、ebs-encryption-key をデフォルトキーとして選択した状態)
EBSデフォルト暗号化の設定画面(暗号化を有効にし、ebs-encryption-key をデフォルトキーとして選択した状態)

「EBS 暗号化を更新する」をクリックします。

設定が正常に更新されたことを確認します。

EBSデフォルト暗号化の更新完了(有効化されたステータスとデフォルトキーが確認できる状態)
EBSデフォルト暗号化の更新完了(有効化されたステータスとデフォルトキーが確認できる状態)

手順5: デフォルト暗号化状態でのボリューム作成確認

デフォルト暗号化が有効な状態で、新しいEBSボリュームを作成して暗号化が自動的に適用されることを確認します。

左側ナビゲーションの「Elastic Block Store」→「ボリューム」を選択し、「ボリュームの作成」をクリックします。

以下を設定します。

  • ボリュームタイプ: 汎用 SSD(gp3)
  • サイズ(GiB): 8
  • アベイラビリティーゾーン: 任意のAZ(例: ap-northeast-1a)

「暗号化」セクションを確認すると、デフォルト暗号化が有効なため「このボリュームを暗号化する」のチェックボックスは表示されず、代わりに「デフォルトでは暗号化に設定」と表示されます。「KMS キー」には手順4で指定した ebs-encryption-key が自動的に選択され、キーの説明・所有者・キー ID・ARN も表示されます。

デフォルト暗号化有効時のEBSボリューム作成画面(暗号化が自動的に有効になり、デフォルトキーが選択されている状態)
デフォルト暗号化有効時のEBSボリューム作成画面(暗号化が自動的に有効になり、デフォルトキーが選択されている状態)

暗号化設定を変更せず、「ボリュームの作成」をクリックします。

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

デフォルト暗号化で自動的に暗号化されたEBSボリュームの詳細画面
デフォルト暗号化で自動的に暗号化されたEBSボリュームの詳細画面

まとめ

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

参照先

フリーランス案件
クラウドおさる
クラウドキャリアフリーランス

AWS の実務経験があるなら、単価を上げにいく

AWS に特化したフリーランスエージェントです。以下は取り扱い案件の一例です。設計・SRE・セキュリティ・生成 AI の領域で、専門を掛け合わせるほど単価が上がります。

横にスクロールできます。掲載時点の情報のため、募集が終了している場合があります。条件の近い案件をご紹介しますので、お気軽にご相談ください。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社ジェニュイン(https://genuine-pt.jp)の代表取締役.

2018年〜インフラエンジニアとしてキャリアをスタートし、オンプレミスのネットワーク・サーバ環境で3年半、クラウド環境で4年半の8年間エンジニアとして従事。
2021年に佐藤氏の創業した株式会社Luxyを引き継ぎ、代表に就任。
その後アガルートグループ内の株式会社ジェニュインと合併。
合併後同社代表に就任。

目次