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

Amazon EBS Encryption

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

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

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

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

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

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

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

EC2 インスタンスのブートボリュームとデータボリュームの両方を暗号化できます。

暗号化は、すべての EBS ボリュームタイプ (汎用 SSD [gp2]、プロビジョンド IOPS SSD [io1]、スループット最適化 HDD [st1]、Cold HDD [sc1]、マグネティック [standard]) でサポートされます。暗号化されたボリュームでは、暗号化されていないボリュームと同じ IOPS パフォーマンスが期待できます。遅延に対する影響は最小限に抑えられます。暗号化されていないボリュームにアクセスするのと同じ方法で、暗号化されたボリュームにアクセスできます。暗号化と復号化は透過的に処理され、ユーザーやアプリケーションから追加の操作を必要としません。

Amazon EBS 暗号化 は、特定のインスタンスタイプにのみ利用できます。サポートされるインスタンスタイプには、暗号化されたボリュームと暗号化されないボリュームのどちらもアタッチすることができます。詳細については、「サポートされるインスタンスタイプ」を参照してください。

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

デフォルトでの暗号化

EBS ボリュームとスナップショットの暗号化を強制するように AWS アカウントを設定できます。デフォルトで暗号化を有効にすると、2 つの効果があります。

  • AWS は起動時に新しい EBS ボリュームを暗号化します。

  • AWS は、暗号化されていないスナップショットの新しいコピーを暗号化します。

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

EC2 設定または起動時にカスタマー管理の CMK を指定しない限り、新しく作成された EBS リソースはアカウントのデフォルトのカスタマーマスターキー (CMK) によって暗号化されます。詳細については、「暗号化キーの管理」を参照してください。

デフォルトでは暗号化は得デフォルトの EBS ボリュームまたはスナップショットには影響しませんが、暗号化されていないスナップショットをコピーするか、暗号化されていないボリュームを復元すると、作成されるスナップショットまたはボリュームは暗号化されます。暗号化されていない EBS リソースから暗号化された EBS リソースへの移行の例については、「暗号化されていないリソースの暗号化」を参照してください。

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

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

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

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

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

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

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

暗号化キーの管理

Amazon EBS は、AWS リソースを保存する各リージョンに、エイリアス alias/aws/ebs を使用して一意の AWS マネージド CMK を自動的に作成します。デフォルトでは、Amazon EBS は暗号化にこのキーを使用します。あるいは、作成したカスタマー管理の CMK を暗号化のデフォルトキーとして指定できます。

注記

独自の CMK を作成すると、アクセスコントロールを定義するためのキーの作成、ローテーション、無効化などの柔軟性が得られます。

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

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

前提条件

CMK を EBS 暗号化のデフォルト値として設定するときは、インスタンスの起動、ボリュームの作成、スナップショットのコピー、およびイメージのコピーに CMK を使用できるようにする KMS キーポリシーへのアクセスもユーザーに許可する必要があります。これらのアクセス許可には、GenerateDataKeyWithoutPlainTextReencrypt*CreateGrantDescribeKey、および Decrypt が含まれます。詳細については、「AWS KMS の認証とアクセスコントロール」と「Amazon Elastic Block Store (Amazon EBS) が AWS KMS を使用する方法」を参照してください。

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

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

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

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

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

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

キー管理とキーアクセス許可の詳細については、『AWS Key Management Service Developer Guide』の「Amazon Elastic Block Store (Amazon EBS) で AWS KMS を使用する方法」と「AWS KMS に対する認証とアクセスコントロール」を参照してください。

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 としてリセットします。

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

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

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

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

  • メモリ最適化: cr1.8xlarge、R3、R4、R5、R5a、R5ad、R5d、X1、X1e、および z1d

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

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

  • ベアメタル: c5.metal, i3.metal, m5.metal, m5d.metal, r5.metal, r5d.metal, u-6tb1.metal, u-9tb1.metal, u-12tb1.metal, and z1d.metal

EBS ボリュームでの暗号化パラメータの使用

Encrypted パラメータを true に設定して、EBS ボリュームに暗号化を適用します。(デフォルトで暗号化が有効になっている場合、Encrypted パラメータはオプションです)。

オプションで、KmsKeyId を使用してボリュームの暗号化に使用するカスタムキーを指定できます。(デフォルトで暗号化が有効になっている場合でも、Encrypted パラメータも true に設定する必要があります)。 KmsKeyId が指定されていない場合、暗号化に使用されるキーはソーススナップショットの暗号化状態とその所有権によって異なります。

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

暗号化の結果

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

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

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

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

新しい空の EBS ボリュームを作成するときは、Encrypted フラグを設定して、デフォルトの CMK に暗号化できます。ボリュームをカスタマー管理の CMK に暗号化するには、KmsKeyId にも値を指定する必要があります。ボリュームは最初に使用可能になったときから暗号化されているため、データは常に保護されています。詳細な手順については、「Amazon EBS ボリュームの作成」を参照してください。

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

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

暗号化されていない既存のボリュームまたはスナップショットを暗号化する直接的な方法はありませんが、CreateVolume または CopySnapshot アクションを使用して既存の暗号化されていないデータを暗号化することができます。デフォルトで暗号化を有効にしている場合、AWS はデフォルトの CMK を使用して、作成された新しいボリュームまたはスナップショットの暗号化を強制します。デフォルトで暗号化を有効にしていなくても、CreateVolume または CopySnapshot で暗号化パラメータを指定してリソースを個別に暗号化できます。どちらの場合でも、暗号化のデフォルトを上書きしてカスタマー管理の CMK を適用できます。表示されているすべてのアクションは、EC2 コンソール、AWS CLI、または AWS APIを使用して実行できます。詳細については、「Amazon EBS ボリュームの作成」および「Amazon EBS スナップショットのコピー」を参照してください。

次の例は、これらのアクションと暗号化パラメータを使用して、ボリュームとスナップショットの暗号化を管理する方法を示しています。暗号化のケースの完全なリストについては、「暗号化の結果の表」を参照してください。

暗号化されていないボリュームを復元する (デフォルトでは暗号化は有効になっていません)

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

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

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

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

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

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

暗号化されていないボリュームを復元する (デフォルトでは暗号化は有効になっていません)

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


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

注記

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

KmsKeyId パラメータを省略すると、結果のスナップショットはデフォルトの CMK に暗号化されます。ボリュームを別の CMK に暗号化するには、キー ID を入力する必要があります。

スナップショットのコピーを使用してボリュームのデータを暗号化するには

  1. 暗号化パラメータを適用してスナップショットをコピーします。KmsKeyId パラメータを省略すると、結果のスナップショットはデフォルトの CMK に暗号化されます。スナップショットを別の CMK に暗号化するためのキー ID をオプションで含めることができます。

  2. 暗号化されたスナップショットを新しいボリュームに復元することもできます。これも暗号化されます。

詳細については、「Amazon EBS スナップショットのコピー」を参照してください。

暗号化されていないスナップショットを復元する (デフォルトでは暗号化は有効になっています)

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


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

注記

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

復元したスナップショットのコピーをカスタマー管理の CMK に暗号化するには、 に示すように EncryptedKmsKeyId の両方のパラメータを指定する必要があります。

新しい CMK へのリソースの再暗号化

次の例では、暗号化された EBS リソースを別の 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 を無効にした場合に、ボリュームへのアクセスが保護されます。

次の手順では、所有するカスタマー管理の CMK に共有スナップショットのコピーを作成する方法を示します。カスタマー管理の CMK を以前に作成していること、およびデフォルトの CMK によって暗号化されたスナップショットがあることを前提としています。詳細については、「AWS Key Management Service Developer Guide」を参照してください。

コンソールを使用して、新しいカスタマー管理の CMK に所有するスナップショットをコピーするには

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

  2. [Snapshots (スナップショット)] ページで、スナップショットを選択してから、[Actions (アクション)]、[Copy (コピー)] の順に選択します。

  3. [Copy Snapshot (スナップショットのコピー)] ウィンドウで、[Master Key (マスターキー)] フィールドにカスタマー管理の CMK の完全な ARN (arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef の形式) を指定するか、メニューから選択します。[Copy (コピー)] を選択します。

スナップショットの結果として作成されるコピー (およびそこから復元されたすべてのボリューム) は、カスタマー管理 CMK によって暗号化されます。

次の手順では、所有する新しい CMK に共有された暗号化済みスナップショットのコピーを作成する方法を示します。この作業を行うには、共有された暗号化スナップショットと、元々暗号化されていた CMK の両方にアクセス権が必要です。

コンソールを使用して、所有する CMK に共有スナップショットをコピーするには

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

  2. [Snapshots (スナップショット)] ページで共有された暗号化スナップショットを選択し、[Actions (アクション)]、[Copy(コピー)] の順に選択します。

  3. [Copy Snapshot (スナップショットのコピー)] ウィンドウで、[Master Key (マスターキー)] フィールドに所有している CMK の完全な ARN (arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef の形式) を指定するか、メニューから選択します。[Copy (コピー)] を選択します。

スナップショットの結果として作成されるコピー (およびそこから復元されたすべてのボリューム) は、指定した CMK によって暗号化されます。共有された元のスナップショット、暗号化ステータス、共有 CMK に変更を加えても、コピーには影響ありません。

詳細については、「Amazon EBS スナップショットのコピー」を参照してください。

注記

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

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

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

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

  1. Amazon EBS ボリュームの作成」の手順に従って、移行先のボリュームを作成します (必要に応じて、暗号化されたボリュームまたは暗号化されていないボリュームのいずれかになります)。

  2. 移行するデータをホストしているインスタンスに、移行先のボリュームをアタッチします。詳細については、「インスタンスへの Amazon EBS ボリュームのアタッチ」を参照してください。

  3. Linux で Amazon EBS ボリュームを使用できるようにする」の手順に従って、移行先のボリュームを利用可能にします。Linux インスタンスでは、/mnt/destination にマウントポイントを作成し、移行先のボリュームをマウントできます。

  4. 移行元のディレクトリから移行先のボリュームにデータをコピーします。これには、一括コピーユーティリティを使用する方法が最も便利な場合があります。

    Linux

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

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

    Windows

    コマンドプロンプトから、robocopy コマンドを使用して、移行元から移行先のボリュームにデータをコピーします。この例では、移行元のデータは D:\ にあり、移行先のボリュームは E:\ にマウントされています。

    PS C:\> robocopy D:\<sourcefolder> E:\<destinationfolder> /e /copyall /eta

    注記

    非表示のフォルダで問題が発生することを回避するために、ボリューム全体をコピーするのではなく明示的にフォルダを指定することをお勧めします。

Amazon EBS 暗号化と CloudWatch イベント

Amazon EBS では、特定の暗号化関連のシナリオに対して Amazon CloudWatch Events がサポートされています。詳細については、「Amazon CloudWatch Events for Amazon EBS」を参照してください。