データ保護 - Amazon EMR

データ保護

AWS 責任共有モデルは Amazon EMR on EKS のデータ保護に適用されます。このモデルで説明したように、AWS は、すべての AWS クラウドを実行するグローバルインフラストラクチャを保護する責任を負います。お客様は、このインフラストラクチャでホストされているコンテンツに対する管理を維持する責任があります。このコンテンツには、使用する AWS のサービスに対するセキュリティの設定と管理タスクが含まれます。データプライバシーの詳細については、「データプライバシーのよくある質問」を参照してください。欧州でのデータ保護の詳細については、AWS セキュリティブログに投稿された AWS 責任共有モデルおよび GDPR のブログを参照してください。

データ保護の目的で、AWS アカウントの認証情報を保護し、個々のアカウントを AWS Identity and Access Management (IAM) で設定することをお勧めします。この方法により、それぞれのジョブを遂行するために必要な許可のみを各ユーザーに付与できます。また、次の方法でデータを保護することをお勧めします。

  • 各アカウントで多要素認証 (MFA) を使用します。

  • SSL/TLS を使用して AWS リソースと通信します。TLS 1.2 以降が推奨されます。

  • AWS CloudTrail で API とユーザーアクティビティログをセットアップします。

  • AWS 暗号化ソリューションを AWS のサービス内のすべてのデフォルトのセキュリティ管理と一緒に使用します。

  • Amazon Macie などのアドバンストマネージドセキュリティサービスを使用します。これは、Amazon S3 に保存されている個人データの検出と保護を支援します。

  • Amazon EMR on EKS の暗号化オプションを使用して保管中および転送中のデータを暗号化します。

  • コマンドラインインターフェイスまたは API を使用して AWS にアクセスするときに FIPS 140-2 検証済みの暗号化モジュールが必要な場合は、FIPS エンドポイントを使用します。利用可能な FIPS エンドポイントの詳細については、「連邦情報処理規格 (FIPS) 140-2」 を参照してください。

顧客のアカウント番号などの機密の識別情報は、[Name ] (名前)フィールドなどの自由形式のフィールドに配置しないことを強くお勧めします。これは、Amazon EMR on EKS だけでなく、他の AWS のサービスでコンソール、API、‬AWS CLI、または AWS SDK を使用している場合も同様です。Amazon EMR on EKS や他のサービスに入力したすべてのデータは、診断ログに取り込まれる可能性があります。外部サーバーへの URL を指定するときは、そのサーバーへのリクエストを検証するための認証情報を URL に含めないでください。

保管中の暗号化

データの暗号化は、承認されていないユーザーがクラスターおよび関連するデータストレージシステムのデータを読み取れないようにするのに役立ちます。このデータには、保管中のデータと呼ばれる、永続的なメディアに保存されているデータや、転送中のデータと呼ばれる、ネットワークを介した転送の間に傍受される可能性のあるデータが含まれます。

データの暗号化には、キーと証明書が必要です。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 開発者ガイド」の「暗号化を使用したデータの保護」を参照してください。

注記

AWS KMS を使用するときは、ストレージと暗号化キーの使用に対して料金が適用されます。詳細については、AWS KMS 料金を参照してください。

Amazon S3 のサーバー側の暗号化

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

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

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

  • SSE-KMS ‐ AWS KMS key で Amazon EMR on EKS に適したポリシーを指定してセットアップします。

SSE とお客様が用意したキーとの組み合わせ (SSE-C) は、Amazon EMR on EKS では使用できません。

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 に書き込むオブジェクトは暗号化されません。

ローカルディスク暗号化

Apache Spark は、ローカルディスクに書き込まれた一時データの暗号化をサポートしています。これには、キャッシュ変数とブロードキャスト変数の両方について、ディスクに保存されているシャッフルファイル、シャッフルスピル、およびデータブロックが含まれます。saveAsHadoopFilesaveAsTable などの API を使用したアプリケーションによって生成された出力データの暗号化は対象外です。また、ユーザーが明示的に作成した一時ファイルは対象にならない場合があります。詳細については、Spark ドキュメントの「Local Storage Encryption」(ローカルストレージ暗号化) を参照してください。Spark は、データがメモリに収まらない場合、エグゼキュータプロセスによってローカルディスクに書き込まれる中間データなど、ローカルディスク上の暗号化されたデータをサポートしません。ディスクに保持されたデータは、ジョブランタイムにスコープ設定され、データの暗号化に使用されるキーは、ジョブ実行ごとに Spark によって動的に生成されます。Spark ジョブが終了すると、他のプロセスはデータを復号できません。

ドライバーとエグゼキューターポッドの場合、マウントされたボリュームに保持される保管中のデータを暗号化します。3 つの異なる AWS ネイティブストレージオプション EBSEFSFSx for Lustre を Kubernetes で使用できます。3 つのオプションはすべて、サービスマネージドキーまたは AWS KMS keyを使用して保管時の暗号化を行います。詳細については、「EKS ベストプラクティスガイド」を参照してください。この方法では、マウントされたボリュームに保持されるすべてのデータが暗号化されます。

キー管理

KMS キーを自動的にローテーションするように KMS を設定できます。これにより、古いキーを無期限に保存しながら、年に一度、キーをローテーションして、データを復号することができます。詳細については、「Rotating AWS KMS keys」を参照してください。

転送中の暗号化

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

  • Spark

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

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

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

  • Amazon S3 バケット IAM ポリシーで aws:SecureTransport 条件を使用して、HTTPS (TLS) を介した暗号化接続のみを許可してください。

  • JDBC または ODBC クライアントにストリーミングされるクエリ結果は、TLS を使用して暗号化されます。