データ保護
AWS 責任共有モデル
データ保護の目的で、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 Serverless の暗号化オプションを使用して保管中および転送中のデータを暗号化します。
-
コマンドラインインターフェイスまたは API を使用して AWS にアクセスするときに FIPS 140-2 検証済みの暗号化モジュールが必要な場合は、FIPS エンドポイントを使用します。利用可能な FIPS エンドポイントの詳細については、「連邦情報処理規格 (FIPS) 140-2
」 を参照してください。
顧客のアカウント番号などの機密の識別情報は、[Name ] (名前)フィールドなどの自由形式のフィールドに配置しないことを強くお勧めします。これは、コンソール、API、AWS CLI、または AWS SDK で Amazon EMR Serverless または他の AWS のサービスを使用する場合も同様です。Amazon EMR Serverless や他のサービスに入力したすべてのデータは、診断ログに取り込まれる可能性があります。外部サーバーへの URL を指定するときは、そのサーバーへのリクエストを検証するための認証情報を URL に含めないでください。
保管中の暗号化
データの暗号化は、承認されていないユーザーがクラスターおよび関連するデータストレージシステムのデータを読み取れないようにするのに役立ちます。このデータには、保管中のデータと呼ばれる、永続的なメディアに保存されているデータや、転送中のデータと呼ばれる、ネットワークを介した転送の間に傍受される可能性のあるデータが含まれます。
データの暗号化には、キーと証明書が必要です。AWS Key Management Service で管理されるキー、 Amazon S3で管理されるキー、指定するカスタムプロバイダーからのキーと証明書を含めて、複数のオプションから選択できます。AWS KMS をキープロバイダーとして使用する場合、料金は暗号化キーの保存と使用に対して適用されます。詳細については、「AWS KMS 料金表
暗号化オプションを指定する前に、使用するキーと証明書の管理システムを決定します。次に、暗号化設定の一部として指定するカスタムプロバイダーのキーと証明書を作成します。
Amazon S3 内に保管中の EMRFS データの暗号化
各 EMR Serverless アプリケーションは、EMRFS (EMR ファイルシステム) を含む特定のリリースバージョンを使用します。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 CSE を使用する場合、EMR Serverless アプリケーションでジョブを実行するために使用される実行ロールは、キーにアクセスできる必要があります。Amazon S3 の暗号化の詳細については、「Amazon Simple Storage Service デベロッパーガイド」の「暗号化を使用したデータの保護」を参照してください。
注記
AWS KMS を使用するときは、ストレージと暗号化キーの使用に対して料金が適用されます。詳細については、「AWS KMS 料金表
Amazon S3 のサーバー側の暗号化
Amazon S3 のサーバー側の暗号化をセットアップすると、Amazon S3 はデータをディスクに書き込むときにオブジェクトレベルで暗号化し、アクセスするときに復号します。SSE の詳細については、「Amazon Simple Storage Service デベロッパーガイド」の「サーバー側の暗号化を使用したデータの保護」を参照してください。
Amazon EMR Serverless で SSE を指定するときに、次の 2 つの異なるキー管理システムから選択できます。
-
SSE-S3 — Amazon S3 がキーを管理します。EMR Serverless では、追加のセットアップは必要ありません。
-
SSE-KMS — AWS KMS key を使用して、EMR Serverless に適したポリシーを設定します。EMR Serverless では、追加のセットアップは必要ありません。
Amazon S3 に書き込むデータに AWS KMS 暗号化を使用する場合、StartJobRun
API の使用時に 2 つのオプションがあります。Amazon S3 に書き込むすべてのデータの暗号化を有効にすることも、特定のバケットに書き込むデータの暗号化を有効にすることも可能です。StartJobRun
API に関する詳細については、「EMR Serverless API Reference
Amazon S3 に書き込むすべてのデータの AWS KMS 暗号化を有効にするには、StartJobRun
API を呼び出すときに次のコマンドを使用します。
--conf spark.hadoop.fs.s3.enableServerSideEncryption=true --conf spark.hadoop.fs.s3.serverSideEncryption.kms.keyId=
<kms_id>
特定のバケットに書き込むデータの AWS KMS 暗号化を有効にするには、StartJobRun
API を呼び出すときに次のコマンドを使用します。
--conf spark.hadoop.fs.s3.bucket.
<amzn-s3-demo-bucket1>
.enableServerSideEncryption=true --conf spark.hadoop.fs.s3.bucket.<amzn-s3-demo-bucket1>
.serverSideEncryption.kms.keyId=<kms-id>
SSE とお客様が用意したキーとの組み合わせ (SSE-C) は、EMR Serverless では使用できません。
Amazon S3 クライアント側の暗号化
Amazon S3 のクライアント側の暗号化を使用すると、Amazon S3 の暗号化と復号は、すべての Amazon EMR リリースで利用可能な EMRFS クライアントで行われます。オブジェクトは Amazon S3 にアップロードされる前に暗号化され、ダウンロード後に復号化されます。指定するプロバイダーが、クライアントが使用する暗号化キーを提供します。クライアントは、AWS KMS によって提供されるキー (CSE-KMS) か、クライアント側のルートキーを提供するカスタム Java クラス (CSE-C) を使用できます。CSE-KMS と CSE-C では、指定するプロバイダーと、復号化または暗号化されるオブジェクトのメタデータに応じて、暗号化の仕様が少し異なります。カスタマーマネージドキーで Amazon S3 CSE を使用する場合、EMR Serverless アプリケーションでジョブを実行するために使用される実行ロールは、キーにアクセスできる必要があります。追加の KMS 料金が適用される場合があります。これらの差異に関する詳細は、「Amazon Simple Storage Service デベロッパーガイド」の「クライアント側の暗号化を使用したデータの保護」を参照してください。
ローカルディスク暗号化
エフェメラルストレージに保存されているデータは、業界標準の AES-256 暗号化アルゴリズムを使用して、サービス所有のキーで暗号化されます。
キー管理
KMS キーを自動的にローテーションするように KMS を設定できます。これにより、古いキーを無期限に保存しながら、年に一度、キーをローテーションして、データを復号することができます。詳細については、「カスタマーマスターキーのローテーション」を参照してください。
転送中の暗号化
Amazon EMR Serverless では、以下のアプリケーション固有の暗号化機能を使用できます。
-
Spark
-
デフォルトでは、Spark ドライバーとエグゼキュター間の通信は認証された内部通信です。ドライバーとエグゼキュター間の RPC 通信は暗号化されます。
-
-
[Hive]
-
AWS Glue メタストアと EMR Serverless アプリケーション間の通信は TLS を介して行われます。
-
Amazon S3 バケット IAM ポリシーで aws:SecureTransport 条件を使用して、HTTPS (TLS) を介した暗号化接続のみを許可してください。