Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

Amazon EBS Encryption

Amazon EBS 暗号化 は、EBS リソースのために、独自のキー管理インフラストラクチャの構築、保守、および保護を必要としない、簡単な暗号化ソリューションを提供します。暗号化されたボリュームとスナップショットを作成する際に、AWS Key Management Service (AWS KMS) カスタマーマスターキー (CMK) が使用されます。

暗号化オペレーションは EC2 インスタンスをホストするサーバー上で実行され、インスタンスとそれに接続された EBS ストレージ間でのデータの保存と転送中のデータの両方のセキュリティを保証します。

EBS 暗号化の仕組み

EC2 インスタンスのブートボリュームとデータボリュームの両方を暗号化できます。暗号化された EBS ボリュームを作成し、サポートされるインスタンスタイプにアタッチする場合、以下のタイプのデータが暗号化されます。

  • ボリューム内の保存データ

  • ボリュームとインスタンスの間で移動されるすべてのデータ

  • ボリュームから作成されたすべてのスナップショット

  • それらのスナップショットから作成されたすべてのボリューム

EBS は、業界標準の AES-256 アルゴリズムを使用してデータキーでボリュームを暗号化します。データキーは、EBS が CMK で暗号化する前ではなく、暗号化されたデータとともにディスク上に保存されます。データキーはプレーンテキストでディスクに表示されません。同じデータキーは、ボリュームとそのスナップショットから作成された後続のボリュームのスナップショットによって共有されます。詳細については、『AWS Key Management Service Developer Guide』の「データキー」を参照してください。

Amazon EBS は AWS KMS と連携して、次のように EBS ボリュームを暗号化および復号します。

  1. Amazon EBS は CreateGrant リクエストを AWS KMS に送信し、データキーを復号できるようにします。

  2. Amazon EBS は GenerateDataKeyWithoutPlaintext リクエストを AWS KMS に送信し、ボリュームの暗号化に使用する CMK を指定します。

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

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

  5. AWS KMS は、暗号化されたデータキーを復号して、Amazon EBS に復号されたデータキーを送信します。

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

詳細については、AWS Key Management Service Developer Guide の「 Amazon Elastic Block Store (Amazon EBS) で AWS KMS を使用する方法」および「AWS KMSログファイルエントリ」を参照してください。

要件

開始する前に、以下の要件が満たされていることを確認します。

サポートされるボリュームタイプ

暗号化は、すべての EBS ボリュームタイプでサポートされます。暗号化されたボリュームでは、暗号化されていないボリュームと同じ IOPS パフォーマンスが期待できます。遅延に対する影響は最小限に抑えられます。暗号化されていないボリュームにアクセスするのと同じ方法で、暗号化されたボリュームにアクセスできます。暗号化と復号は透過的に処理され、ユーザーやアプリケーションから追加の操作を必要としません。

サポートされるインスタンスタイプ

Amazon EBS 暗号化 は、以下に示すインスタンスタイプで使用できます。これらのインスタンスタイプには、暗号化されたボリュームと暗号化されていないボリュームを同時にアタッチすることができます。

  • 汎用: A1、M3、M4、M5、M5a、M5ad、M5d、M5dn、M5n、T2、T3、および T3a

  • コンピューティングの最適化: C3、C4、C5、C5d、および C5n

  • メモリの最適化: cr1.8xlarge、R3、R4、R5、R5a、R5ad、R5d、R5dn、R5n、u-6tb1.metalu-9tb1.metalu-12tb1.metalu-18tb1.metalu-24tb1.metal、X1、X1e、および z1d

  • ストレージの最適化: D2、h1.2xlargeh1.4xlarge、I2、I3、および I3en

  • 高速コンピューティング: F1、G2、G3、G4、P2、および P3

IAM ユーザーのアクセス権限

EBS 暗号化のデフォルトキーとして CMK を設定すると、デフォルトのキーポリシーにより、必要な KMS アクションにアクセスできるすべての IAM ユーザーがこのキーを使用して EBS リソースを暗号化または復号できるようになります。EBS 暗号化を使用するには、次のアクションを呼び出すアクセス権限を IAM ユーザーに付与する必要があります。

  • kms:CreateGrant

  • kms:Decrypt

  • kms:DescribeKey

  • kms:GenerateDataKeyWithoutPlainText

  • kms:ReEncrypt

最小権限のプリンシパルに従うには、kms:CreateGrant へのフルアクセスを許可しないでください。代わりに、次の例に示すように、AWS のサービスによってユーザーに代わって許可が作成された場合にのみ、CMK に許可を作成できるようにします。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:CreateGrant", "Resource": [ "arn:aws:kms:us-east-2:123456789012:key/abcd1234-a123-456d-a12b-a123b4cd56ef" ], "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ] }

詳細については、AWS Key Management Service Developer Guide の「デフォルトキーポリシー」を参照してください。

EBS 暗号化のデフォルトキー

Amazon EBS は、AWS リソースを保存する各リージョンに一意の AWS 管理の CMK を自動的に作成します。このキーにはエイリアス alias/aws/ebs があります。デフォルトでは、Amazon EBS は暗号化にこのキーを使用します。または、作成したカスタマー管理の CMK を EBS 暗号化のデフォルトキーとして指定できます。独自の CMK を使用することにより、キーの作成、更新、無効化ができるなど、より高い柔軟性が得られます。

リージョンの EBS 暗号化用にデフォルトキーを設定するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションバーから、使用するリージョンを選択します。

  3. [Account Attributes (アカウント属性)]、[Settings (設定)] の順に選択します。

  4. [Change the default key (デフォルトキーの変更)] を選択してから、利用可能なキーを選択します。

  5. [Update (更新)] を選択します。

デフォルトでの暗号化

作成した新しい EBS ボリュームとスナップショットコピーの暗号化を強制するように AWS アカウントを設定できます。たとえば、Amazon EBS は、インスタンスの起動時に作成された EBS ボリュームと、暗号化されていないスナップショットからコピーしたスナップショットを暗号化します。暗号化されていない EBS リソースから暗号化された EBS リソースへの移行の例については、「暗号化されていないリソースの暗号化」を参照してください。

デフォルトでは、暗号化は既存の EBS ボリュームまたはスナップショットには影響しません。

考慮事項

  • デフォルトでの暗号化はリージョン固有の設定です。リージョンに対して有効にした場合、そのリージョン内の個々のボリュームまたはスナップショットに対して無効にすることはできません。

  • デフォルトで暗号化を有効にすると、インスタンスタイプが EBS 暗号化をサポートしている場合にのみ、インスタンスを起動できます。詳細については、「サポートされるインスタンスタイプ」を参照してください。

  • AWS Server Migration Service (SMS) を使用してサーバーを移行する場合は、デフォルトでの暗号化を有効にしないでください。デフォルトでの暗号化がすでに有効になっていて、デルタレプリケーションエラーが発生している場合は、デフォルトでの暗号化を無効にしてください。代わりに、レプリケーションジョブの作成時に AMI 暗号化を有効にします。

リージョンの暗号化をデフォルトで有効にするには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションバーから、使用するリージョンを選択します。

  3. ナビゲーションペインの [EC2 Dashboard (EC2 ダッシュボード)] を選択します。

  4. ページの右上で、 [Account Attributes (アカウントの属性)]、[Settings (設定)] の順に選択します。

  5. [EBS Storage (EBS ストレージ)] で、[Always encrypt new EBS volumes (常に新しい EBS ボリュームを暗号化する)] を選択します。

  6. [Update (更新)] を選択します。

既存のスナップショットまたは暗号化されたボリュームに関連付けられている CMK を変更することはできません。ただし、スナップショットコピーオペレーション中に別の CMK を関連付けて、コピーしたスナップショットを新しい CMK で暗号化できます。

EBS リソースの暗号化

EBS ボリュームを暗号化するには、デフォルトでの暗号化を使用するか、暗号化するボリュームを作成するときに暗号化を有効にします。

ボリュームを暗号化する場合、ボリュームの暗号化に使用する CMK を指定できます。CMK が指定されていない場合、暗号化に使用されるキーはソーススナップショットの暗号化状態とその所有権によって異なります。詳細については、「暗号化結果の表」を参照してください。

既存のスナップショットまたはボリュームに関連付けられている CMK を変更することはできません。ただし、スナップショットコピーオペレーション中に別の CMK を関連付けて、コピーしたスナップショットを新しい CMK で暗号化できます。

暗号化を使用して新しい空のボリュームを作成する

新しい空の EBS ボリュームを作成するときは、特定のボリューム作成オペレーションで暗号化を有効にすることで暗号化できます。デフォルトで EBS 暗号化を有効にした場合、ボリュームは自動的に暗号化されます。デフォルトでは、ボリュームは EBS 暗号化のデフォルトキーに暗号化されます。または、特定のボリューム作成オペレーションに別の CMK を指定することもできます。ボリュームは最初に使用可能になった時点で暗号化されているため、データは常に保護されています。詳細な手順については、「Amazon EBS ボリュームの作成」を参照してください。

デフォルトでは、ボリュームの作成時に選択した CMK が、ボリュームから作成したスナップショットとそれらの暗号化されたスナップショットから復元したボリュームを暗号化します。暗号化されたボリュームまたはスナップショットから暗号化を削除することはできません。つまり、暗号化されたスナップショット、または暗号化されたスナップショットのコピーから復元されたボリュームは、常に暗号化されます。

暗号化されたボリュームのパブリックスナップショットはサポートされていませんが、暗号化されたスナップショットを特定のアカウントと共有できます。詳細な手順については、「Amazon EBS スナップショットの共有」を参照してください。

暗号化されていないリソースの暗号化

暗号化されていない既存のボリュームまたはスナップショットを直接暗号化する方法はありませんが、ボリュームまたはスナップショットを作成することで暗号化できます。暗号化をデフォルトで有効にした場合、Amazon EBS は EBS 暗号化のデフォルトキーを使用して、作成された新しいボリュームまたはスナップショットを暗号化します。デフォルトで暗号化を有効にしていない場合でも、個々のボリュームまたはスナップショットを作成するときに暗号化を有効にすることができます。暗号化をデフォルトで有効にするか、個別の作成オペレーションで有効にするかにかかわらず、EBS 暗号化のデフォルトキーを上書きし、カスタマー管理の CMK を選択できます。詳細については、「Amazon EBS ボリュームの作成」および「Amazon EBS スナップショットのコピー」を参照してください。

スナップショットコピーをカスタマー管理の CMK に暗号化するには、暗号化されていないスナップショットをコピーする (デフォルトでの暗号化が有効になっていない場合) に示すように、暗号化を有効にし、キーを指定する必要があります

EBS-Backed AMI からインスタンスを起動するときに新しい暗号化状態を適用することもできます。これは、EBS-backed AMI に、説明の通りに暗号化できる EBS ボリュームのスナップショットが含まれているためです。詳細については、「EBS-Backed AMI での暗号化の利用」を参照してください。

暗号化シナリオ

暗号化された EBS リソースを作成すると、ボリューム作成パラメータまたは AMI やインスタンスのブロックデバイスマッピングで別のカスタマー管理の CMK を指定しない限り、アカウントの EBS 暗号化のデフォルトキーによって暗号化されます。詳細については、「EBS 暗号化のデフォルトキー」を参照してください。

次の例では、ボリュームとスナップショットの暗号化状態を管理する方法を示します。暗号化のケースの完全なリストについては、「暗号化の結果の表」を参照してください。

暗号化されていないボリュームを復元する (デフォルトでの暗号化が有効になっていない場合)

デフォルトでの暗号化を有効にしないと、暗号化されていないスナップショットから復元されたボリュームは、デフォルトで暗号化されません。ただし、Encrypted パラメータと、必要に応じて KmsKeyId パラメータを設定して、結果のボリュームを暗号化することができます。以下の図は、そのプロセスを示したものです。

KmsKeyId パラメータを省略すると、結果のボリュームは EBS 暗号化のデフォルトキーを使用して暗号化されます。ボリュームを別の CMK に暗号化するには、キー ID を指定する必要があります。

詳細については、「スナップショットからの Amazon EBS ボリュームの復元」を参照してください。

暗号化されていないボリュームを復元する (デフォルトでの暗号化が有効になっている場合)

デフォルトでの暗号化を有効にした場合、暗号化されていないスナップショットから復元されたボリュームには暗号化が必須であり、デフォルトの CMK を使用するために暗号化パラメータは必要ありません。以下の図に、このデフォルトの簡単なケースを示しています。

復元したボリュームをカスタマー管理の CMK に暗号化する場合は、暗号化されていないボリュームを復元する (デフォルトでの暗号化が有効になっていない場合) に示すように EncryptedKmsKeyId の両方のパラメータを指定する必要があります。

暗号化されていないスナップショットをコピーする (デフォルトでの暗号化が有効になっていない場合)

デフォルトでの暗号化を有効にしないと、暗号化されていないスナップショットのコピーは、デフォルトで暗号化されません。ただし、Encrypted パラメータと、必要に応じて KmsKeyId パラメータを設定して、結果のスナップショットを暗号化することができます。KmsKeyId を省略すると、結果のスナップショットはデフォルトの CMK に暗号化されます。ボリュームを別の CMK に暗号化するには、キー ID を指定する必要があります。

以下の図は、そのプロセスを示したものです。


                    暗号化されていないスナップショットから暗号化されたスナップショットを作成します。

注記

スナップショットを新しい CMK にコピーし暗号化する場合、完全な (増分なし) コピーが常に作成されるため、遅延がストレージコストがさらに生じる原因になります。

EBS ボリュームを暗号化するには、暗号化されていないスナップショットを暗号化されたスナップショットにコピーし、その暗号化されたスナップショットからボリュームを作成することができます。詳細については、「Amazon EBS スナップショットのコピー」を参照してください。

暗号化されていないスナップショットをコピーする (デフォルトでの暗号化が有効になっている場合)

デフォルトでの暗号化を有効にした場合、暗号化されていないスナップショットのコピーには暗号化が必須であり、デフォルトの CMK を使用する場合は、暗号化パラメータは必要ありません。このデフォルトのケースを次の図に示します。


                    暗号化されていないスナップショットから暗号化されたスナップショットを作成します。

注記

スナップショットを新しい CMK にコピーし暗号化する場合、完全な (増分なし) コピーが常に作成されるため、遅延がストレージコストがさらに生じる原因になります。

暗号化ボリュームを再暗号化する

CreateVolume アクションが暗号化されたスナップショットに対して実行されるときは、別の CMK でそれを再暗号化することができます。以下の図は、そのプロセスを示したものです。この例では、CMK A と CMK B の 2 つの CMK を所有しています。ソーススナップショットは CMK A によって暗号化されています。ボリュームの作成中に、パラメータとして指定された CMK B のキー ID を使用して、ソースデータは自動的に復号され、次に CMK B によって再暗号化されます。


                    暗号化されたスナップショットをコピーして、そのコピーを新しいキーに暗号化します。

注記

スナップショットを新しい CMK にコピーし暗号化する場合、完全な (増分なし) コピーが常に作成されるため、遅延がストレージコストがさらに生じる原因になります。

詳細については、「スナップショットからの Amazon EBS ボリュームの復元」を参照してください。

暗号化スナップショットを再暗号化する

コピーする間にスナップショットを暗号化することが可能なことで、所有するすでに暗号化されたスナップショットに新しい CMK を適用することが可能となります。結果として作成されたコピーから復元されたボリュームには、新しい CMK を使用してのみアクセスすることができます。以下の図は、そのプロセスを示したものです。この例では、CMK A と CMK B の 2 つの CMK を所有しています。ソーススナップショットは CMK A によって暗号化されています。コピー中に、パラメータとして指定された CMK B のキー ID を使用して、ソースデータは自動的に CMK B によって再暗号化されます。


                    暗号化されたスナップショットをコピーして、そのコピーを新しいキーに暗号化します。

注記

スナップショットを新しい CMK にコピーし暗号化する場合、完全な (増分なし) コピーが常に作成されるため、遅延がストレージコストがさらに生じる原因になります。

関連するシナリオでは、共有されているスナップショットのコピーに新しい暗号化パラメータを適用するよう選択できます。デフォルトでは、コピーは、スナップショットの所有者によって共有された CMK を使用して暗号化されます。ただし、管理する別の CMK を使用して、共有スナップショットのコピーを作成することをお勧めします。これにより、元の CMK が侵害された場合や、所有者が何らかの理由で CMK を無効にした場合に、ボリュームへのアクセスが保護されます。詳細については、「暗号化とスナップショットのコピー」を参照してください。

暗号化されたボリュームと暗号化されていないボリュームとの間でデータを移行する

暗号化されているボリュームと暗号化されていないボリュームの両方に対してアクセス許可がある場合は、これらの間で自由にデータを転送できます。EC2 では、暗号化と復号化のオペレーションが透過的に実行されます。

たとえば、rsync コマンドを使用してデータをコピーします。次のコマンドでは、移行元のデータは /mnt/source にあり、移行先のボリュームは /mnt/destination にマウントされています。

[ec2-user ~]$ sudo rsync -avh --progress /mnt/source/ /mnt/destination/

暗号化の結果

次の表では、考えられる設定の組み合わせごとの暗号化の結果について説明しています。

暗号化は可能ですか? 暗号化はデフォルトで有効になっていますか? ボリュームのソース デフォルト (CMK が指定されていない) カスタム (CMK が指定されている)
いいえ いいえ 新しい (空の) ボリューム 暗号化されていない 該当なし
いいえ いいえ 所有する暗号化されていないスナップショット 暗号化されていない
いいえ いいえ 所有する暗号化されたスナップショット 同じキーで暗号化されている
いいえ いいえ 自分と共有されている暗号化されていないスナップショット 暗号化されていない
いいえ いいえ 自分と共有されている暗号化されたスナップショット デフォルト CMK* で暗号化されている
はい いいえ 新しいボリューム デフォルト CMK で暗号化されている 指定された CMK** で暗号化されている
はい いいえ 所有する暗号化されていないスナップショット デフォルト CMK で暗号化されている
はい いいえ 所有する暗号化されたスナップショット 同じキーで暗号化されている
はい いいえ 自分と共有されている暗号化されていないスナップショット デフォルト CMK で暗号化されている
はい いいえ 自分と共有されている暗号化されたスナップショット デフォルト CMK で暗号化されている
いいえ はい 新しい (空の) ボリューム デフォルト CMK で暗号化されている
いいえ はい 所有する暗号化されていないスナップショット デフォルト CMK で暗号化されている 該当なし
いいえ はい 所有する暗号化されたスナップショット 同じキーで暗号化されている
いいえ はい 自分と共有されている暗号化されていないスナップショット デフォルト CMK で暗号化されている
いいえ はい 自分と共有されている暗号化されたスナップショット デフォルト CMK で暗号化されている
はい はい 新しいボリューム デフォルト CMK で暗号化されている 指定された CMK で暗号化されている
はい はい 所有する暗号化されていないスナップショット デフォルト CMK で暗号化されている
はい はい 所有する暗号化されたスナップショット 同じキーで暗号化されている
はい はい 自分と共有されている暗号化されていないスナップショット デフォルト CMK で暗号化されている
はい はい 自分と共有されている暗号化されたスナップショット デフォルト CMK で暗号化されている

* これは、AWS アカウントおよびリージョンでの EBS 暗号化に使用されるデフォルトの CMK です。これはデフォルトでは、EBS 用の一意の AWS 管理の CMK です。または、カスタマー管理の CMK を指定できます。詳細については、「EBS 暗号化のデフォルトキー」を参照してください。

** これは、起動時にボリュームに対して指定されたカスタマー管理の CMK です。この CMK は、AWS アカウントおよびリージョンのデフォルトの CMK の代わりに使用されます。

API と CLI を使用した暗号化のデフォルトの設定

以下の API アクションおよび CLI コマンドを使用して、デフォルトで暗号化およびデフォルトのカスタマーマスターキー (CMK) を管理できます。

API アクション CLI コマンド 説明

DisableEbsEncryptionByDefault

disable-ebs-encryption-by-default

デフォルトでの暗号化を無効にします。

EnableEbsEncryptionByDefault

enable-ebs-encryption-by-default

デフォルトでの暗号化を有効にします。

GetEbsDefaultKmsKeyId

get-ebs-default-kms-key-id

デフォルトの CMK について説明します。

GetEbsEncryptionByDefault

get-ebs-encryption-by-default

デフォルトの暗号化が有効かどうかを示します。

ModifyEbsDefaultKmsKeyId

modify-ebs-default-kms-key-id

EBS ボリュームの暗号化に使用されるデフォルトの CMK を変更します。

ResetEbsDefaultKmsKeyId

reset-ebs-default-kms-key-id

AWS 管理のデフォルト CMK を EBS ボリュームの暗号化に使用されるデフォルト CMK としてリセットします。