Amazon Elastic Block Store (Amazon EBS) が AWS KMS を使用する方法 - 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 では、デフォルトでオプションの暗号化がサポートされています。AWS アカウント およびリージョン内のすべての新しい EBS ボリュームとスナップショットコピーに対して自動的に暗号化を有効にすることができます。この構成設定は、既存のボリュームやスナップショットには影響しません。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドデフォルトでの暗号化または Windows インスタンス用 Amazon EC2 ユーザーガイドを参照してください。

KMS キーとデータキーを使用する

暗号化 Amazon EBS ボリュームを作成するときは、AWS KMS key を指定します。デフォルトでは、Amazon EBS はアカウント (aws/ebs) の Amazon EBS 用 AWS マネージドキー を使用します。ただし、ユーザーは作成および管理するカスタマーマネージドキーを指定することができます。

カスタマーマネージドキーを使用するには、ユーザーに代わって KMS キーを使用する許可を Amazon EBS に付与する必要があります。必要なアクセス許可のリストについては、Linux インスタンス用 Amazon EC2 ユーザーガイドIAM ユーザーのアクセス許可または Windows インスタンス用 Amazon EC2 ユーザーガイドを参照してください。

重要

Amazon EBS は、対称 KMS キーのみをサポートします。非対称 KMS キーを使用して Amazon EBS ボリュームを暗号化することはできません。KMS キーが対称か非対称かを判断する方法については、非対称 KMS キーの識別 を参照してください。

Amazon EBS では、ボリュームごとに指定した KMS キーで暗号化された一意のデータキーを生成するように AWS KMS に要求します。Amazon EBS は、暗号化されたデータキーをボリュームとともに保存します。次に、ボリュームを Amazon EC2 インスタンスにアタッチすると、Amazon EBS は AWS KMS を呼び出してデータキーを復号します。Amazon EBS は、ハイパーバイザーメモリ内のプレーンテキストデータキーを使用して、ボリュームへのすべてのディスク I/O を暗号化します。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドEBS 暗号化の仕組みまたは Windows インスタンス用 Amazon EC2 ユーザーガイドを参照してください。

Amazon EBS 暗号化コンテキスト

AWS KMS への GenerateDataKeyWithoutPlaintext リクエストおよび Decrypt リクエストでは、Amazon EBS は、リクエスト内のボリュームまたはスナップショットを識別する名前と値のペアを持つ暗号化コンテキストを使用します。暗号化コンテキストの名前は変わりません。

暗号化コンテキスト は、一連のキーと値のペアを含む任意非シークレットデータです。データを暗号化するリクエストに暗号化コンテキストを組み込むと、AWS KMS は暗号化コンテキストを暗号化されたデータに暗号化してバインドします。データを復号化するには、同じ暗号化コンテキストに渡す必要があります。

すべてのボリュームと Amazon EBS CreateSnapshot オペレーションで作成された暗号化されたスナップショットの場合、Amazon EBS はボリューム ID を暗号化コンテキスト値として使用します。CloudTrail ログエントリの requestParameters フィールドでは、暗号化コンテキストは次のようになります。

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

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

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

Amazon EBS 障害の検出

暗号化された EBS ボリュームを作成するか、ボリュームを EC2 インスタンスにアタッチするには、Amazon EBS および Amazon EC2 インフラストラクチャで、EBS ボリュームの暗号化に指定した KMS キーを使用できる必要があります。KMS キーを使用できない場合 (キーステータスEnabled ではない場合など)、ボリュームの作成またはボリュームのアタッチメントは失敗します。

この場合、Amazon EBS はイベントを Amazon CloudWatch Events に送信して、失敗について通知します。CloudWatch Events を使用すると、これらのイベントに応答して自動アクションをトリガーするルールを設定できます。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドAmazon EBS の Amazon CloudWatch Events で、特に次のセクションを参照してください。

これらの障害を修正するには、EBS ボリューム暗号化のために指定した KMS キーが有効になっていることを確認します。これを行うには、最初に KMS キーを表示して、現在のキーステータス (AWS Management Console の Status 列) を特定します。次に、以下のリンクのいずれかで情報を確認します。

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

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