Amazon EMR 暗号化オプション
Amazon EMR リリース 4.8.0 以降においては、セキュリティ設定を使用して、保管中のデータ、転送中のデータ、またはその両方の暗号化の設定を指定できます。保管中のデータの暗号化を有効にすると、Amazon S3 内にある EMRFS データもしくはローカルディスク内にあるデータのいずれかまたはその両方の暗号化を選択できるようになります。作成する各セキュリティ設定は、クラスター設定ではなく Amazon EMR に保存されるため、設定を簡単に再利用して、クラスターの作成時にいつでもデータ暗号化設定を指定できます。詳細については、「Amazon EMR コンソールまたは AWS CLI を使用してセキュリティ設定を作成する」を参照してください。
次の図は、セキュリティ設定で使用できるさまざまなデータ暗号化オプションを示しています。
以下の暗号オプションも使用できます。また、セキュリティ設定では設定できません。
-
Amazon EMR のバージョン 4.1.0 以降では、必要に応じて、HDFS で透過的データ暗号化の設定を選択することもできます。詳細については、「Amazon EMR リリースガイド」の「Transparent encryption in HDFS on Amazon EMR」を参照してください。
-
セキュリティ設定をサポートしていない Amazon EMR のリリースバージョンを使用している場合は、手動で Amazon S3 の EMRFS データの暗号化を設定できます。詳細については、「EMRFS プロパティを使用して Amazon S3 の暗号化を指定する」を参照してください。
-
5.24.0 より前の Amazon EMR バージョンを使用している場合、暗号化された EBS ルートデバイスボリュームは、カスタム AMI を使用する場合にのみサポートされます。詳細については、「Amazon EMR 管理ガイド」の「暗号化された Amazon EBS ルートデバイスボリュームを使用したカスタム AMI の作成」を参照してください。
注記
Amazon EMR バージョン 5.24.0 から、AWS KMS をキープロバイダーとして指定している場合、セキュリティ設定オプションを使用して EBS ルートデバイスとストレージボリュームを暗号化できます。詳細については、「ローカルディスク暗号化」を参照してください。
データの暗号化には、キーと証明書が必要です。セキュリティ設定により、AWS Key Management Service で管理されるキー、Amazon S3 で管理されるキー、指定するカスタムプロバイダーからのキーと証明書を含めて、複数のオプションから選択できる柔軟性が得られます。AWS KMS をキープロバイダーとして使用する場合、料金は暗号化キーの保存と使用に対して適用されます。詳細については、「AWS KMS 料金表
暗号化オプションを指定する前に、使用するキーと証明書の管理システムを決定します。これにより、暗号化設定の一部として指定するキーと証明書、またはカスタムプロバイダーをまず作成できます。
Amazon S3 内に保管中の EMRFS データの暗号化
Amazon S3 暗号化は、Amazon S3 への読み取りおよび書き込みが行われる Amazon EMR ファイルシステム (EMRFS) オブジェクトで使用できます。保管中のデータの暗号化を有効にする場合は、デフォルトの暗号化モードとして、Amazon S3 サーバー側での暗号化 (SSE) またはクライアント側での暗号化 (CSE) を指定します。オプションで、[Per bucket encryption overrides (バケットごとの暗号化オーバーライド)] を使用して、バケットごとに異なる暗号化方法を指定できます。Amazon S3 の暗号化が有効かどうかにかかわらず、Transport Layer Security (TLS) は、EMR クラスターノードと Amazon S3 の間で転送される EMRFS オブジェクトを暗号化します。Amazon S3 の暗号化の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「暗号化によるデータの保護」を参照してください。
注記
AWS KMS を使用するときは、ストレージと暗号化キーの使用に対して料金が適用されます。詳細については、AWS KMS 料金
Amazon S3 のサーバー側の暗号化
Amazon S3 のサーバー側の暗号化をセットアップすると、Amazon S3 はデータをディスクに書き込むときにオブジェクトレベルで暗号化し、アクセスするときに復号します。SSE に関する詳細は、「Amazon Simple Storage Service ユーザーガイド」の「サーバー側の暗号化を使用したデータの保護」を参照してください。
Amazon EMR で SSE を指定するときに、次の 2 つの異なるキー管理システムから選択できます。
-
SSE-S3 — Amazon S3 がキーを管理します。
-
SSE-KMS — AWS KMS key を使用して、Amazon EMR に適したポリシーを設定します。Amazon EMR の主要な要件の詳細については、「AWS KMS keysを使用した暗号化」を参照してください。
SSE とお客様が用意したキーとの組み合わせ (SSE-C) は、Amazon EMR では使用できません。
Amazon S3 クライアント側の暗号化
Amazon S3 のクライアント側の暗号化を使用すると、Amazon S3 の暗号化と復号はクラスターの EMRFS クライアントで行われます。オブジェクトは Amazon S3 にアップロードされる前に暗号化され、ダウンロード後に復号化されます。指定するプロバイダーが、クライアントが使用する暗号化キーを提供します。クライアントは、AWS KMS によって提供されるキー (CSE-KMS) か、クライアント側のルートキーを提供するカスタム Java クラス (CSE-C) を使用できます。CSE-KMS と CSE-C では、指定するプロバイダーと、復号化または暗号化されるオブジェクトのメタデータに応じて、暗号化の仕様が少し異なります。これらの差異に関する詳細は、「Amazon Simple Storage Service ユーザーガイド」の「クライアント側の暗号化を使用したデータの保護」を参照してください。
注記
Amazon S3 CSE では、Amazon S3 と交換される EMRFS データのみが暗号化されます。クラスターインスタンスボリュームのすべてのデータが暗号化されるわけではありません。さらに、Hue は EMRFS を使用しないため、Hue S3 ファイルブラウザが Amazon S3 に書き込むオブジェクトは暗号化されません。
Amazon EMR WAL 内に保管中のデータ暗号化
先書きログ記録 (WAL) 用にサーバー側の暗号化 (SSE) を設定すると、Amazon EMR は保管中のデータを暗号化します。Amazon EMR で SSE を指定するときに、次の 2 つの異なるキー管理システムから選択できます。
- SSE-EMR-WAL
-
Amazon EMR はキーを管理します。デフォルトでは、Amazon EMR は Amazon EMR WAL に保存したデータを SSE-EMR-WAL で暗号化します。
- SSE-KMS-WAL
-
AWS KMS キーを使用して、Amazon EMR WAL に適用されるポリシーを設定します。Amazon EMR の主要な要件の詳細については、「AWS KMS keysを使用した暗号化」を参照してください。
Amazon EMR で WAL を有効にすると、SSE で独自のキーを使用することはできません。詳細については、「Write-ahead logs (WAL) for Amazon EMR」を参照してください。
ローカルディスク暗号化
Amazon EMR セキュリティ設定を使用してローカルディスク暗号化を有効にすると、次のメカニズムが連携してローカルディスクを暗号化します。
オープンソースの HDFS 暗号化
HDFS は、分散処理中にクラスターインスタンス間でデータを交換します。また、インスタンスストアボリュームと、インスタンスにアタッチされた EBS ボリュームとの間でデータを読み書きします。ローカルディスク暗号化を有効にすると、次のオープンソース Hadoop 暗号化オプションがアクティブになります。
-
セキュア Hadoop RPC
は Privacy
に設定され、単純認証とセキュリティ層 (SASL、Simple Authentication Security Layer) が使用されます。 -
HDFS ブロックデータ転送時のデータ暗号化
は true
に設定され、AES 256 暗号化を使用するように設定されます。
注記
追加の Apache Hadoop 暗号化をアクティブ化するには、転送時の暗号化を有効にします。詳細については、「転送中の暗号化」を参照してください。これらの暗号化設定では、HDFS 透過的暗号化はアクティブにされず、手動で設定することができます。詳細については、「Amazon EMR リリースガイド」の「Transparent encryption in HDFS on Amazon EMR」を参照してください。
インスタンスストアの暗号化
NVMe ベースの SSD をインスタンスストアボリュームとして使用する EC2 インスタンスタイプでは、Amazon EMR 暗号化設定に関係なく NVMe 暗号化が使用されます。詳細については、「Amazon EC2 ユーザーガイド」の「NVMe SSD ボリューム」を参照してください。他のインスタンスストアボリュームの場合、Amazon EMR は、EBS ボリュームが EBS 暗号化と LUKS のどちらを使用して暗号化されているかにかかわらず、ローカルディスクの暗号化が有効になると、LUKS を使用してインスタンスストアボリュームを暗号化します。
EBS ボリュームの暗号化
アカウントで EBS ボリュームの Amazon EC2 暗号化がデフォルトで有効になっているリージョンにクラスターを作成する場合、ローカルディスクの暗号化が有効になっていなくても EBS ボリュームは暗号化されます。詳細については、「Amazon EC2 ユーザーガイド」の「デフォルトで暗号化」を参照してください。セキュリティ設定でローカルディスクの暗号化が有効になっている場合、Amazon EMR 設定はクラスター EC2 インスタンスのデフォルトの Amazon EC2 暗号化設定よりも優先されます。
セキュリティ設定を使用して EBS ボリュームを暗号化するには、以下のオプションを使用できます。
-
EBS 暗号化 - Amazon EMR バージョン 5.24.0 以降では、EBS 暗号化を有効にすることを選択できます。EBS 暗号化オプションは、EBS ルートデバイスボリュームとアタッチされたストレージボリュームを暗号化します。EBS 暗号化オプションは、AWS Key Management Service をキープロバイダーとして指定した場合にのみ使用できます。EBS 暗号化を使用することをお勧めします。
-
LUKS 暗号化 - Amazon EBS ボリュームに LUKS 暗号化を使用することを選択した場合、LUKS 暗号化はルートデバイスボリュームではなく、アタッチされたストレージボリュームにのみ適用されます。LUKS の暗号化の詳細については、「LUKS on-disk specification
」を参照してください。 キープロバイダーには、Amazon EMR に適したポリシーで設定した AWS KMS keyを使用するか、暗号化アーティファクトを提供するカスタム Java クラスを使用できます。AWS KMS を使用するときは、ストレージと暗号化キーの使用に対して料金が適用されます。詳細については、「AWS KMS 料金表
」を参照してください。
注記
クラスターで EBS 暗号化が有効になっているかどうかを確認するには、DescribeVolumes
API コールを使用することをお勧めします。詳細については、「DescribeVolumes」を参照してください。クラスターで lsblk
を実行すると、EBS 暗号化ではなく LUKS 暗号化のステータスのみが確認されます。
転送中の暗号化
転送時の暗号化では、複数の暗号化メカニズムが有効になります。これらはオープンソース機能であり、アプリケーション固有のもので、Amazon EMR リリースによって異なる可能性があります。転送中の暗号化を有効にするには、Amazon EMR で Amazon EMR コンソールまたは AWS CLI を使用してセキュリティ設定を作成する を使用します。転送中の暗号化が有効になっている EMR クラスターの場合、Amazon EMR は転送中の暗号化を有効にするようにオープンソースのアプリケーション設定を自動的に設定します。高度なユースケースでは、Amazon EMR のデフォルトの動作を上書きするようにオープンソースのアプリケーション設定を直接設定できます。詳細については、「in-transit encryption support matrix」および「Configure applications」を参照してください。
転送中の暗号化に関連するオープンソースアプリケーションの詳細については、以下を参照してください。
-
セキュリティ設定で転送中の暗号化を有効にすると、Amazon EMR は転送中の暗号化をサポートするすべてのオープンソースアプリケーションエンドポイントの転送中の暗号化を有効にします。さまざまなアプリケーションエンドポイントの転送中の暗号化のサポートは、Amazon EMR リリースバージョンによって異なります。詳細については、「転送中の暗号化サポートマトリックス」を参照してください。
-
オープンソース設定を上書きすることで、以下を実行できます。
-
ユーザーが提供する TLS 証明書が要件を満たしていない場合は、TLS ホスト名の検証を無効にする
-
パフォーマンスと互換性の要件に基づいて、特定のエンドポイントの転送中の暗号化を無効にする
-
使用する TLS バージョンと暗号スイートを制御する。
アプリケーション固有の設定の詳細については、「転送中の暗号化サポートマトリックス」を参照してください。
-
-
セキュリティ設定で転送中の暗号化を有効にすることに加えて、一部の通信チャネルでは、転送中の暗号化を有効にするために追加のセキュリティ設定も必要です。例えば、一部のオープンソースアプリケーションエンドポイントでは、転送中の暗号化に Simple Authentication and Security Layer (SASL) を使用します。そのためには、EMR クラスターのセキュリティ設定で Kerberos 認証を有効にする必要があります。これらのエンドポイントの詳細については、「転送中の暗号化サポートマトリックス」を参照してください。
-
TLS v1.2 以降をサポートするソフトウェアを使用することをお勧めします。Amazon EMR on EC2 は、デフォルトの Corretto JDK ディストリビューションが含まれています。このディストリビューションは、Java で実行されるオープンソースネットワークで許可される TLS バージョン、暗号スイート、およびキーサイズを決定します。現在、ほとんどのオープンソースフレームワークは、Amazon EMR 7.0.0 以降のリリースで TLS v1.2 以降を適用しています。これは、ほとんどのオープンソースフレームワークが Amazon EMR 7.0.0 以降の Java 17 で実行されるためです。古い Amazon EMR リリースバージョンは古い Java バージョンを使用するため、TLS v1.0 および v1.1 をサポートする場合がありますが、Corretto JDK は Java がサポートする TLS バージョンを変更し、既存の Amazon EMR リリースに影響を与える可能性があります。
転送時の暗号化で使用する暗号化アーティファクトを指定するには、Amazon S3 にアップロードする証明書の圧縮ファイルを提供するか、暗号化アーティファクトを提供するカスタム Java クラスを参照するかのいずれかを行います。詳細については、「Amazon EMR 暗号化を使用して転送中のデータを暗号化するための証明書の提供」を参照してください。