

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS サービスでの AWS KMS 暗号化の使用
<a name="service-integration"></a>

を使用すると AWS Key Management Service、他の AWS サービスのデータを保護するための暗号化キーを提供できます。 AWS サービスとの AWS KMS 暗号化の使用とは、他の AWS KMS AWS サービスと統合して、保管中または転送中のデータを暗号化および復号化するプロセスを指します。開発者、システム管理者、セキュリティプロフェッショナルは、 AWS サービスを通じて保存または送信される機密データの保護、規制コンプライアンス要件を満たす、または暗号化のベストプラクティスを実装するために、このトピックに関心を持つかもしれません。一般的なユースケースには、Amazon EBS ボリューム、Amazon S3 バケット、および Amazon RDS データベースの暗号化があります。以下のセクションでは、特定の AWS サービスの AWS KMS 暗号化キーを設定および管理し、 AWS 環境全体でデータの機密性と整合性を確保する手順について説明します。 と統合された AWS サービスの完全なリストについては AWS KMS、[AWS 「サービス統合](https://aws.amazon.com/kms/features/#AWS_Service_Integration)」を参照してください。

以下のトピックでは AWS KMS、サポートする KMS キー、データキーの管理方法、必要なアクセス許可、アカウント内の各サービスによる KMS キーの使用を追跡する方法など、特定のサービスがどのように を使用するかについて詳しく説明します。

**重要**  
[AWS と統合された サービスは、 AWS KMS](https://aws.amazon.com/kms/features/#AWS_Service_Integration)対称暗号化 KMS キーのみを使用してデータを暗号化します。これらのサービスは、非対称 KMS キーを使用する暗号化をサポートしません。KMS キーが対称か非対称かを判断する方法については、[さまざまなキータイプの特定](identify-key-types.md) を参照してください。

**Topics**
+ [Amazon Elastic Block Store (Amazon EBS)](services-ebs.md)
+ [Amazon EMR](services-emr.md)
+ [Amazon Redshift](services-redshift.md)

# Amazon Elastic Block Store (Amazon EBS) が を使用する方法 AWS KMS
<a name="services-ebs"></a>

このトピックでは、[Amazon Elastic Block Store (Amazon EBS) ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)が を使用してボリュームとスナップショット AWS KMS を暗号化する方法について詳しく説明します。Amazon EBS ボリュームの暗号化に関する基本的な手順については、「[Amazon EBS 暗号化](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)」を参照してください。

**Topics**
+ [Amazon EBS 暗号化](#ebs-encrypt)
+ [KMS キーとデータキーを使用する](#ebs-cmk)
+ [Amazon EBS 暗号化コンテキスト](#ebs-encryption-context)
+ [Amazon EBS 障害の検出](#ebs-failures)
+ [AWS CloudFormation を使用して暗号化された Amazon EBS ボリュームを作成する](#ebs-encryption-using-cloudformation)

## Amazon EBS 暗号化
<a name="ebs-encrypt"></a>

暗号化された Amazon EBS ボリューム [をサポートされている Amazon Elastic Compute Cloud（Amazon EC2）インスタンスタイプ](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption-requirements.html#ebs-encryption_supported_instances) にアタッチすると、ボリュームに保存されたデータ、ディスク I/O、ボリュームから作成されたスナップショットはすべて暗号化されます。暗号化は、Amazon EC2 インスタンスをホストするサーバーで行われます。

この機能は、すべての [Amazon EBS ボリュームタイプ](https://docs.aws.amazon.com/ebs-encryption-requirements.html#ebs-encryption-volume-types)でサポートされています。暗号化されたボリュームには、他のボリュームにアクセスする場合と同じ方法でアクセスできます。暗号化と復号化は透過的に処理され、ユーザー、EC2 インスタンス、アプリケーションからの追加アクションは不要です。暗号化されたボリュームのスナップショットは自動的に暗号化され、暗号化されたスナップショットから作成されたボリュームも、自動的に暗号化されます。

EBS ボリュームの暗号化ステータスは、ボリュームの作成時に決定されます。既存のボリュームの暗号化ステータスを変更することはできません。ただし、暗号化されたボリュームと暗号化されていないボリューム間で [データを移行](https://docs.aws.amazon.com//ebs/latest/userguide/how-ebs-encryption-works.html) し、スナップショットのコピー中に新しい暗号化ステータスを適用できます。

Amazon EBS では、デフォルトでオプションの暗号化がサポートされています。 AWS アカウント および リージョンのすべての新しい EBS ボリュームとスナップショットコピーで、暗号化を自動的に有効にできます。この構成設定は、既存のボリュームやスナップショットには影響しません。詳細については、「Amazon EBS ユーザーガイド」の「[Amazon EBS encryption](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default)」を参照してください。

## KMS キーとデータキーを使用する
<a name="ebs-cmk"></a>

[暗号化 Amazon EBS ボリュームを作成する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-volume.html)ときは、 AWS KMS keyを指定します。デフォルトでは、Amazon EBS はアカウント (`aws/ebs`) の Amazon EBS 用 [AWS マネージドキー](concepts.md#aws-managed-key) を使用します。ただし、ユーザーは作成および管理する[カスタマーマネージドキー](concepts.md#customer-mgn-key)を指定することができます。

カスタマーマネージドキーを使用するには、ユーザーに代わって KMS キーを使用する許可を Amazon EBS に付与する必要があります。詳細については、「Amazon EBS ユーザーガイド」の「[How Amazon EBS encryption works](https://docs.aws.amazon.com//ebs/latest/userguide/how-ebs-encryption-works.html)」を参照してください。

**重要**  
Amazon EBS は、[対称 KMS キー](symm-asymm-choose-key-spec.md#symmetric-cmks)のみをサポートします。[非対称 KMS キー](symmetric-asymmetric.md)を使用して Amazon EBS ボリュームを暗号化することはできません。KMS キーが対称か非対称かを判断する方法については、[さまざまなキータイプの特定](identify-key-types.md) を参照してください。

ボリュームごとに、Amazon EBS は指定した KMS キーで暗号化された一意のデータキーを生成する AWS KMS ように に求めます。Amazon EBS は、暗号化されたデータキーをボリュームとともに保存します。次に、ボリュームを Amazon EC2 インスタンスにアタッチすると、Amazon EBS は AWS KMS を呼び出してデータキーを復号します。Amazon EBS は、ハイパーバイザーメモリ内のプレーンテキストデータキーを使用して、ボリュームへのすべてのディスク I/O を暗号化します。詳細については、[Amazon EC2 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#how-ebs-encryption-works) *ユーザーガイド」または「Amazon EC2 ユーザーガイド」の「EBS 暗号化の仕組み*」を参照してください。 [Amazon EC2 ](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EBSEncryption.html#how-ebs-encryption-works)

## Amazon EBS 暗号化コンテキスト
<a name="ebs-encryption-context"></a>

[GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext) および [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) リクエストで AWS KMS、Amazon EBS はリクエスト内のボリュームまたはスナップショットを識別する名前と値のペアを持つ暗号化コンテキストを使用します。暗号化コンテキストの名前は変わりません。

[暗号化コンテキスト](encrypt_context.md)は、一連のキー値のペアおよび任意非シークレットデータを含みます。データを暗号化するリクエストに暗号化コンテキストを含めると、 は暗号化コンテキストを暗号化されたデータに AWS KMS 暗号化バインドします。データを復号するには、同じ暗号化コンテキストに渡す必要があります。

すべてのボリュームと Amazon EBS [CreateSnapshot](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSnapshot.html) オペレーションで作成された暗号化されたスナップショットの場合、Amazon EBS はボリューム ID を暗号化コンテキスト値として使用します。CloudTrail ログエントリの `requestParameters` フィールドでは、暗号化コンテキストは次のようになります。

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

Amazon EC2 [CopySnapshot](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopySnapshot.html) オペレーションで作成された暗号化されたスナップショットの場合、Amazon EBS はスナップショット ID を暗号化コンテキスト値として使用します。CloudTrail ログエントリの `requestParameters` フィールドでは、暗号化コンテキストは次のようになります。

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

## Amazon EBS 障害の検出
<a name="ebs-failures"></a>

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

 この場合、Amazon EBS はイベントを Amazon EventBridge (旧 CloudWatch Events) に送信して、失敗についてユーザーに通知します。EventBridge では、これらのイベントに応じて自動アクションをトリガーするルールを設定できます。詳細については、「Amazon EC2 ユーザーガイド」の「[Amazon CloudWatch Events for Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-cloud-watch-events.html)」を参照してください。特に以下のセクションを確認してください。
+ [ボリュームのアタッチ時または再アタッチ時の無効な暗号化キー](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-cloud-watch-events.html#attach-fail-key)
+ [ボリューム作成時の無効な暗号化キー](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-cloud-watch-events.html#create-fail-key)

これらの障害を修正するには、EBS ボリューム暗号化のために指定した KMS キーが有効になっていることを確認します。これを行うには、まず [KMS キーを表示](viewing-keys.md)して、現在のキーの状態 ( の **Status** 列 AWS マネジメントコンソール) を確認します。次に、以下のリンクのいずれかで情報を確認します。
+ KMS キーのキーステータスが無効になっている場合は、[有効](enabling-keys.md)にします。
+ KMS キーのキーステータスがインポート保留中になっている場合は、[キーマテリアルをインポート](importing-keys.md)します。
+ KMS キーのキーステータスが削除保留中になっている場合は、[キーの削除をキャンセル](deleting-keys-scheduling-key-deletion.md)します。

## AWS CloudFormation を使用して暗号化された Amazon EBS ボリュームを作成する
<a name="ebs-encryption-using-cloudformation"></a>

[AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/) を使用して、暗号化された Amazon EBS ボリュームを作成できます。詳細については、*AWS CloudFormation ユーザーガイド*の [AWS::EC2::Volume](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html) を参照してください。

# Amazon EMR が を使用する方法 AWS KMS
<a name="services-emr"></a>

[Amazon EMR](https://aws.amazon.com/emr/) クラスターを使用する場合、永続的ストレージの場所に保存する前に、*保管中の*データを暗号化するようにクラスターを設定できます。保存データは、EMR ファイルシステム (EMRFS) かクラスターノードのストレージボリューム、またはその両方で暗号化できます。保管中のデータを暗号化するには、 AWS KMS keyを使用します。以下のトピックでは、Amazon EMR クラスターが KMS キーを使用して保管中のデータを暗号化する方法について説明します。

**重要**  
Amazon EMR は、[対称 KMS キー](symm-asymm-choose-key-spec.md#symmetric-cmks)のみをサポートします。[非対称 KMS キー](symmetric-asymmetric.md)を使用して、Amazon EMR クラスター内の保管中のデータを暗号化することはできません。KMS キーが対称か非対称かを判断する方法については、「[さまざまなキータイプの特定](identify-key-types.md)」を参照してください。

Amazon EMR クラスターは、 *転送中の*データも暗号化します。つまり、クラスターはネットワーク経由でデータを送信する前にデータを暗号化します。KMS キーを使用して送信中のデータを暗号化することはできません。詳細については、*Amazon EMR 管理ガイド*の[転送時のデータ暗号化](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html#emr-encryption-intransit)を参照してください。

Amazon EMR で使用できるすべての暗号化オプションの詳細については、*Amazon EMR 管理ガイド*の[暗号化オプション](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html)を参照してください。

**Topics**
+ [EMR ファイルシステム (EMRFS) のデータを暗号化する](#emrfs-encryption)
+ [クラスターノードのストレージボリュームのデータを暗号化する](#emr-local-disk-encryption)
+ [暗号化コンテキスト](#emr-encryption-context)

## EMR ファイルシステム (EMRFS) のデータを暗号化する
<a name="emrfs-encryption"></a>

Amazon EMR クラスターは、次の 2 つの分散ファイルシステムを使用します。
+ Hadoop Distributed File System (HDFS) HDFS 暗号化は、 AWS KMSで KMS キーを使用しません。
+ EMR ファイルシステム (EMRFS) EMRFS は HDFS の実装で、Amazon EMR クラスターが Amazon Simple Storage Service (Amazon S3) にデータを格納できるようにします。EMRFS は、4 種類の暗号化オプションをサポートしており、そのうち 2 種類は AWS KMSで KMS キーを使用します。EMRFS 暗号化オプションの 4 種類すべての詳細については、*Amazon EMR 管理ガイド*の[暗号化オプション](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html)を参照してください。

KMS キーを使用する 2 種類の EMRFS 暗号化オプションは、Amazon S3 が提供する次の暗号化機能を使用します。
+ [AWS Key Management Service (SSE-KMS) によるサーバー側の暗号化を使用したデータの保護](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)。Amazon EMR クラスターは、Simple Storage Service (Amazon S3) にデータを送信します。Amazon S3 は、KMS キーを使用してデータを暗号化してから、そのデータを S3 バケットに保存します。この仕組みについては、「[SSE-KMS を使用して EMRFS のデータを暗号化するプロセス](#emrfs-encryption-sse-kms)」を参照してください。
+ [クライアント側の暗号化を使用したデータの保護](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html) (CSE-KMS)。Amazon EMR のデータは、 AWS KMS key で暗号化されてから、ストレージのために Amazon S3 に送信されます。この仕組みについては、「[CSE-KMS を使用して EMRFS のデータを暗号化するプロセス](#emrfs-encryption-cse-kms)」を参照してください。

KMS を使用して EMRFS 上のデータを暗号化するように Amazon EMR クラスターを設定するときは、Amazon S3 または Amazon EMR クラスターで使用する KMS キーを選択します。SSE-KMS を使用して、エイリアス **aws/s3** を持つ Amazon S3 の AWS マネージドキー 、または作成する対称カスタマーマネージドキーを選択できます。クライアント側の暗号化では、作成する対称カスタマーマネージドキーを選択する必要があります。カスタマーマネージドキーを選択する際に、Amazon EMR クラスターに KMS キーの使用許可があることを確認する必要があります。詳細については、*「Amazon EMR 管理ガイド*」の[「暗号化 AWS KMS keys に を使用する](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-awskms-keys)」を参照してください。

サーバー側の暗号化とクライアント側の暗号化のどちらの場合でも、選択する KMS キーが[エンベロープ暗号化](kms-cryptography.md#enveloping)ワークフローのルートキーになります。データは、KMS [キーで暗号化された一意のデータ](data-keys.md)キーで暗号化されます AWS KMS。暗号化されたデータとその暗号化されたデータキーのコピーは、1 つの暗号化オブジェクトとして S3 バケットに一緒に保存されます。この仕組みについては、次のトピックを参照してください。

**Topics**
+ [SSE-KMS を使用して EMRFS のデータを暗号化するプロセス](#emrfs-encryption-sse-kms)
+ [CSE-KMS を使用して EMRFS のデータを暗号化するプロセス](#emrfs-encryption-cse-kms)

### SSE-KMS を使用して EMRFS のデータを暗号化するプロセス
<a name="emrfs-encryption-sse-kms"></a>

SSE-KMS を使用するように Amazon EMR クラスターを設定すると、暗号化プロセスは次のように動作します。

1. クラスターは、S3 バケットに格納するために Amazon S3 にデータを送信します。

1. Amazon S3 は [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) リクエストを に送信し AWS KMS、SSE-KMS を使用するようにクラスターを設定したときに選択した KMS キーのキー ID を指定します。リクエストには暗号化コンテキストが含まれます。詳細については、「[暗号化コンテキスト](#emr-encryption-context)」を参照してください。

1. AWS KMS は一意のデータ暗号化キー (データキー) を生成し、このデータキーの 2 つのコピーを Amazon S3 に送信します。コピーのうち一方は暗号化されない形式 (プレーンテキスト) で、もう一方は KMS キーで暗号化されます。

1. Amazon S3 は、プレーンテキストデータキーを使用してステップ 1 で受信したデータを暗号化し、使用後できるだけ早くプレーンテキストデータキーをメモリから削除します。

1. Amazon S3 は、暗号化されたデータとデータキーの暗号化されたコピーを、1 つの暗号化されたオブジェクトとして S3 バケットに格納します。

この復号プロセスは、次のように行われます。

1. クラスターは、暗号化されたデータオブジェクトを S3 バケットへ要求します。

1. Amazon S3 は、暗号化されたデータキーを S3 オブジェクトから抽出し、暗号化されたデータキーを [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) リクエスト AWS KMS で に送信します。リクエストには[暗号化コンテキスト](encrypt_context.md)が含まれます。

1. AWS KMS は、暗号化に使用したのと同じ KMS キーを使用して暗号化されたデータキーを復号し、復号された (プレーンテキスト) データキーを Amazon S3 に送信します。

1. Amazon S3 は、プレーンテキストデータキーを使用して暗号化されたデータを復号化し、使用後できるだけ早くプレーンテキストデータキーをメモリから削除します。

1. Amazon S3 は、復号化されたデータをクラスターに送信します。

### CSE-KMS を使用して EMRFS のデータを暗号化するプロセス
<a name="emrfs-encryption-cse-kms"></a>

CSE-KMS を使用するように Amazon EMR クラスターを設定すると、暗号化プロセスは次のように動作します。

1. Amazon S3 にデータを保存する準備ができたら、クラスターは [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) リクエストを に送信し AWS KMS、CSE-KMS を使用するようにクラスターを設定したときに選択した KMS キーのキー ID を指定します。リクエストには暗号化コンテキストが含まれます。詳細については、「[暗号化コンテキスト](#emr-encryption-context)」を参照してください。

1. AWS KMS は一意のデータ暗号化キー (データキー) を生成し、このデータキーの 2 つのコピーをクラスターに送信します。コピーのうち一方は暗号化されない形式 (プレーンテキスト) で、もう一方は KMS キーで暗号化されます。

1. クラスターは、プレーンテキストデータキーを使用してデータを暗号化し、使用後できるだけ早くそのプレーンテキストデータキーをメモリから削除します。

1. クラスターは、暗号化データと暗号化されたデータキーのコピーを 1 つの暗号化オブジェクトにまとめます。

1. クラスターは、暗号化されたオブジェクトを Amazon S3 に送信してストレージします。

この復号プロセスは、次のように行われます。

1. クラスターは、暗号化されたデータオブジェクトを S3 バケットへ要求します。

1. Amazon S3 は、暗号化されたオブジェクトをクラスターに送信します。

1. クラスターは、暗号化されたオブジェクトから暗号化されたデータキーを抽出し、暗号化されたデータキーを [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) リクエスト AWS KMS で に送信します。リクエストには[暗号化コンテキスト](encrypt_context.md)が含まれます。

1. AWS KMS は、暗号化に使用したのと同じ KMS キーを使用して暗号化されたデータキーを復号し、復号された (プレーンテキスト) データキーをクラスターに送信します。

1. クラスターは、そのプレーンテキストデータキーを使用して、暗号化されたデータを復号し、使用後できるだけ早くプレーンテキストデータキーをメモリから削除します。

## クラスターノードのストレージボリュームのデータを暗号化する
<a name="emr-local-disk-encryption"></a>

Amazon EMR クラスターは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスの集合です。クラスター内のインスタンスはそれぞれ、*クラスターノード*または*ノード*と呼ばれます。各ノードには、インスタンスストアボリュームと Amazon Elastic Block Store（Amazon EBS）ボリュームの 2 種類のストレージボリュームがあります。これらのノードでストレージボリュームをいずれも暗号化するには、クラスターを構成して、[Linux Unified Key Setup (LUKS)](https://gitlab.com/cryptsetup/cryptsetup/blob/master/README.md) を使用できます (各ノードの起動ボリュームは不可)。これは、*ローカルディスクの暗号化*と呼ばれます。

クラスター向けにローカルディスクの暗号化を有効にすると、 AWS KMSの KMS キーを使用して LUKS キーを暗号化できます。作成した[カスタマーマネージドキー](concepts.md#customer-mgn-key)を選択する必要があります。[AWS マネージドキー](concepts.md#aws-managed-key) を使用することはできません。カスタマーマネージドキーを選択する場合は、Amazon EMR クラスターに KMS キーを使用するアクセス許可があることを確認する必要があります。詳細については、*「Amazon EMR 管理ガイド*」の[「暗号化 AWS KMS keys に を使用する](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-awskms-keys)」を参照してください。

KMS キーを使用してローカルディスクの暗号化を有効にする際、暗号化プロセスは次のようになります。

1. 各クラスターノードが起動すると、クラスターのローカルディスク暗号化を有効にしたときに選択した KMS キーのキー ID を指定して AWS KMS、[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) リクエストが に送信されます。

1. AWS KMS は一意のデータ暗号化キー (データキー) を生成し、このデータキーの 2 つのコピーをノードに送信します。コピーのうち一方は暗号化されない形式 (プレーンテキスト) で、もう一方は KMS キーで暗号化されます。

1. ノードでは、LUKS キーを保護するパスワードとして、base64 エンコードバージョンのプレーンテキストデータキーを使用します。ノードは、暗号化されたデータキーのコピーを起動ボリュームに保存します。

1. ノードが再起動すると、再起動されたノードは暗号化されたデータキーを [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) リクエスト AWS KMS とともに に送信します。

1. AWS KMS は、暗号化に使用したのと同じ KMS キーを使用して暗号化されたデータキーを復号し、復号された (プレーンテキスト) データキーをノードに送信します。

1. ノードでは、LUKS キーのロックを解除するパスワードとして、base64 エンコードバージョンのプレーンテキストデータキーを使用します。

## 暗号化コンテキスト
<a name="emr-encryption-context"></a>

と統合された各 AWS サービス AWS KMS では、 AWS KMS を使用してデータキーを生成したり、データを暗号化または復号したりするときに、暗号化[コンテキスト](encrypt_context.md)を指定できます。暗号化コンテキストは、 AWS KMS がデータの整合性をチェックするために使用する追加の認証済み情報です。サービスにおいて、暗号化オペレーションのために暗号化コンテキストを指定する際、復号オペレーションと同じ暗号コンテキストを指定する必要があります。指定しない場合は復号できません。暗号化コンテキストも AWS CloudTrail ログファイルに書き込まれるため、特定の KMS キーが使用された理由を理解するのに役立ちます。

以下のセクションでは、KMS キーを使用する Amazon EMR 暗号化の各シナリオで使用される暗号化コンテキストについて説明します。

### SSE-KMS による EMRFS 暗号化の暗号化コンテキスト
<a name="emr-encryption-context-sse-kms"></a>

SSE-KMS を使用すると、Amazon EMR クラスターは Amazon S3 にデータを送信し、次に Amazon S3 が KMS キーを使用してデータを暗号化してから S3 バケットに保存します。この場合、Amazon S3 は、送信先の各 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) および [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) リクエストで、S3 オブジェクトの Amazon リソースネーム (ARN) を暗号化コンテキストとして使用します AWS KMS。次の例は、Amazon S3 が使用する暗号化コンテキストの JSON 表現を示しています。

```
{ "aws:s3:arn" : "arn:aws:s3:::S3_bucket_name/S3_object_key" }
```

### CSE-KMS による EMRFS 暗号化の暗号化コンテキスト
<a name="emr-encryption-context-cse-kms"></a>

CSE-KMS では、Amazon EMR クラスターは KMS キーを使用してデータを暗号化してから Amazon S3 に送信して保存します。この場合、クラスターは、送信する各 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) および [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) リクエストの暗号化コンテキストとして KMS キーの Amazon リソースネーム (ARN) を使用します AWS KMS。次の例では、クラスターが使用する暗号化コンテキストの JSON 表現を示します。

```
{ "kms_cmk_id" : "arn:aws:kms:us-east-2:111122223333:key/0987ab65-43cd-21ef-09ab-87654321cdef" }
```

### LUKS によるローカルディスク暗号化の暗号化コンテキスト
<a name="emr-encryption-context-luks"></a>

Amazon EMR クラスターが LUKS でローカルディスク暗号化を使用するとき、クラスターノードは AWS KMSに送信する [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) および [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) リクエストで暗号化コンテキストを指定しません。

# Amazon Redshift が を使用する方法 AWS KMS
<a name="services-redshift"></a>

このトピックでは、Amazon Redshift が AWS KMS を使用してデータを暗号化する方法について説明します。

**Topics**
+ [Amazon Redshift 暗号化](#rs-encryption)
+ [暗号化コンテキスト](#rs-encryptioncontext)

## Amazon Redshift 暗号化
<a name="rs-encryption"></a>

Amazon Redshift データウェアハウスは、*ノード*と呼ばれるコンピューティングリソースの集合で、クラスターと呼ばれるグループに編成されています。各クラスターは Amazon Redshift エンジンを実行し、1 つ以上のデータベースを含みます。

Amazon Redshift は、暗号化に 4 階層のキーベースのアーキテクチャを使用します。アーキテクチャは、データ暗号化キー、データベースキー、クラスターキー、ルートキーで構成されます。をルートキー AWS KMS key として使用できます。

データ暗号化キーは、クラスター内のデータブロックを暗号化します。各データブロックに、ランダムに生成された AES-256 キーが割り当てられます。これらのキーは、クラスターのデータベースキーを使用して暗号化されます。

データベースキーは、クラスターのデータ暗号化キーを暗号化します。データベースキーは、ランダムに生成された AES-256 キーです。これは Amazon Redshift クラスターとは別のネットワークのディスクに保存され、安全なチャネルを介してクラスターに渡されます。

クラスターキーは、Amazon Redshift クラスターのデータベースキーを暗号化します。 AWS KMS、 AWS CloudHSM、または外部ハードウェアセキュリティモジュール (HSM) を使用して、クラスターキーを管理できます。詳細については、 [ Amazon Redshift データベース暗号化 ](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-db-encryption.html) のドキュメントを参照してください。

暗号化をリクエストするには、Amazon Redshift コンソールで適切なチェックボックスをオンにします。暗号化ボックスの下に表示されるリストから[カスタマーマネージドキー](concepts.md#customer-mgn-key)を 1 つ選択して、指定できます。カスタマーマネージドキーを指定しない場合、Amazon Redshift はアカウントで Amazon Redshift の [AWS マネージドキー](concepts.md#aws-managed-key) を使用します。

**重要**  
Amazon Redshift は、対称暗号化 KMS キーのみをサポートします。Amazon Redshift 暗号化ワークフローでは、非対称KMS キーは使用できません。KMS キーが対称か非対称かを判断する方法については、[さまざまなキータイプの特定](identify-key-types.md) を参照してください。

## 暗号化コンテキスト
<a name="rs-encryptioncontext"></a>

と統合されている各サービスは、データキーのリクエスト、暗号化、復号時に暗号化[コンテキスト](encrypt_context.md) AWS KMS を指定します。暗号化コンテキストは、 AWS KMS がデータの整合性をチェックするために使用する追加の認証データ (AAD) です。つまり、暗号化オペレーションで暗号化コンテキストを指定すると、復号オペレーションでもそのコンテキストが指定され、指定しなかった場合、復号は成功しません。Amazon Redshift は、暗号化コンテキストにクラスター ID と作成時間を使用します。CloudTrail ログファイルの `requestParameters` フィールドでは、暗号化コンテキストは次のようになります。

```
"encryptionContext": {
    "aws:redshift:arn": "arn:aws:redshift:region:account_ID:cluster:cluster_name",
    "aws:redshift:createtime": "20150206T1832Z"
},
```

 CloudTrail ログでクラスター名を検索して、 AWS KMS key (KMS キー) を使用して実行されたオペレーションを確認できます。このオペレーションには、クラスターの暗号化、クラスターの復号、およびデータキーの生成が含まれます。