

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

# Amazon EMR による保管中と転送中のデータの暗号化
<a name="emr-data-encryption"></a>

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

Amazon EMR バージョン 4.8.0 から、Amazon EMR セキュリティ設定を使用して、クラスターのデータ暗号化設定をより簡単に行うことができます。セキュリティ設定は、Amazon Elastic Block Store (Amazon EBS) ボリュームおよび Amazon S3 の EMRFS で伝送時のデータと保管時のデータに対するセキュリティを有効にするオプションを提供します。

必要に応じて、Amazon EMR リリースバージョン 4.1.0 以降では、セキュリティ設定を使用して設定されていない、HDFS での透過的暗号化を設定できます。詳細については、「*Amazon EMR リリースガイド*」の「[Transparent encryption in HDFS on Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-encryption-tdehdfs.html)」を参照してください。

**Topics**
+ [Amazon EMR 暗号化オプション](emr-data-encryption-options.md)
+ [EMR WAL サービスのカスタマー KMS キーを使用した保管時の暗号化](encryption-at-rest-kms.md)
+ [Amazon EMR でデータ暗号化に必要なキーと証明書を作成する](emr-encryption-enable.md)
+ [転送中の暗号化について](emr-encryption-support-matrix.md)

# Amazon EMR 暗号化オプション
<a name="emr-data-encryption-options"></a>

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

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

![\[Amazon EMR では、転送時および保管時の暗号化オプションがいくつかあります。\]](http://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/images/emr-encryption-options.png)


以下の暗号オプションも使用できます。また、セキュリティ設定では設定できません。
+ Amazon EMR のバージョン 4.1.0 以降では、必要に応じて、HDFS で透過的データ暗号化の設定を選択することもできます。詳細については、「*Amazon EMR リリースガイド*」の「[Transparent encryption in HDFS on Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-encryption-tdehdfs.html)」を参照してください。
+ セキュリティ設定をサポートしていない Amazon EMR のリリースバージョンを使用している場合は、手動で Amazon S3 の EMRFS データの暗号化を設定できます。詳細については、「[EMRFS プロパティを使用して Amazon S3 の暗号化を指定する](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-emrfs-encryption.html)」を参照してください。
+  5.24.0 より前の Amazon EMR バージョンを使用している場合、暗号化された EBS ルートデバイスボリュームは、カスタム AMI を使用する場合にのみサポートされます。詳細については、「*Amazon EMR 管理ガイド*」の「[暗号化された Amazon EBS ルートデバイスボリュームを使用してカスタム AMI を作成する](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-custom-ami.html#emr-custom-ami-encrypted)」を参照してください。

**注記**  
Amazon EMR バージョン 5.24.0 以降では、 をキープロバイダー AWS KMS として指定すると、セキュリティ設定オプションを使用して EBS ルートデバイスとストレージボリュームを暗号化できます。詳細については、「[ローカルディスク暗号化](#emr-encryption-localdisk)」を参照してください。

データの暗号化には、キーと証明書が必要です。セキュリティ設定を使用すると、 が管理するキー、Amazon S3 が管理するキー AWS Key Management Service、提供するカスタムプロバイダーのキーと証明書など、複数のオプションから柔軟に選択できます。をキープロバイダー AWS KMS として使用する場合、暗号化キーのストレージと使用には料金が適用されます。詳細については、[AWS KMS 料金表](https://aws.amazon.com/kms/pricing/)を参照してください。

暗号化オプションを指定する前に、使用するキーと証明書の管理システムを決定します。これにより、暗号化設定の一部として指定するキーと証明書、またはカスタムプロバイダーをまず作成できます。

## Amazon S3 内に保管中の EMRFS データの暗号化
<a name="emr-encryption-s3"></a>

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 ユーザーガイド*」の「[暗号化によるデータの保護](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html)」を参照してください。

**注記**  
を使用する場合 AWS KMS、暗号化キーのストレージと使用には料金が適用されます。詳細については、「[AWS KMS 料金](https://aws.amazon.com/kms/pricing/)」を参照してください。

### Amazon S3 のサーバー側の暗号化
<a name="emr-encryption-s3-sse"></a>

すべての Amazon S3 バケットにはデフォルトで暗号化が設定されており、S3 バケットにアップロードされたすべての新しいオブジェクトは保管時に自動的に暗号化されます。Amazon S3 は、ディスクにデータを書き込むときにオブジェクトレベルでデータを暗号化し、アクセス時にデータを復号します。SSE に関する詳細は、「*Amazon Simple Storage Service ユーザーガイド*」の「[サーバー側の暗号化を使用したデータの保護](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)」を参照してください。

Amazon EMR で SSE を指定するときに、次の 2 つの異なるキー管理システムから選択できます。
+ **SSE-S3** — Amazon S3 がキーを管理します。
+ **SSE-KMS** – を使用して AWS KMS key 、Amazon EMR に適したポリシーをセットアップします。Amazon EMR の主要な要件の詳細については、[「暗号化 AWS KMS keys に を使用する](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-awskms-keys)」を参照してください。

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

### Amazon S3 クライアント側の暗号化
<a name="emr-encryption-s3-cse"></a>

Amazon S3 のクライアント側の暗号化を使用すると、Amazon S3 の暗号化と復号はクラスターの EMRFS クライアントで行われます。オブジェクトは Amazon S3 にアップロードされる前に暗号化され、ダウンロード後に復号化されます。指定するプロバイダーが、クライアントが使用する暗号化キーを提供します。クライアントは、 AWS KMS によって提供されるキー (CSE-KMS) か、クライアント側のルートキーを提供するカスタム Java クラス (CSE-C) を使用できます。CSE-KMS と CSE-C では、指定するプロバイダーと、復号化または暗号化されるオブジェクトのメタデータに応じて、暗号化の仕様が少し異なります。これらの差異に関する詳細は、「*Amazon Simple Storage Service ユーザーガイド*」の「[クライアント側の暗号化を使用したデータの保護](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html)」を参照してください。

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

## Amazon EMR WAL 内に保管中のデータ暗号化
<a name="emr-encryption-wal"></a>

先書きログ記録 (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 に適用されるポリシーを設定します。カスタマー KMS キーを使用して EMR WAL の保管時の暗号化を設定する方法の詳細については、「[Encryption at rest using a customer KMS key for the EMR WAL service](https://docs.aws.amazon.com/emr/latest/ManagementGuide/encryption-at-rest-kms.html)」を参照してください。

**注記**  
Amazon EMR で WAL を有効にすると、SSE で独自のキーを使用することはできません。詳細については、「[Write-ahead logs (WAL) for Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hbase-wal.html)」を参照してください。

## ローカルディスク暗号化
<a name="emr-encryption-localdisk"></a>

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

### オープンソースの HDFS 暗号化
<a name="w2aac30c19c13c11c23b5"></a>

HDFS は、分散処理中にクラスターインスタンス間でデータを交換します。また、インスタンスストアボリュームと、インスタンスにアタッチされた EBS ボリュームとの間でデータを読み書きします。ローカルディスク暗号化を有効にすると、次のオープンソース Hadoop 暗号化オプションがアクティブになります。
+ [セキュア Hadoop RPC](https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SecureMode.html#Data_Encryption_on_RPC) は `Privacy` に設定され、単純認証とセキュリティ層 (SASL、Simple Authentication Security Layer) が使用されます。
+ [HDFS ブロックデータ転送時のデータ暗号化](https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SecureMode.html#Data_Encryption_on_Block_data_transfer.)は `true` に設定され、AES 256 暗号化を使用するように設定されます。

**注記**  
追加の Apache Hadoop 暗号化をアクティブ化するには、転送時の暗号化を有効にします。詳細については、「[転送中の暗号化](#emr-encryption-intransit)」を参照してください。これらの暗号化設定では、HDFS 透過的暗号化はアクティブにされず、手動で設定することができます。詳細については、「*Amazon EMR リリースガイド*」の「[Transparent encryption in HDFS on Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-encryption-tdehdfs.html)」を参照してください。

### インスタンスストアの暗号化
<a name="w2aac30c19c13c11c23b7"></a>

NVMe ベースの SSD をインスタンスストアボリュームとして使用する EC2 インスタンスタイプでは、Amazon EMR 暗号化設定に関係なく NVMe 暗号化が使用されます。詳細については、「*Amazon EC2 ユーザーガイド*」の「[NVMe SSD ボリューム](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html#nvme-ssd-volumes)」を参照してください。他のインスタンスストアボリュームの場合、Amazon EMR は、EBS ボリュームが EBS 暗号化と LUKS のどちらを使用して暗号化されているかにかかわらず、ローカルディスクの暗号化が有効になると、LUKS を使用してインスタンスストアボリュームを暗号化します。

### EBS ボリュームの暗号化
<a name="w2aac30c19c13c11c23b9"></a>

アカウントで EBS ボリュームの Amazon EC2 暗号化がデフォルトで有効になっているリージョンにクラスターを作成する場合、ローカルディスクの暗号化が有効になっていなくても EBS ボリュームは暗号化されます。詳細については、*「Amazon EC2 ユーザーガイド*」の「[Encryption by default](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default)」を参照してください。セキュリティ設定でローカルディスクの暗号化が有効になっている場合、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](https://gitlab.com/cryptsetup/cryptsetup/wikis/Specification)」を参照してください。

  キープロバイダーの場合、Amazon EMR に適したポリシー、または暗号化アーティファクトを提供するカスタム Java クラス AWS KMS key を使用して を設定できます。を使用すると AWS KMS、暗号化キーのストレージと使用に対して料金が適用されます。詳細については、「[AWS KMS 料金表](https://aws.amazon.com/kms/pricing/)」を参照してください。

**注記**  
クラスターで EBS 暗号化が有効になっているかどうかを確認するには、`DescribeVolumes` API コールを使用することをお勧めします。詳細については、「[DescribeVolumes](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeVolumes.html)」を参照してください。クラスターで `lsblk` を実行すると、EBS 暗号化ではなく LUKS 暗号化のステータスのみが確認されます。

## 転送中の暗号化
<a name="emr-encryption-intransit"></a>

転送時の暗号化では、複数の暗号化メカニズムが有効になります。これらはオープンソース機能であり、アプリケーション固有のもので、Amazon EMR リリースによって異なる可能性があります。転送中の暗号化を有効にするには、Amazon EMR で [Amazon EMR コンソールまたは を使用してセキュリティ設定を作成する AWS CLI](emr-create-security-configuration.md) を使用します。転送中の暗号化が有効になっている EMR クラスターの場合、Amazon EMR は転送中の暗号化を有効にするようにオープンソースのアプリケーション設定を自動的に設定します。高度なユースケースでは、Amazon EMR のデフォルトの動作を上書きするようにオープンソースのアプリケーション設定を直接設定できます。詳細については、「[in-transit encryption support matrix](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-support-matrix.html)」および「[Configure applications](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html)」を参照してください。

転送中の暗号化に関連するオープンソースアプリケーションの詳細については、以下を参照してください。
+ セキュリティ設定で転送中の暗号化を有効にすると、Amazon EMR は転送中の暗号化をサポートするすべてのオープンソースアプリケーションエンドポイントの転送中の暗号化を有効にします。さまざまなアプリケーションエンドポイントの転送中の暗号化のサポートは、Amazon EMR リリースバージョンによって異なります。詳細については、「[転送中の暗号化サポートマトリックス](https://docs.aws.amazon.com/)」を参照してください。
+ オープンソース設定を上書きすることで、以下を実行できます。
  + ユーザーが提供する TLS 証明書が要件を満たしていない場合は、TLS ホスト名の検証を無効にする
  + パフォーマンスと互換性の要件に基づいて、特定のエンドポイントの転送中の暗号化を無効にする
  + 使用する TLS バージョンと暗号スイートを制御する。

  アプリケーション固有の設定の詳細については、「[転送中の暗号化サポートマトリックス](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-support-matrix.html)」を参照してください。
+ セキュリティ設定で転送中の暗号化を有効にすることに加えて、一部の通信チャネルでは、転送中の暗号化を有効にするために追加のセキュリティ設定も必要です。例えば、一部のオープンソースアプリケーションエンドポイントでは、転送中の暗号化に Simple Authentication and Security Layer (SASL) を使用します。そのためには、EMR クラスターのセキュリティ設定で Kerberos 認証を有効にする必要があります。これらのエンドポイントの詳細については、「[転送中の暗号化サポートマトリックス](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-support-matrix.html)」を参照してください。
+ 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 暗号化を使用して転送中のデータを暗号化するための証明書の提供](emr-encryption-enable.md#emr-encryption-certificates)」を参照してください。

# EMR WAL サービスのカスタマー KMS キーを使用した保管時の暗号化
<a name="encryption-at-rest-kms"></a>

EMR 先行書き込みログ (WAL) は、お客様の encryption-at-rest をサポートします。Amazon EMR WAL と AWS KMSの統合方法の概要を以下に示します:

EMR 先行書き込みログ (WAL) は`CreateWAL`、デフォルトで `TrimWAL`を介して `ReplayEdits`、、、、`AppendEdit``ArchiveWALCheckPoint``CompleteWALFlush``DeleteWAL``GetCurrentWALTime`、、 オペレーション AWS 中に とやり取りします。リストされた以前のオペレーションが呼び出されると、EMR WAL は `EMR_EC2_DefaultRole` KMS キー`GenerateDataKey`に対して `Decrypt`および を実行します。

## 考慮事項
<a name="encryption-at-rest-considerations"></a>

EMR WAL で AWS KMS ベースの暗号化を使用する場合は、次の点を考慮してください。
+ EMR WAL の作成後に暗号化設定を変更できません。
+ 独自の KMS キーで EMR 暗号化を使用する場合、そのキーは Amazon EMR クラスタークラスターと同じリージョンに存在する必要があります。
+ 必要なすべての IAM アクセス許可を維持する責任があり、WAL の有効期間中は必要なアクセス許可を取り消しないことをお勧めします。そうしないと、関連する暗号化キーが存在しないため、EMR WAL を削除できないなどの予期しない障害シナリオが発生します。
+  AWS KMS キーの使用にはコストがかかります。詳細については、[AWS Key Management Service 料金表](https://aws.amazon.com/kms/pricing/)を参照してください。

## 必要な IAM 許可
<a name="encryption-at-rest-required-iam-permissions"></a>

カスタマー KMS キーを使用して保管中の EMR WAL を暗号化するには、EMR WAL クライアントロール と EMR WAL サービスプリンシパル `emrwal.amazonaws.com` に適切なアクセス許可を設定する必要があります。

### EMR WAL クライアントロールのアクセス許可
<a name="encryption-at-rest-permissions-client-role"></a>

以下は、EMR WAL クライアントロールに必要な IAM ポリシーです:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey*"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowKMSDecrypt"
    }
  ]
}
```

------

EMR クラスターの EMR WAL クライアントは、デフォルトで `EMR_EC2_DefaultRole` を使用します。EMR クラスターのインスタンスプロファイルに別のロールを使用する場合は、各ロールに適切なアクセス許可があることを確認してください。

ロールポリシーの管理の詳細については、「[IAM ID のアクセス許可の追加および削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」を参照してください。

### KMS キーポリシーのアクセス許可
<a name="encryption-at-rest-permissions-kms-key-policy"></a>

KMS ポリシーで EMR WAL クライアントロールと EMR WAL サービス `Decrypt` と `GenerateDataKey*` アクセス許可を付与する必要があります。キーポリシー管理の詳細については、「[KMS key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)」を参照してください。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey*"
      ],
      "Resource": [
        "arn:aws:kms:*:123456789012:key/*"
      ],
      "Sid": "AllowKMSDecrypt"
    }
  ]
}
```

------

デフォルトのロールを変更することにより、スニペットで指定されたロールが変更される可能性があります。

## との Amazon EMR WAL インタラクションのモニタリング AWS KMS
<a name="encryption-at-rest-monitoring-emr-wal-kms"></a>

### Amazon EMR WAL 暗号化コンテキスト
<a name="encryption-at-rest-encryption-context"></a>

暗号化コンテキストは、シークレットデータを含まない一連のキーと値のペアです。データを暗号化するリクエストに暗号化コンテキストを含めると、 は暗号化コンテキストを暗号化されたデータに AWS KMS 暗号化バインドします。データを復号するには、同じ暗号化コンテキストに渡す必要があります。

Amazon EMR WAL は 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) リクエストで、EMR WAL 名を識別する 1 つの名前と値のペアを持つ暗号化コンテキストを使用します。

```
"encryptionContext": {
    "aws:emrwal:walname": "111222333444555-testworkspace-emrwalclustertest-emrwaltestwalname"
}
```

暗号化コンテキストを使用して、 AWS CloudTrail や [Amazon CloudWatch Logs](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) などの監査レコードとログでこれらの暗号化オペレーションを識別し、ポリシーと許可で認可の条件として識別できます。

# Amazon EMR でデータ暗号化に必要なキーと証明書を作成する
<a name="emr-encryption-enable"></a>

セキュリティ設定を使用して暗号化オプションを指定する場合は、その前に、キーや暗号化アーティファクトの提供元として使用したいプロバイダーを決定します。たとえば、 AWS KMS または作成したカスタムプロバイダーを使用できます。次に、このセクションで説明する方法に沿ってキーまたはキープロバイダーを作成します。

## 保管中のデータ暗号化用キーの提供
<a name="emr-encryption-create-keys"></a>

Amazon EMR の保管時のデータ暗号化には AWS Key Management Service 、 (AWS KMS) またはカスタムキープロバイダーを使用できます。を使用する場合 AWS KMS、暗号化キーのストレージと使用には料金が適用されます。詳細については、[AWS KMS 料金表](https://aws.amazon.com/kms/pricing/)を参照してください。

このトピックでは、Amazon EMR で使用する KMS キーのキーポリシーの詳細と、Amazon S3 暗号化のカスタムキープロバイダークラスを作成するためのガイドラインおよびコードサンプルを示します。キーの作成の詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[キーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)」を参照してください。

### 暗号化 AWS KMS keys に を使用する
<a name="emr-awskms-keys"></a>

 AWS KMS 暗号化キーは、Amazon EMR クラスターインスタンスおよび EMRFS で使用される Amazon S3 バケットと同じリージョンに作成する必要があります。指定するキーが、クラスターの設定に使用するアカウントとは異なるアカウントにある場合は、その ARN を使用してキーを指定する必要があります。

Amazon EC2 インスタンスプロファイルのロールには、指定した KMS キーを使用するためのアクセス許可が必要です。Amazon EMR 内のインスタンスプロファイルのデフォルトのロールは `EMR_EC2_DefaultRole` です。インスタンスプロファイルに別のロールを使用する場合、または Amazon S3 への EMRFS リクエストに IAM ロールを使用する場合は、必要に応じて各ロールがキーユーザーとして追加されていることを確認してください。これにより、KMS キーを使用するアクセス許可がロールに付与されます。詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[キーポリシーの使用](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-users)」と、「[Amazon S3 への EMRFS リクエストの IAM ロールの設定](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-emrfs-iam-roles.html)」を参照してください。

を使用して AWS マネジメントコンソール 、指定した KMS キーのキーユーザーのリストにインスタンスプロファイルまたは EC2 インスタンスプロファイルを追加するか、 AWS CLI または AWS SDK を使用して適切なキーポリシーをアタッチできます。

Amazon EMR は、[対称 KMS キー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks)のみをサポートします。[非対称 KMS キー](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html#asymmetric-cmks)を使用して、Amazon EMR クラスター内の保管中のデータを暗号化することはできません。KMS キーが対称か非対称かを判別するには、「[対称および非対称 KMS キーを識別する](https://docs.aws.amazon.com/kms/latest/developerguide/find-symm-asymm.html)」を参照してください。

以下の手順では、 AWS マネジメントコンソールを使用して、デフォルトの Amazon EMR インスタンスプロファイル、`EMR_EC2_DefaultRole` を*キーユーザー*として追加する方法について説明します。既に KMS キーが作成されていることを前提としています。新しい KMS キーを作成するには、「*AWS Key Management Service デベロッパーガイド*」の「[Creating Keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)」を参照してください。

**暗号化キーユーザーのリストに Amazon EMR の EC2 インスタンスプロファイルを追加するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) で AWS Key Management Service (AWS KMS) コンソールを開きます。

1. を変更するには AWS リージョン、ページの右上隅にあるリージョンセレクターを使用します。

1. 変更する KMS キーのエイリアスを選択します。

1. [**Key Users**] のキーの詳細ページで、[**Add**] を選択します。

1. [**Add key users**] ダイアログボックスで、適切なロールを選択します。デフォルトロールの名前は `EMR_EC2_DefaultRole` です。

1. **[Add]** (追加) を選択します。

### KMS キーに追加のアクセス許可を提供して EBS 暗号化を有効にする
<a name="emr-awskms-ebs-encryption"></a>

Amazon EMR バージョン 5.24.0 から、セキュリティ設定オプションを使用して EBS ルートデバイスとストレージボリュームを暗号化できます。このようなオプションを有効にするには、キープロバイダー AWS KMS として を指定する必要があります。さらに、 AWS KMS key 指定した を使用するためのアクセス許可`EMR_DefaultRole`をサービスロールに付与する必要があります。

を使用して AWS マネジメントコンソール 、指定された KMS キーのキーユーザーのリストにサービスロールを追加するか、 AWS CLI または AWS SDK を使用して適切なキーポリシーをアタッチできます。

次の手順では、 を使用してデフォルトの Amazon EMR サービスロールを*キーユーザー*`EMR_DefaultRole`として AWS マネジメントコンソール 追加する方法について説明します。既に KMS キーが作成されていることを前提としています。新しい KMS キーを作成するには、「*AWS Key Management Service デベロッパーガイド*」の「[Creating Keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)」を参照してください。

**暗号化キーユーザーのリストに Amazon EMR サービスロールを追加するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) で AWS Key Management Service (AWS KMS) コンソールを開きます。

1. を変更するには AWS リージョン、ページの右上隅にあるリージョンセレクターを使用します。

1. 左サイドバーで **[Customer managed keys]** (カスタマー管理型のキー) を選択します。

1. 変更する KMS キーのエイリアスを選択します。

1. [**Key Users**] のキーの詳細ページで、[**Add**] を選択します。

1. **[キーユーザーの追加]** セクションで、適切なロールを選択します。Amazon EMR のデフォルトのサービスロールの名前は `EMR_DefaultRole` です。

1. **[Add]** (追加) を選択します。

### カスタムキープロバイダーの作成
<a name="emr-custom-keys"></a>

セキュリティ設定を使用する場合は、ローカルディスク暗号化と Amazon S3 暗号化用に異なるプロバイダークラス名を指定する必要があります。カスタムキープロバイダーの要件は、ローカルディスク暗号化と Amazon S3 暗号化のどちらを使用するか、および Amazon EMR リリースバージョンによって異なります。

カスタムキープロバイダーの作成時に使用する暗号化のタイプに応じて、アプリケーションは異なる EncryptionMaterialsProvider インターフェイスを実装する必要があります。どちらのインターフェイスも AWS SDK for Java バージョン 1.11.0 以降で使用できます。
+ Amazon S3 暗号化を実装するには、[com.amazonaws.services.s3.model.EncryptionMaterialsProvider インターフェイス](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/EncryptionMaterialsProvider.html)を使用します。
+ ローカルディスク暗号化を実装するには、[com.amazonaws.services.elasticmapreduce.spi.security.EncryptionMaterialsProvider インターフェイス](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/elasticmapreduce/spi/security/EncryptionMaterialsProvider.html)を使用します。

任意の戦略を使用して実装に暗号化マテリアルを提供できます。例えば、静的暗号化マテリアルを提供することも、より複雑な鍵管理システムと統合することも選択できます。

Amazon S3 暗号化を使用している場合は、カスタム暗号化マテリアルに暗号化アルゴリズム **AES/GCM/NoPadding** を使用する必要があります。

ローカルディスク暗号化を使用している場合、カスタム暗号化マテリアルに使用する暗号化アルゴリズムは EMR リリースによって異なります。Amazon EMR 7.0.0 以前では、**AES/GCM/NoPadding** を使用する必要があります。Amazon EMR 7.1.0 以降では、**AES** を使用する必要があります。

EncryptionMaterialsProvider クラスは、暗号化コンテキストによって暗号化マテリアルを取得します。Amazon EMR は、呼び出し元が返す正しい暗号化マテリアルを判別しやすいように、実行時に暗号化コンテキスト情報を設定します。

**Example 例: EMRFS での Amazon S3 の暗号化にカスタムキープロバイダを使用する**  
Amazon EMR が EncryptionMaterialsProvider クラスから暗号化マテリアルをフェッチして暗号化を実行するとき、EMRFS はオプションで materialsDescription 引数に 2 つのフィールド (オブジェクトの Amazon S3 URI とクラスターの JobFlowId) を設定します。これらを EncryptionMaterialsProvider クラスで使用して、暗号化マテリアルを選択的に返すことができます。  
たとえば、プロバイダは Amazon S3 URI プレフィックスごとに異なるキーを返すことができます。最終的に Amazon S3 オブジェクトに保存されるのは、EMRFS によって生成され、プロバイダに渡される materialsDescription 値ではなく、返された暗号化マテリアルの記述です。Amazon S3 オブジェクトの復号化中に、暗号化マテリアルの記述が EncryptionMaterialsProvider クラスに渡されるため、オブジェクトを複合するために一致するキーを再度選択的に返すことができます。  
参照のための EncryptionMaterialsProvider 実装を次に示します。別のカスタムプロバイダ [EMRFSRSAEncryptionMaterialsProvider](https://github.com/awslabs/emr-sample-apps/tree/master/emrfs-plugins/EMRFSRSAEncryptionMaterialsProvider) は GitHub から入手できます。  

```
import com.amazonaws.services.s3.model.EncryptionMaterials;
import com.amazonaws.services.s3.model.EncryptionMaterialsProvider;
import com.amazonaws.services.s3.model.KMSEncryptionMaterials;
import org.apache.hadoop.conf.Configurable;
import org.apache.hadoop.conf.Configuration;

import java.util.Map;

/**
 * Provides KMSEncryptionMaterials according to Configuration
 */
public class MyEncryptionMaterialsProviders implements EncryptionMaterialsProvider, Configurable{
  private Configuration conf;
  private String kmsKeyId;
  private EncryptionMaterials encryptionMaterials;

  private void init() {
    this.kmsKeyId = conf.get("my.kms.key.id");
    this.encryptionMaterials = new KMSEncryptionMaterials(kmsKeyId);
  }

  @Override
  public void setConf(Configuration conf) {
    this.conf = conf;
    init();
  }

  @Override
  public Configuration getConf() {
    return this.conf;
  }

  @Override
  public void refresh() {

  }

  @Override
  public EncryptionMaterials getEncryptionMaterials(Map<String, String> materialsDescription) {
    return this.encryptionMaterials;
  }

  @Override
  public EncryptionMaterials getEncryptionMaterials() {
    return this.encryptionMaterials;
  }
}
```

## Amazon EMR 暗号化を使用して転送中のデータを暗号化するための証明書の提供
<a name="emr-encryption-certificates"></a>

Amazon EMR リリースバージョン 4.8.0 以降では、下記の 2 つのオプションのいずれかにより、セキュリティ設定を使用して転送中のデータを暗号化するのに必要なアーティファクトを指定できます。
+ 手動で PEM 証明書を作成し、zip ファイルに含め、Amazon S3 から zip ファイルを参照できます。
+ Java クラスとしてカスタム証明書プロバイダーを実装できます。Amazon S3 でアプリケーションの JAR ファイルを指定し、アプリケーションで宣言したプロバイダーの完全なクラス名を提供します。このクラスには、[ バージョン 1.11.0 から利用可能な ](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/elasticmapreduce/spi/security/TLSArtifactsProvider.html)TLSArtifactsProvider AWS SDK for Java インターフェイスを実装する必要があります。

Amazon EMR はクラスターの各ノードに自動的にアーティファクトをダウンロードし、その後、それらのアーティファクトを使用してオープンソースの伝送中の暗号化機能を実装します。使用できるオプションの詳細については、[転送中の暗号化](emr-data-encryption-options.md#emr-encryption-intransit)を参照してください。

### PEM 証明書の使用
<a name="emr-encryption-pem-certificate"></a>

zip ファイルを指定して転送中のデータを暗号化する場合、セキュリティ設定は、zip ファイル内の PEM ファイルに下記の名前が正確に付されていることを要求します。


**伝送中の暗号化証明書**  

| ファイル名 | 必須/オプション | 詳細 | 
| --- | --- | --- | 
| privateKey.pem | 必須 | プライベートキー | 
| certificateChain.pem | 必須 | 証明書チェーン | 
| trustedCertificates.pem | オプションです。 | Java のデフォルトの信頼されたルート証明機関 (CA) によって証明されていない、または Java のデフォルトの信頼されたルート CA にリンクできる中間 CA によって署名されていない証明書の提供をお勧めします。ワイルドカード証明書を使用したり、ホスト名の検証を無効にしたりしている場合、パブリック CA を使用することは推奨しません。 | 

プライベートキー PEM ファイルは、クラスターインスタンスが存在する Amazon VPC ドメインへのアクセスを有効にするワイルドカード証明書として設定するようにします。たとえば、クラスターが us-east-1 (N. Virginia) に存在する場合、証明書件名定義で `CN=*.ec2.internal` を指定して、クラスターへのアクセスが可能になるよう、証明書設定で共通の名前を指定することができます。クラスターが us-west-2 (オレゴン) に存在する場合、`CN=*.us-west-2.compute.internal` を指定できます。

暗号化アーティファクトで指定された PEM ファイルに共通名のドメインのワイルドカード文字がない場合は、 の値を `hadoop.ssl.hostname.verifier` に変更する必要があります`ALLOW_ALL`。Amazon EMR リリース 7.3.0 以降でこれを行うには、クラスターに設定を送信するときに `core-site` 分類を追加します。7.3.0 より前のリリースでは、設定 `"hadoop.ssl.hostname.verifier": "ALLOW_ALL"` を `core-site.xml` ファイルに直接追加します。この変更は、クラスター内のすべてのホストがワイルドカードを使用するので、デフォルトのホスト名検証子がワイルドカードなしでホスト名を必要とするためです。Amazon VPC 内の EMR クラスター設定の詳細については、「[Amazon EMR 用の VPC でネットワークを設定する](emr-plan-vpc-subnet.md)」を参照してください。

次の例は、[OpenSSL](https://www.openssl.org/) を使用して、2048-bit RSA プライベートキーの自己署名 X.509 証明書を生成する方法を示しています。キーにより、共通名として `*.us-west-2.compute.internal` ドメイン名で指定された `us-west-2` (オレゴン) リージョンにある発行者の Amazon EMR クラスターインスタンスへのアクセスが可能になります。

国 (C)、州 (S) およびロケール (L) といった他のオプション項目も指定されます。自己署名証明書が生成されるため、例の 2 番目のコマンドでは、`certificateChain.pem` ファイルを `trustedCertificates.pem` ファイルにコピーします。3 番目のコマンドでは、`zip` を使って証明書を含む `my-certs.zip` ファイルを作成します。



**重要**  
この例では、概念実証デモのみです。自己署名証明書の使用は推奨されておらず、セキュリティリスクが生じる可能性があります。本番システムでは、証明書の発行で信頼できる認証機関 (CA) を使用してください。

```
$ openssl req -x509 -newkey rsa:2048 -keyout privateKey.pem -out certificateChain.pem -days 365 -nodes -subj '/C=US/ST=Washington/L=Seattle/O=MyOrg/OU=MyDept/CN=*.us-west-2.compute.internal'
$ cp certificateChain.pem trustedCertificates.pem
$ zip -r -X my-certs.zip certificateChain.pem privateKey.pem trustedCertificates.pem
```

# 転送中の暗号化について
<a name="emr-encryption-support-matrix"></a>

[Apache Spark](https://aws.amazon.com/emr/features/spark/)、[Apache Hive](https://aws.amazon.com/emr/features/hive/)、[Presto](https://aws.amazon.com/emr/features/presto/) などのオープンソースフレームワークを実行するように EMR クラスターを設定できます。これらのオープンソースフレームワークには、クラスターの EC2 インスタンスで実行される一連のプロセスがあります。これらのプロセスはそれぞれ、ネットワーク通信用のネットワークエンドポイントをホストできます。

EMR クラスターで転送中の暗号化が有効になっている場合、ネットワークエンドポイントによって暗号化メカニズムが異なります。転送中の暗号化でサポートされる特定のオープンソースフレームワークネットワークエンドポイント、関連する暗号化メカニズム、およびサポートを追加した Amazon EMR リリースの詳細については、以下のセクションを参照してください。各オープンソースアプリケーションには、変更できるさまざまなベストプラクティスとオープンソースフレームワーク設定がある場合もあります。

 ほとんどの転送中の暗号化範囲では、転送中の暗号化と Kerberos の両方を有効にすることをお勧めします。転送中の暗号化のみを有効にすると、転送中の暗号化は TLS をサポートするネットワークエンドポイントでのみ使用できます。一部のオープンソースフレームワークのネットワークエンドポイントでは、転送中の暗号化に Simple Authentication and Security Layer (SASL) を使用するため、Kerberos が必要です。

Amazon EMR 7.x.x リリースでサポートされていないオープンソースフレームワークは含まれていないことに注意してください。

## Spark
<a name="emr-encryption-support-matrix-spark"></a>

セキュリティ設定で転送中の暗号化を有効にすると、`spark.authenticate` は自動的に `true` に設定され、RPC 接続に AES ベースの暗号化が使用されます。

Amazon EMR 7.3.0 以降では、転送中の暗号化と Kerberos 認証を使用している場合、Hive メタストアに依存する Spark アプリケーションは使用できません。Hive 3 は、[HIVE-16340](https://issues.apache.org/jira/browse/HIVE-16340) でこの問題を修正しました。オープンソースの Spark が Hive 3 にアップグレードできる場合、[HIVE-44114](https://issues.apache.org/jira/browse/SPARK-44114) はこの問題を完全に解決します。その間、`hive.metastore.use.SSL` を `false` に設定することで、この問題を回避できます。詳細については、「[アプリケーションの設定](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html)」を参照してください。

詳細については、Apache Spark ドキュメントの「[Spark security](https://spark.apache.org/docs/latest/security)」を参照してください。


| コンポーネント | Endpoint | ポート | 転送中の暗号化メカニズム | リリースからサポート | 
| --- | --- | --- | --- | --- | 
|  Spark History Server  |  spark.ssl.history.port  |  18480  |  TLS  |  emr-5.3.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
|  Spark UI  |  spark.ui.port  |  4440  |  TLS  |  emr-5.3.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
|  Spark ドライバー  |  spark.driver.port  |  動的  |  Spark AES ベースの暗号化  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
|  Spark Executor  |  Executor ポート (名前なし構成)  |  動的  |  Spark AES ベースの暗号化  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
|  YARN NodeManager  |  spark.shuffle.service.port1  |  7337  |  Spark AES ベースの暗号化  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 

1`spark.shuffle.service.port` は YARN NodeManager でホストされますが、Apache Spark でのみ使用されます。

**[既知の問題]**

転送時に有効になっているクラスター `spark.yarn.historyServer.address` 設定は現在ポート `18080` を使用しています。これにより、YARN 追跡 URL を使用した spark アプリケーション UI へのアクセスが防止されます。**影響を受けるバージョン:** EMR - 7.3.0〜EMR - 7.9.0。

以下の回避策を使用します:

1. `/etc/spark/conf/spark-defaults.conf` で `spark.yarn.historyServer.address` 設定を変更して、実行中のクラスターの `HTTPS` ポート番号 `18480` を使用します。

1. これは、クラスターの起動中に設定オーバーライドで提供することもできます。

設定例:

```
[
                               {
                                 "Classification": "spark-defaults",
                                 "Properties": {
                                     "spark.yarn.historyServer.address": "${hadoopconf-yarn.resourcemanager.hostname}:18480"
                                 }
                               }
  
                               ]
```

## Hadoop YARN
<a name="emr-encryption-support-matrix-hadoop-yarn"></a>

[Secure Hadoop RPC](https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SecureMode.html#Data_Encryption_on_RPC) は `privacy` に設定され、SASL ベースの転送中の暗号化を使用します。これには、セキュリティ設定で Kerberos 認証が有効になっている必要があります。Hadoop RPC の転送中の暗号化を希望しない場合は、`hadoop.rpc.protection = authentication` を設定します。セキュリティを最大化するには、デフォルト設定を使用することをお勧めします。

TLS 証明書が TLS ホスト名の検証要件を満たしていない場合は、`hadoop.ssl.hostname.verifier = ALLOW_ALL` を設定できます。TLS ホスト名の検証を強制する `hadoop.ssl.hostname.verifier = DEFAULT` のデフォルト設定を使用することをお勧めします。

YARN ウェブアプリケーションエンドポイントの HTTPS を無効にするには、`yarn.http.policy = HTTP_ONLY` を設定します。これにより、これらのエンドポイントへのトラフィックが暗号化されないままになります。セキュリティを最大化するには、デフォルト設定を使用することをお勧めします。

詳細については、Apache Hadoop ドキュメントの「[Hadoop in secure mode](https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SecureMode.html)」を参照してください。


| コンポーネント | Endpoint | ポート | 転送中の暗号化メカニズム | リリースからサポート | 
| --- | --- | --- | --- | --- | 
| ResourceManager |  yarn.resourcemanager.webapp.address  |  8088  |  TLS  |  emr-7.3.0\$1  | 
| ResourceManager |  yarn.resourcemanager.resource-tracker.address  |  8025  |  SASL \$1 Kerberos  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
| ResourceManager |  yarn.resourcemanager.scheduler.address  |  8030  |  SASL \$1 Kerberos  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
| ResourceManager |  yarn.resourcemanager.address  |  8032  |  SASL \$1 Kerberos  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
| ResourceManager |  yarn.resourcemanager.admin.address  |  8033  |  SASL \$1 Kerberos  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
| TimelineServer |  yarn.timeline-service.address  |  10200  |  SASL \$1 Kerberos  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
| TimelineServer |  yarn.timeline-service.webapp.address  |  8188  |  TLS  |  emr-7.3.0\$1  | 
|  WebApplicationProxy  |  yarn.web-proxy.address  |  20888  |  SASL \$1 Kerberos  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
|  NodeManager  |  yarn.nodemanager.address  |  8041  |  SASL \$1 Kerberos  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
|  NodeManager  |  yarn.nodemanager.localizer.address  |  8040  |  SASL \$1 Kerberos  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
|  NodeManager  |  yarn.nodemanager.webapp.address  |  8044  |  TLS  |  emr-7.3.0\$1  | 
|  NodeManager  |  mapreduce.shuffle.port1  |  13562  |  TLS  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
|  NodeManager  |  spark.shuffle.service.port2  |  7337  |  Spark AES ベースの暗号化  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 

1 `mapreduce.shuffle.port` は YARN NodeManager でホストされますが、Hadoop MapReduce でのみ使用されます。

2`spark.shuffle.service.port` は YARN NodeManager でホストされますが、Apache Spark でのみ使用されます。

**[既知の問題]**

`yarn.log.server.url` 設定では、現在ポート 19888 で HTTP を使用しています。これにより、Resource Manager UI からアプリケーションログにアクセスできなくなります。**影響を受けるバージョン:** EMR - 7.3.0〜EMR - 7.8.0。

以下の回避策を使用します:

1. `HTTPS` プロトコルとポート番号 `19890` を使用するように `yarn-site.xml` の `yarn.log.server.url` 設定を変更します。

1. YARN リソースマネージャーを再起動します: `sudo systemctl restart hadoop-yarn-resourcemanager.service`。

## Hadoop HDFS
<a name="emr-encryption-support-matrix-hadoop-hdfs"></a>

EMR クラスターで転送中の暗号化が有効になっている場合、Hadoop ネームノード、データノード、ジャーナルノードはすべてデフォルトで TLS をサポートします。

[Secure Hadoop RPC](https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SecureMode.html#Data_Encryption_on_RPC) は `privacy` に設定され、SASL ベースの転送中の暗号化を使用します。これには、セキュリティ設定で Kerberos 認証が有効になっている必要があります。

HTTPS エンドポイントに使用されるデフォルトのポートを変更しないことをお勧めします。

[HDFS ブロックのデータ転送でのデータ暗号化](https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SecureMode.html#Data_Encryption_on_Block_data_transfer.)では、AES 256 が使用され、セキュリティ設定で保管時の暗号化を有効にする必要があります。

詳細については、Apache Hadoop ドキュメントの「[Hadoop in secure mode](https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SecureMode.html)」を参照してください。


| コンポーネント | Endpoint | ポート | 転送中の暗号化メカニズム | リリースからサポート | 
| --- | --- | --- | --- | --- | 
|  Namenode  |  dfs.namenode.https-address  |  9871  |  TLS  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
|  Namenode  |  dfs.namenode.rpc-address  |  8020  |  SASL \$1 Kerberos  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
|  Datanode  |  dfs.datanode.https.address  |  9865  |  TLS  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
|  Datanode  |  dfs.datanode.address  |  9866  |  SASL \$1 Kerberos  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
|  Journal Node  |  dfs.journalnode.https-address  |  8481  |  TLS  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
|  Journal Node  |  dfs.journalnode.rpc-address  |  8485  |  SASL \$1 Kerberos  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
|  DFSZKFailoverController  |  dfs.ha.zkfc.port  |  8019  |  なし  |  ZKFC の TLS は Hadoop 3.4.0 でのみサポートされています。詳細については、「[HADOOP-18919](https://issues.apache.org/jira/browse/HADOOP-18919)」を参照してください。Amazon EMR リリース 7.1.0 は現在 Hadoop 3.3.6 に対応しています。将来の Amazon EMR のリリースは Hadoop 3.4.0 に対応していきます。  | 

## Hadoop MapReduce
<a name="emr-encryption-support-matrix-hadoop-mapreduce"></a>

EMR クラスターで転送中の暗号化が有効になっている場合、Hadoop MapReduce、ジョブ履歴サーバー、MapReduce はすべてデフォルトで TLS をサポートします。

[Hadoop MapReduce Encrypted Shuffle](https://hadoop.apache.org/docs/r2.7.1/hadoop-mapreduce-client/hadoop-mapreduce-client-core/EncryptedShuffle.html) では TLS が使用されます。

HTTPS エンドポイントのデフォルトポートを変更しないことをお勧めします。

詳細については、Apache Hadoop ドキュメントの「[Hadoop in secure mode](https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SecureMode.html)」を参照してください。


| コンポーネント | Endpoint | ポート | 転送中の暗号化メカニズム | リリースからサポート | 
| --- | --- | --- | --- | --- | 
|  JobHistoryServer  |  mapreduce.jobhistory.webapp.https.address  |  19890  |  TLS  |  emr-7.3.0\$1  | 
|  YARN NodeManager  |  mapreduce.shuffle.port1  |  13562  |  TLS  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 

1`mapreduce.shuffle.port` は YARN NodeManager でホストされますが、Hadoop MapReduce でのみ使用されます。

## Presto
<a name="emr-encryption-support-matrix-presto"></a>

Amazon EMR リリース 5.6.0 以降では、Presto コーディネーターとワーカー間の内部通信は、TLS を使用します。Amazon EMR が Presto で[安全な内部通信](https://prestodb.io/docs/current/security/internal-communication.html)を可能にするために必要なすべての設定をセットアップします。

コネクタがメタデータストアとして Hive メタストアを使用する場合、コミュニケーターと Hive メタストア間の通信も TLS で暗号化されます。


| コンポーネント | Endpoint | ポート | 転送中の暗号化メカニズム | リリースからサポート | 
| --- | --- | --- | --- | --- | 
|  Presto コーディネーター  |  http-server.https.port  |  8446  |  TLS  |  emr-5.6.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 
|  Presto ワーカー  |  http-server.https.port  |  8446  |  TLS  |  emr-5.6.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 

## Trino
<a name="emr-encryption-support-matrix-trino"></a>

Amazon EMR リリース 6.1.0 以降では、Presto コーディネーターとワーカー間の内部通信は、TLS を使用します。Amazon EMR が Trino で[安全な内部通信](https://trino.io/docs/current/security/internal-communication.html)を可能にするために必要なすべての設定をセットアップします。

コネクタがメタデータストアとして Hive メタストアを使用する場合、コミュニケーターと Hive メタストア間の通信も TLS で暗号化されます。


| コンポーネント | Endpoint | ポート | 転送中の暗号化メカニズム | リリースからサポート | 
| --- | --- | --- | --- | --- | 
|  Trino コーディネーター  |  http-server.https.port  |  8446  |  TLS  |  emr-6.1.0\$1、emr-7.0.0\$1  | 
|  Trino ワーカー  |  http-server.https.port  |  8446  |  TLS  |  emr-6.1.0\$1、emr-7.0.0\$1  | 

## Hive と Tez
<a name="emr-encryption-support-matrix-hive-tez"></a>

デフォルトでは、EMR クラスターで転送中の暗号化が有効になっている場合、Hive サーバー 2、Hive メタストアサーバー、Hive LLAP Daemon ウェブ UI、Hive LLAP シャッフルはすべて TLS をサポートします。Hive の設定の詳細については、「[Configuration properties](https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties)」を参照してください。

Tomcat サーバーでホストされている Tez UI は、EMR クラスターで転送中の暗号化が有効になっている場合も HTTPS が有効になります。ただし、Tez AM ウェブ UI サービスでは HTTPS が無効になっているため、AM ユーザーは開いている SSL リスナーのキーストアファイルにアクセスできません。この動作は、ブール値設定 `tez.am.tez-ui.webservice.enable.ssl` と `tez.am.tez-ui.webservice.enable.client.auth` で有効にすることもできます。


| コンポーネント | Endpoint | ポート | 転送中の暗号化メカニズム | リリースからサポート | 
| --- | --- | --- | --- | --- | 
|  HiveServer2  |  hive.server2.thrift.port  |  10000  |  TLS  |  emr-6.9.0\$1、emr-7.0.0\$1  | 
|  HiveServer2  |  hive.server2.thrift.http.port  |  10001  |  TLS  |  emr-6.9.0\$1、emr-7.0.0\$1  | 
|  HiveServer2  |  hive.server2.webui.port  |  10002  |  TLS  |  emr-7.3.0\$1  | 
|  HiveMetastoreServer  |  hive.metastore.port  |  9083  |  TLS  |  emr-7.3.0\$1  | 
|  LLAP Daemon  |  hive.llap.daemon.yarn.shuffle.port  |  15551  |  TLS  |  emr-7.3.0\$1  | 
|  LLAP Daemon  |  hive.llap.daemon.web.port  |  15002  |  TLS  |  emr-7.3.0\$1  | 
|  LLAP Daemon  |  hive.llap.daemon.output.service.port  |  15003  |  なし  |  Hive はこのエンドポイントの転送中の暗号化をサポートしていません  | 
|  LLAP Daemon  |  hive.llap.management.rpc.port  |  15004  |  なし  |  Hive はこのエンドポイントの転送中の暗号化をサポートしていません  | 
|  LLAP Daemon  |  hive.llap.plugin.rpc.port  |  動的  |  なし  |  Hive はこのエンドポイントの転送中の暗号化をサポートしていません  | 
|  LLAP Daemon  |  hive.llap.daemon.rpc.port  |  動的  |  なし  |  Hive はこのエンドポイントの転送中の暗号化をサポートしていません  | 
|  WebHCat  |  templeton.port  |  50111  |  TLS  |  emr-7.3.0\$1  | 
|  Tez Application Master  |  tez.am.client.am.port-range tez.am.task.am.port-range  |  動的  |  なし  |  Tez はこのエンドポイントの転送中の暗号化をサポートしていません  | 
|  Tez Application Master  |  tez.am.tez-ui.webservice.port-range  |  動的  |  なし  |  デフォルトでは無効になっています。emr-7.3.0\$1 の Tez 設定を使用して有効にできます  | 
|  Tez Task  |  該当なし - 設定不可  |  動的  |  なし  |  Tez はこのエンドポイントの転送中の暗号化をサポートしていません  | 
|  Tez UI  |  Tez UI がホストされている Tomcat サーバー経由で設定できます  |  8080  |  TLS  |  emr-7.3.0\$1  | 

## Flink
<a name="emr-encryption-support-matrix-flink"></a>

 EMR クラスターで転送中の暗号化を有効にすると、Apache Flink REST エンドポイントと flink プロセス間の内部通信はデフォルトで TLS をサポートします。

 [https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/config/#security-ssl-internal-enabled](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/config/#security-ssl-internal-enabled) は `true` に設定され、Flink プロセス間の内部通信に転送中の暗号化を使用します。内部通信の転送中の暗号化を希望しない場合は、その設定を無効にします。セキュリティを最大化するには、デフォルト設定を使用することをお勧めします。

 Amazon EMR は [https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/config/#security-ssl-rest-enabled](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/config/#security-ssl-rest-enabled) を `true` に設定し、REST エンドポイントの転送中の暗号化を使用します。さらに、Amazon EMR は [https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/config/#historyserver-web-ssl-enabled](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/config/#historyserver-web-ssl-enabled) を true に設定して、Flink 履歴サーバーとの TLS 通信を使用します。REST ポイントの転送中の暗号化を希望しない場合は、これらの設定を無効にします。セキュリティを最大化するには、デフォルト設定を使用することをお勧めします。

Amazon EMR は [https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/config/#security-ssl-algorithms](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/config/#security-ssl-algorithms) を使用します。AES ベースの暗号化を使用する暗号のリストを指定します。この設定を上書きして、必要な暗号を使用します。

詳細については、Flink ドキュメントの「[SSL Setup](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/security/security-ssl/)」を参照してください。


| コンポーネント | Endpoint | ポート | 転送中の暗号化メカニズム | リリースからサポート | 
| --- | --- | --- | --- | --- | 
|  Flink History Server  |  historyserver.web.port  |  8082  |  TLS  |  emr-7.3.0\$1  | 
|  Job Manager Rest Server  |  rest.bind-port rest.port  |  動的  |  TLS  |  emr-7.3.0\$1  | 

## HBase
<a name="emr-encryption-support-matrix-hbase"></a>

 Amazon EMR は [Secure Hadoop RPC](https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SecureMode.html#Data_Encryption_on_RPC) を `privacy` に設定します。HMaster と RegionServer は SASL ベースの転送中の暗号化を使用します。これには、セキュリティ設定で Kerberos 認証が有効になっている必要があります。

Amazon EMR は `hbase.ssl.enabled` を true に設定し、UI エンドポイントに TLS を使用します。UI エンドポイントに TLS を使用しない場合は、この設定を無効にします。セキュリティを最大化するには、デフォルト設定を使用することをお勧めします。

Amazon EMR は `hbase.rest.ssl.enabled` と `hbase.thrift.ssl.enabled` を設定し、REST および Thirft サーバーエンドポイントにそれぞれ TLS を使用します。これらのエンドポイントに TLS を使用しない場合は、この設定を無効にします。セキュリティを最大化するには、デフォルト設定を使用することをお勧めします。

EMR 7.6.0 以降、TLS は HMaster エンドポイントと RegionServer エンドポイントでサポートされています。Amazon EMR は `hbase.server.netty.tls.enabled` と `hbase.client.netty.tls.enabled` も設定します。これらのエンドポイントに TLS を使用しない場合は、この設定を無効にします。暗号化とより高いセキュリティを提供するデフォルト設定を使用することをお勧めします。詳細については、「*Apache HBase Reference Guid*e」の「[Transport Level Security (TLS) in HBase RPC communication](https://hbase.apache.org/book.html#_transport_level_security_tls_in_hbase_rpc_communication)」を参照してください。


| コンポーネント | Endpoint | ポート | 転送中の暗号化メカニズム | リリースからサポート | 
| --- | --- | --- | --- | --- | 
|  HMaster  |  HMaster  |  16000  |  SASL \$1 Kerberos TLS  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1 および emr-7.0.0\$1 の SASL \$1 Kerberos emr-7.6.0\$1 の TLS  | 
|  HMaster  |  HMaster UI  |  16010  |  TLS  |  emr-7.3.0\$1  | 
|  RegionServer  |  RegionServer  |  16020  |  SASL \$1 Kerberos TLS  |  emr-4.8.0\$1、emr-5.0.0\$1、emr-6.0.0\$1 および emr-7.0.0\$1 の SASL \$1 Kerberos emr-7.6.0\$1 の TLS  | 
|  RegionServer  |  RegionServer 情報  |  16030  |  TLS  |  emr-7.3.0\$1  | 
|  HBase Rest Server  |  Rest Server  |  8070  |  TLS  |  emr-7.3.0\$1  | 
|  HBase Rest Server  |  REST UI  |  8085  |  TLS  |  emr-7.3.0\$1  | 
|  Hbase Thrift Server  |  Thrift Server  |  9090  |  TLS  |  emr-7.3.0\$1  | 
|  Hbase Thrift Server  |  Thrift Server UI  |  9095  |  TLS  |  emr-7.3.0\$1  | 

## Phoenix
<a name="emr-encryption-support-matrix-phoenix"></a>

 EMR クラスターで転送中の暗号化を有効にした場合、Phoenix クエリサーバーはデフォルトで `true` に設定されている TLS プロパティ `phoenix.queryserver.tls.enabled` をサポートします。

詳細については、Phoenix クエリサーバードキュメントの「[Configurations relating to HTTPS](https://phoenix.apache.org/server.html#Configuration)」を参照してください。


| コンポーネント | Endpoint | ポート | 転送中の暗号化メカニズム | リリースからサポート | 
| --- | --- | --- | --- | --- | 
|  Query Server  |  phoenix.queryserver.http.port  |  8765  |  TLS  |  emr-7.3.0\$1  | 

## Oozie
<a name="emr-encryption-support-matrix-oozie"></a>

[OOZIE-3673](https://issues.apache.org/jira/browse/OOZIE-3673) は、Amazon EMR 7.3.0 以降で Oozie を実行する場合、Amazon EMR で使用できます。E メールアクションを実行するときにカスタム SSL または TLS プロトコルを設定する必要がある場合は、`oozie-site.xml` ファイルで `oozie.email.smtp.ssl.protocols` プロパティを設定できます。デフォルトでは、転送時の暗号化を有効にした場合、Amazon EMR は TLS v1.3 プロトコルを使用します。

[OOZIE-3677](https://issues.apache.org/jira/browse/OOZIE-3677) と [OOZIE-3674](https://issues.apache.org/jira/browse/OOZIE-3674) は、Amazon EMR 7.3.0 以降で Oozie を実行する場合も Amazon EMR で使用できます。これにより、`oozie-site.xml` の `trustStoreType` および `keyStoreType` のプロパティを指定できます。OOZIE-3674 はパラメータ `--insecure` を Oozie クライアントに追加し、証明書エラーを無視できるようにします。

Oozie は TLS ホスト名の検証を適用します。つまり、転送中の暗号化に使用する証明書は、ホスト名の検証要件を満たしている必要があります。証明書が基準を満たしていない場合、Amazon EMR がクラスターをプロビジョニングするときに、クラスターが `oozie share lib update` ステージでスタックする可能性があります。証明書を更新して、ホスト名の検証に準拠していることを確認することをお勧めします。ただし、証明書を更新できない場合は、クラスター設定で `oozie.https.enabled` プロパティを `false` に設定することで、SSL for Oozie を無効にすることができます。


| コンポーネント | Endpoint | ポート | 転送中の暗号化メカニズム | リリースからサポート | 
| --- | --- | --- | --- | --- | 
|  EmbeddedOozieServer  |  oozie.https.port  |  11443  |  TLS  |  emr-7.3.0\$1  | 
|  EmbeddedOozieServer  |  oozie.email.smtp.port  |  25  |  TLS  |  emr-7.3.0\$1  | 

## Hue
<a name="emr-encryption-support-matrix-hue"></a>

デフォルトでは、Amazon EMR クラスターで転送中の暗号化を有効にすることにより、Hue は TLS をサポートします。Hue 設定の詳細については、「[ConfigureHue with HTTPS / SSL](https://gethue.com/configure-hue-with-https-ssl/)」を参照してください。


| コンポーネント | Endpoint | ポート | 転送中の暗号化メカニズム | リリースからサポート | 
| --- | --- | --- | --- | --- | 
|  Hue  |  http\$1port  |  8888  |  TLS  |  emr-7.4.0\$1  | 

## Livy
<a name="emr-encryption-support-matrix-livy"></a>

デフォルトでは、Amazon EMR クラスターで転送中の暗号化を有効にすることにより、Livy は TLS をサポートします。Livy 設定の詳細については、「[Enabling HTTPS with Apache Livy](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/enabling-https.html)」を参照してください。

Amazon EMR 7.3.0 以降では、転送中の暗号化と Kerberos 認証を使用している場合、Hive メタストアに依存する Spark アプリケーションの Livy サーバーは使用できません。この問題は [HIVE-16340](https://issues.apache.org/jira/browse/HIVE-16340) で修正され、オープンソースの Spark アプリケーションが Hive 3 にアップグレードできるときに [SPARK-44114](https://issues.apache.org/jira/browse/SPARK-44114) で完全に解決されます。その間、`hive.metastore.use.SSL` を `false` に設定すれば、この問題を回避できます。詳細については、「[アプリケーションの設定](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html)」を参照してください。

詳細については、「[enabling HTTPS with Apache Livy](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/enabling-https.html)」を参照してください。


| コンポーネント | Endpoint | ポート | 転送中の暗号化メカニズム | リリースからサポート | 
| --- | --- | --- | --- | --- | 
|  livy-server  |  livy.server.port  |  8998  |  TLS  |  emr-7.4.0\$1  | 

## JupyterEnterpriseGateway
<a name="emr-encryption-matrix-jupyter-enterprise"></a>

デフォルトでは、Amazon EMR クラスターで転送時の暗号化が有効になっている場合、Jupyter Enterprise Gateway は TLS をサポートします。Jupyter Enterprise Gateway の設定の詳細については、「[Securing Enterprise Gateway Server](https://jupyter-enterprise-gateway.readthedocs.io/en/v1.2.0/getting-started-security.html#securing-enterprise-gateway-server)」を参照してください。


| コンポーネント | Endpoint | ポート | 転送中の暗号化メカニズム | リリースからサポート | 
| --- | --- | --- | --- | --- | 
|  jupyter\$1enterprise\$1gateway  |  c.EnterpriseGatewayApp.port  |  9547  |  TLS  |  emr-7.4.0\$1  | 

## JupyterHub
<a name="emr-encryption-matrix-jupyter-hub"></a>

デフォルトでは、Amazon EMR クラスターで転送中の暗号化を有効にすることにより、JupyterHub は TLS をサポートします。詳細については、JupyterHub ドキュメントの「[Enabling SSL encryption](https://jupyterhub.readthedocs.io/en/latest/tutorial/getting-started/security-basics.html#enabling-ssl-encryption)」を参照してください。暗号化を無効にすることはお勧めしません。


| コンポーネント | Endpoint | ポート | 転送中の暗号化メカニズム | リリースからサポート | 
| --- | --- | --- | --- | --- | 
|  jupyter\$1hub  |  c.JupyterHub.port  |  9443  |  TLS  |  emr-5.14.0\$1、emr-6.0.0\$1、emr-7.0.0\$1  | 

## Zeppelin
<a name="emr-encryption-matrix-zeppelin"></a>

 デフォルトでは、EMR クラスターで転送中の暗号化を有効にすると、Zeppelin は TLS をサポートします。Zeppelin の設定の詳細については、Zeppelin ドキュメントの「[SSL Configuration](https://zeppelin.apache.org/docs/0.11.1/setup/operation/configuration.html#ssl-configuration)」を参照してください。


| コンポーネント | Endpoint | ポート | 転送中の暗号化メカニズム | リリースからサポート | 
| --- | --- | --- | --- | --- | 
|  zeppelin  |  zeppelin.server.ssl.port  |  8890  |  TLS  |  7.3.0\$1  | 

## Zookeeper
<a name="emr-encryption-matrix-zookeeper"></a>

Amazon EMR は `serverCnxnFactory` を `org.apache.zookeeper.server.NettyServerCnxnFactory` に設定して、Zookeeper クォーラムとクライアント通信の TLS を有効にします。

`secureClientPort` は、TLS 接続をリッスンするポートを指定します。クライアントが Zookeeper への TLS 接続をサポートしていない場合、クライアントは `clientPort` で指定された安全でないポート 2181 に接続できます。これらの 2 つのポートは上書きまたは無効化できます。

Amazon EMR は `sslQuorum` と `admin.forceHttps` の両方を `true` に設定して、クォーラムサーバーと管理サーバーの TLS 通信を有効にします。クォーラムと管理サーバーの転送時の暗号化を希望しない場合は、これらの設定を無効にできます。セキュリティを最大化するには、デフォルト設定を使用することをお勧めします。

詳細については、Zookeeper ドキュメントの「[Encryption, Authentication, Authorization Options](https://zookeeper.apache.org/doc/r3.9.2/zookeeperAdmin.html#sc_authOptions)」を参照してください。


| コンポーネント | Endpoint | ポート | 転送中の暗号化メカニズム | リリースからサポート | 
| --- | --- | --- | --- | --- | 
|  Zookeeper サーバー  |  secureClientPort  |  2281  |  TLS  |  emr-7.4.0\$1  | 
|  Zookeeper サーバー  |  クォーラムポート  |  2 つあります: フォロワーは 2888 を使用してリーダーに接続します。 リーダー選出で 3888 を使用  |  TLS  |  emr-7.4.0\$1  | 
|  Zookeeper サーバー  |  admin.serverPort  |  8341  |  TLS  |  emr-7.4.0\$1  | 