Amazon EMR
管理ガイド

暗号化オプション

Amazon EMR リリースバージョン 4.8.0 以降においては、セキュリティ設定を使用して、保管中のデータ、転送中のデータ、またはその両方の暗号化の設定を指定できます。保管中のデータの暗号化を有効にすると、Amazon S3 内にある EMRFS データもしくはローカルディスク内にあるデータのいずれかまたはその両方の暗号化を選択できるようになります。作成する各セキュリティ設定は、クラスター設定ではなく Amazon EMR に保存されるため、設定を簡単に再利用して、クラスターの作成時にいつでもデータ暗号化設定を指定できます。詳細については、「セキュリティ設定を作成する」を参照してください。

次の図は、セキュリティ設定で使用できるさまざまなデータ暗号化オプションを示しています。

以下の暗号オプションも使用できます。また、セキュリティ設定では設定できません。

注記

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 への読み取りおよび書き込みが行われる 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 開発者ガイド の「暗号化を使用したデータの保護」を参照してください。

Amazon S3 サーバー側の暗号化

Amazon S3 サーバー側の暗号化 を設定すると、Amazon S3 はデータをディスクに書き込むときにオブジェクトレベルで暗号化し、データにアクセスするときに復号化します。SSE の詳細については、Amazon Simple Storage Service 開発者ガイド の「サーバー側の暗号化を使用したデータの保護」を参照してください。

Amazon EMR で SSE を指定する場合、2 つの異なるキー管理システムから選択できます。

  • SSE-S3 – Amazon S3 がキーを管理します。

  • SSE-KMS – Amazon EMR に適したポリシーで設定された AWS KMS カスタマーマスターキー (CMK) を使用します。Amazon EMR のキーの要件の詳細については、「暗号化のための AWS KMS カスタマーマスターキー(CMK) の使用」を参照してください。AWS KMS を使用するときは、ストレージと暗号化キーの使用に対して料金が適用されます。詳細については、「AWS KMS 料金表」を参照してください。

カスタマーが提供するキーの SSE (SSE-C) は、Amazon EMR では使用できません。

Amazon S3 クライアント側の暗号化

Amazon S3 クライアント側の暗号化を使用すると、Amazon S3 暗号化および復号プロセスはクラスターの EMRFS で行われます。オブジェクトは Amazon S3 にアップロードする前に暗号化され、ダウンロードした後に復号化されます。クライアントが使用する暗号化キーは、指定したプロバイダーが提供します。クライアントは、AWS KMS (CSE-KMS) が提供するキーを使用するか、クライアント側のマスターキー (CSE-C) を提供するカスタム Java クラスを使用できます。指定されたプロバイダーおよび復号化または暗号化されるオブジェクトのメタデータに応じて、CSE-KMS と CSE-C では暗号化の詳細が若干異なります。違いに関する詳細については、Amazon Simple Storage Service 開発者ガイドクライアント側の暗号化を使用したデータの保護を参照してください。

注記

Amazon S3 CSE は、Amazon S3 でやり取りされる EMRFS データの暗号化だけを保証します。クラスターインスタンスボリュームのすべてのデータが暗号化されるわけではありません。さらに、Hue は EMRFS を使用しないため、Hue S3 ファイルブラウザが Amazon S3 に書き込むオブジェクトは暗号化されません。

ローカルディスク暗号化

Amazon EMR セキュリティ設定を使用してローカルディスク暗号化を有効にすると、次のメカニズムが連携してローカルディスクを暗号化します。

オープンソースの HDFS 暗号化

HDFS は、分散処理中にクラスターインスタンス間でデータを交換します。また、インスタンスストアボリュームと、インスタンスにアタッチされた EBS ボリュームとの間でデータを読み書きします。ローカルディスク暗号化を有効にすると、次のオープンソース Hadoop 暗号化オプションがアクティブになります。

注記

追加の Apache Hadoop 暗号化をアクティブ化するには、転送時の暗号化を有効にします (転送中の暗号化 を参照)。これらの暗号化設定では、HDFS 透過的暗号化はアクティブにされず、手動で設定することができます。詳細については、Amazon EMR リリース ガイド の「Amazon EMR における HDFS での透過的暗号化」を参照してください。

インスタンスストアの暗号化

NVMe ベースの SSD をインスタンスストアボリュームとして使用する EC2 インスタンスタイプでは、Amazon EMR 暗号化設定に関係なく NVMe 暗号化が使用されます。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイド の「NVMe SSD ボリューム」を参照してください。他のインスタンスストアボリュームの場合、Amazon EMR は、EBS ボリュームが EBS 暗号化と LUKS のどちらを使用して暗号化されているかにかかわらず、ローカルディスクの暗号化が有効になると、LUKS を使用してインスタンスストアボリュームを暗号化します。

EBS ボリュームの暗号化

アカウントで EBS ボリュームの Amazon EC2 暗号化がデフォルトで有効になっているリージョンにクラスターを作成する場合、ローカルディスクの暗号化が有効になっていなくても EBS ボリュームは暗号化されます。詳細については、Linux インスタンス用 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 カスタマーマスターキー (CMK) を使用するか、暗号化アーティファクトを提供するカスタム Java クラスを使用できます。AWS KMS を使用するときは、ストレージと暗号化キーの使用に対して料金が適用されます。詳細については、「AWS KMS 料金表」を参照してください。

注記

クラスターで EBS 暗号化が有効になっているかどうかを確認するには、DescribeVolumes API コールを使用することをお勧めします。詳細については、「DescribeVolumes」を参照してください。クラスターで lsblk を実行すると、EBS 暗号化ではなく LUKS 暗号化のステータスのみが確認されます。

転送中の暗号化

転送時の暗号化では、複数の暗号化メカニズムが有効になります。これらはオープンソース機能であり、アプリケーション固有のもので、Amazon EMR リリースによって異なる可能性があります。次のアプリケーション固有の暗号化機能をセキュリティ設定で有効できます。

  • Hadoop (詳細については、Apache Hadoop ドキュメントの Hadoop in Secure Mode を参照してください):

  • HBase:

    • Kerberos が有効になっている場合、hbase.rpc.protection プロパティは暗号化された通信のために privacy に設定されます。詳細については、Apache HBase ドキュメントで「Client-side Configuration for Secure Operation」を参照してください。Amazon EMR を使用した Kerberos の詳細については、「Kerberos 認証を使用する」を参照してください。

  • Presto:

    • Presto のノード間の内部通信は SSL/TLS を使用します (Amazon EMR バージョン 5.6.0 以降のみ)。

  • Tez:

  • Spark (詳細については、Spark のセキュリティ設定を参照してください)。

    • Spark コンポーネント間 (ブロック転送サービスと外部シャッフルサービスなど) での内部 RPC 通信は、Amazon EMR のバージョン 5.9.0 以降では AES-256 暗号を使用して暗号化されます。以前のリリースでは、内部 RPC 通信は SASL と、暗号として DIGEST-MD5 を使用して暗号化されます。

    • Spark 履歴サーバーや HTTPS 対応ファイルサーバーなどのユーザーインターフェイスを使用した HTTP プロトコル通信は、Spark の SSL 設定を使用して暗号化されます。詳細については、Spark ドキュメントの「SSL Configuration」を参照してください。

転送時の暗号化で使用する暗号化アーティファクトを指定するには、Amazon S3 にアップロードする証明書の圧縮ファイルを提供するか、暗号化アーティファクトを提供するカスタム Java クラスを参照するかのいずれかを行います。詳細については、「Amazon EMR の暗号化機能を使って転送中のデータを暗号化するために必要な証明書の提供」を参照してください。