

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

# Amazon MSK クラスター内の Apache ZooKeeper ノードへのアクセスを制御する
<a name="zookeeper-security"></a>

セキュリティ上の理由から、Amazon MSK クラスターの一部である Apache ZooKeeper ノードへのアクセスを制限できます。ノードへのアクセスを制限するには、それらに別のセキュリティグループを割り当てます。その後、そのセキュリティグループにアクセスできるユーザーを決定できます。

**重要**  
このセクションは、KRaft モードで実行されているクラスターには適用されません。「[KRaft モード](metadata-management.md#kraft-intro)」を参照してください。

**Topics**
+ [Apache ZooKeeper ノードを別のセキュリティグループに配置するには](zookeeper-security-group.md)
+ [Apache ZooKeeper での TLS セキュリティの使用](zookeeper-security-tls.md)

# Apache ZooKeeper ノードを別のセキュリティグループに配置するには
<a name="zookeeper-security-group"></a>

Apache ZooKeeper ノードへのアクセスを制限するには、それらに別のセキュリティグループを割り当てます。セキュリティグループルールを設定することで、この新しいセキュリティグループにアクセスできるユーザーを選択できます。

1. クラスターの Apache ZooKeeper 接続文字列を取得します。この方法の詳細は、「[ZooKeeper モード](metadata-management.md#msk-get-connection-string)」を参照してください。接続文字列には、Apache ZooKeeper ノードの DNS 名が含まれています。

1. `host` や `ping` などのツールを使用して、前の手順で取得した DNS 名を IP アドレスに変換します。この手順の後半で必要になるため、これらの IP アドレスを保存します。

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

1. 左側のペインの [**Network & Security (ネットワークとセキュリティ)**] で、[**Network Interfaces (ネットワークインターフェイス)**] を選択します。

1. ネットワークインターフェイスのテーブルの上にある検索フィールドに、クラスターの名前を入力し、「return」と入力します。これにより、テーブルに表示されるネットワークインターフェイスの数を、クラスターに関連付けられたインターフェイスの数に制限します。

1. リストの最初のネットワークインターフェイスに対応する行の先頭にあるチェックボックスをオンにします。

1. ページの下部にある詳細ペインで、[**Primary private IPv4 IP (プライマリプライベート IPv4 IP)**] を探します。この IP アドレスがこの手順の最初に取得した IP アドレスのいずれかに一致する場合は、このネットワークインターフェイスがクラスターの一部である Apache ZooKeeper ノードに割り当てられていることを意味します。それ以外の場合は、このネットワークインターフェイスの隣にあるチェックボックスをオフにして、リスト内の次のネットワークインターフェイスを選択します。ネットワークインターフェイスを選択する順序は関係ありません。以降のステップでは、Apache ZooKeeper ノードに割り当てられているすべてのネットワークインターフェイスで、同じオペレーションを 1 つずつ実行します。

1. Apache ZooKeeper ノードに対応するネットワークインターフェイスを選択する場合は、ページ上部の [**Actions (アクション)**] メニューを選択し、[**Change Security Groups (セキュリティグループを変更)**] を選択します。このネットワークインターフェイスに新しいセキュリティグループを割り当てます。セキュリティグループの作成については、Amazon VPC ドキュメントの[セキュリティグループの作成](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html?shortFooter=true#CreatingSecurityGroups)を参照してください。

1. 前のステップを繰り返して、クラスターの Apache ZooKeeper ノードに関連付けられているすべてのネットワークインターフェイスに同じ新しいセキュリティグループを割り当てます。

1. これで、この新しいセキュリティグループにアクセスできるユーザーを選択できるようになりました。セキュリティグループルールの設定については、Amazon VPC ドキュメントの[ルールの追加、削除、更新](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html?shortFooter=true#AddRemoveRules)を参照してください。

# Apache ZooKeeper での TLS セキュリティの使用
<a name="zookeeper-security-tls"></a>

クライアントと Apache ZooKeeper ノード間の転送中の暗号化に TLS セキュリティを使用できます。Apache ZooKeeper ノードで TLS セキュリティを実装するには、次の手順を実行します。
+ Apache ZooKeeper で TLS セキュリティを使用するには、クラスターで Apache Kafka バージョン 2.5.1 以降を使用する必要があります。
+ クラスターを作成または構成するときに TLS セキュリティを有効にします。Apache Kafka バージョン 2.5.1 以降で TLS を有効にして作成されたクラスターは、Apache ZooKeeper エンドポイントで TLS セキュリティを自動的に使用します。TLS セキュリティの設定については、「[Amazon MSK 暗号化の使用を開始する](msk-working-with-encryption.md)」を参照してください。
+ [DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster) オペレーションを使用して TLS Apache ZooKeeper エンドポイントを取得します。
+ `kafka-configs.sh` および [https://kafka.apache.org/documentation/#security_authz_cli](https://kafka.apache.org/documentation/#security_authz_cli) ツールで使用する、または ZooKeeper シェルで使用する Apache ZooKeeper 設定ファイルを作成します。各ツールでは、`--zk-tls-config-file` パラメータを使用して Apache ZooKeeper の設定を指定します。

  次の例は、典型的な Apache ZooKeeper 設定ファイルを示しています。

  ```
  zookeeper.ssl.client.enable=true
  zookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty
  zookeeper.ssl.keystore.location=kafka.jks
  zookeeper.ssl.keystore.password=test1234
  zookeeper.ssl.truststore.location=truststore.jks
  zookeeper.ssl.truststore.password=test1234
  ```
+ その他のコマンド (`kafka-topics` など) の場合は、`KAFKA_OPTS` 環境変数を使用して Apache ZooKeeper パラメーターを設定する必要があります。次の例は、Apache ZooKeeper パラメーターを他のコマンドに渡すように `KAFKA_OPTS` 環境変数を設定する方法を示しています。

  ```
  export KAFKA_OPTS="
  -Dzookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty 
  -Dzookeeper.client.secure=true 
  -Dzookeeper.ssl.trustStore.location=/home/ec2-user/kafka.client.truststore.jks
  -Dzookeeper.ssl.trustStore.password=changeit"
  ```

  `KAFKA_OPTS` 環境変数を設定すると、CLI コマンドを通常どおりに使用できます。次の例では、`KAFKA_OPTS` 環境変数の Apache ZooKeeper 設定を使用して Apache Kafka トピックを作成します。

  ```
  <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --zookeeper ZooKeeperTLSConnectString --replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopic
  ```

**注記**  
Apache ZooKeeper 設定ファイルで使用するパラメーターの名前と、`KAFKA_OPTS` 環境可変で使用するパラメーターの名前は一貫していません。設定ファイルおよび `KAFKA_OPTS` 環境変数の、どのパラメーターでどの名前を使用するかに注意してください。

TLS を使用して Apache ZooKeeper ノードにアクセスする方法の詳細については、[KIP-515: ZK クライアントが新しい TLS でサポートされている認証を使用できるようにする](https://cwiki.apache.org/confluence/display/KAFKA/KIP-515%3A+Enable+ZK+client+to+use+the+new+TLS+supported+authentication)を参照してください。