AWS Key Management Service
開発者ガイド

Amazon Elastic Block Store (Amazon EBS) で AWS KMS を使用する方法

このトピックでは、Amazon Elastic Block Store (Amazon EBS) で AWS KMS を使用してボリュームとスナップショットを暗号化する方法について詳しく説明します。Amazon EBS ボリュームを暗号化する基本的な手順については、「Amazon EBS の暗号化」を参照してください。

Amazon EBS 暗号化

暗号化の対象となる Amazon EBS ボリュームを、サポートされている Amazon Elastic Compute Cloud (Amazon EC2) インスタンスタイプにアタッチすると、そのボリュームに保存されるデータ、そのボリュームとのディスク I/O、そのボリュームから作成されたスナップショットは、すべて暗号化されます。暗号化は Amazon EC2 インスタンスをホストするサーバー側で実施されます。

この機能は、すべての Amazon EBS ボリュームタイプでサポートされます。 暗号化されたボリュームには、他のボリュームにアクセスする場合と同じ方法でアクセスできます。暗号化と復号化は透過的に処理され、ユーザー、EC2 インスタンス、アプリケーションからの追加アクションは不要です。暗号化された ボリュームのスナップショットは自動的に暗号化され、暗号化された スナップショットから作成されたボリュームも、自動的に暗号化されます。

EBS ボリュームの暗号化ステータスは、ボリュームの作成時に決定されます。既存のボリュームの暗号化ステータスを変更することはできません。ただし、暗号化されたボリュームと暗号化されていないボリューム間でデータを移行でき、スナップショットのコピー中に新しい暗号化のステータスを適用できます。

暗号化された Amazon EBS ボリュームを作成するには、Amazon EC2 コンソールの Amazon EBS セクションの適切なチェックボックスをオンにします。カスタムのカスタマーマスターキー (CMK) を使用できます。そのためには、暗号化のボックスの下に表示されるリストからいずれかのキーを選択します。カスタム CMK を指定しない場合、Amazon EBS によってお客様のアカウントの Amazon EBS 用の AWS 管理 CMK が使用されます。お客様のアカウントに Amazon EBS 用の AWS 管理 CMK がない場合は、Amazon EBS によってその CMK が作成されます。

以下では、Amazon EBS で CMK を使用する方法を説明します。

  1. 暗号化された EBS ボリュームを作成すると、Amazon EBS は GenerateDataKeyWithoutPlaintext リクエストを AWS KMS に送信し、EBS ボリュームの暗号化のためにユーザーが選択した CMK を指定します。

  2. AWS KMS は新しいデータキーを生成し、指定された CMK で暗号化して、その暗号化されたデータキーを Amazon EBS に送信してボリュームのメタデータとともに保存します。

  3. 暗号化されたボリュームを EC2 インスタンスにアタッチすると、Amazon EC2 は暗号化されたデータキーを Decrypt リクエストとともに AWS KMS に送信します。

  4. AWS KMS は、暗号化されたデータキーを復号化して、その復号化された (プレーンテキスト) データキーを Amazon EC2 に送信します。

  5. Amazon EC2 は、ハイパーバイザーメモリ内のプレーンテキストデータキーを使用して、ディスク I/O を EBS ボリュームに暗号化します。データキーは、EBS ボリュームが EC2 インスタンスにアタッチされる限り、メモリ内で維持されます。

Amazon EBS 暗号化コンテキスト

Amazon EBS は、暗号化コンテキストを送信して、データキーを生成して復号化する AWS KMS API リクエストを行います。Amazon EBS は、すべてのボリューム用と、Amazon EC2 API の CreateSnapshot オペレーションで作成した暗号化スナップショット用に、暗号化コンテキストとしてボリューム ID を使用します。CloudTrail ログエントリの requestParameters フィールドで、暗号化コンテキストは以下のようになります。

"encryptionContext": { "aws:ebs:id": "vol-0cfb133e847d28be9" }

Amazon EBS は、Amazon EC2 API の CopySnapshot オペレーションで作成された暗号化スナップショット用に、暗号化コンテキストとしてスナップ ID を使用します。CloudTrail ログエントリの requestParameters フィールドで、暗号化コンテキストは以下のようになります。

"encryptionContext": { "aws:ebs:id": "snap-069a655b568de654f" }

Amazon EBS エラーの検出

暗号化された EBS ボリュームを作成したり、ボリュームを EC2 インスタンスにアタッチしたりするために、Amazon EBS および Amazon EC2 インフラストラクチャは、EBS ボリュームの暗号化のためにユーザーが指定した CMK を使用する必要があります。CMK が使用できない場合 (有効なキーステ—タスでない場合など)、ボリュ—ムの作成またはボリュームのアタッチは失敗します。この場合、Amazon EBS はイベントを Amazon CloudWatch Events に送信して、ユーザーにエラーを知らせます。CloudWatch イベント では、これらのイベントに応じて自動アクションをトリガーするルールを設定できます。詳細については、「Amazon CloudWatch Events for Amazon EBS」 (Linux インスタンス用 Amazon EC2 ユーザーガイド) を参照してください。特に以下のセクションにご注目ください。

これらのエラーを修正するには、EBS ボリュームの暗号化のために指定した CMK が有効になっていることを確認します。これを行うには、最初に CMK を表示 して現在のキーステータス (AWS マネジメントコンソール の [Status] 列) を確認します。次に、以下のリンクのいずれかで情報を確認します。

AWS CloudFormation を使用した暗号化された Amazon EBS ボリュームの作成

AWS CloudFormation を使用して、暗号化された Amazon EBS ボリュームを作成できます。詳細については、『AWS CloudFormation ユーザーガイド』の「AWS::EC2::Volume」を参照してください。