Secure Sockets Layer (SSL) は、クライアントとサーバー間で安全な接続を確立するためのネットワークプロトコルです。SSL を有効にすると、プロデューサー、コンシューマー、ブローカー間のメッセージ交換を含む、Dataflow クラスター内のすべてのデータ転送が暗号化されます。これにより、ネットワーク伝送中に機密情報が傍受されたり改ざんされたりするのを防ぎます。このトピックでは、SSL を有効にし、SSL 経由で Kafka に接続する方法について説明します。
前提条件
E-MapReduce (EMR) コンソールで、Kafka サービスが選択された Dataflow クラスター (Kafka クラスター) が作成されている必要があります。詳細については、「Dataflow Kafka クラスターの作成」をご参照ください。
操作手順
ステップ 1: SSL の有効化
EMR は、Kafka クラスターの SSL を設定するために 2 つの方法を提供しています:
-
デフォルトの証明書で SSL を有効にする: EMR のデフォルトの証明書と設定方法を使用して、迅速に SSL を有効にします。
-
カスタム設定で SSL を有効にする: 独自の証明書と設定値を使用して SSL を有効にします。
server.properties 設定ファイルの kafka.ssl.config.type パラメーターは、EMR の SSL 設定ポリシーを管理します。
方法 1: デフォルト
デフォルトでは、Kafka クラスターの SSL は無効になっています。次の手順に従って、迅速に SSL を有効にしてください。
-
サービス設定ページに移動します。
-
E-MapReduce コンソールにログインします。
-
必要に応じて、トップナビゲーションバーでリージョンとリソースグループを選択します。
-
対象のクラスターの [操作] 列にある Services をクリックします。
-
Services ページで、Kafka サービスエリアの Configure をクリックします。
-
-
設定パラメーターを変更します。
-
Configure ページで、[server.properties] タブをクリックします。
-
[kafka.ssl.config.type] パラメーターを [DEFAULT] に設定します。
-
-
設定を保存します。
-
Save をクリックします。
-
表示されるダイアログボックスで、Execution Reason を入力し、Save をクリックします。
-
-
Kafka サービスを再起動します。
-
Kafka サービスの Configure ページで、 を選択します。
-
表示されたダイアログボックスで、実行理由を入力し、OK をクリックします。
-
Confirm ダイアログボックスで、OK をクリックします。
-
方法 2: カスタム
デフォルトでは、Kafka クラスターの SSL は無効になっています。カスタム設定で SSL を有効にすることができます。
-
サービス設定ページに移動します。
-
E-MapReduce コンソールにログインします。
-
必要に応じて、トップナビゲーションバーでリージョンとリソースグループを選択します。
-
対象のクラスターの [操作] 列にある Services をクリックします。
-
Services ページで、Kafka サービスエリアの Configure をクリックします。
-
-
設定パラメーターを変更します。
-
Configure ページで、[server.properties] タブをクリックします。
-
[kafka.ssl.config.type] のパラメーター値を [CUSTOM] に変更します。
-
-
設定を保存します。
-
Save をクリックします。
-
ポップアップダイアログボックスで、Execution Reason を入力し、Save をクリックします。
-
-
他の SSL パラメーターを設定します。
ビジネス要件に基づいて、
listeners以外の SSL 関連パラメーターを設定します。例:ssl.keystore.location、ssl.keystore.password、ssl.truststore.location、ssl.truststore.password、ssl.key.password、ssl.keystore.type、ssl.truststore.type。 -
Kafka サービスを再起動します。
-
Kafka サービスのConfigure ページで、 を選択します。
-
表示されたダイアログボックスで、実行理由を入力し、OK をクリックします。
-
Confirm ダイアログボックスで、OK をクリックします。
-
ステップ 2: SSL 経由での Kafka への接続
SSL 経由で Kafka に接続するには、クライアントパラメーターの security.protocol、ssl.truststore.password、ssl.truststore.location を設定する必要があります。
たとえば、SSL が有効な Kafka クラスターで Kafka の組み込みプロデューサーとコンシューマーを使用してジョブを実行するには、次の手順に従います:
-
SSH 経由でクラスターのマスターノードに接続します。詳細については、「クラスターへのログイン」をご参照ください。
-
設定ファイルを作成します。
-
次のコマンドを実行して、
ssl.properties設定ファイルを作成します。vim ssl.properties -
ssl.propertiesファイルに次の内容を追加します。security.protocol=SSL ssl.truststore.location=/var/taihao-security/ssl/ssl/truststore ssl.truststore.password=${password} ssl.keystore.location=/var/taihao-security/ssl/ssl/keystore ssl.keystore.password=${password} ssl.endpoint.identification.algorithm=これらのパラメーターの値は、EMR コンソールの Kafka サービスの [設定] ページで確認できます。Kafka クラスター外の環境でジョブを実行する場合は、クラスターノード上の対応するディレクトリから
truststoreおよびkeystoreファイルを実行環境にコピーし、それに応じてファイルパスを設定してください。
-
-
次のコマンドを実行してトピックを作成します。
kafka-topics.sh --partitions 10 --replication-factor 2 --bootstrap-server core-1-1:9092 --topic test --create --command-config ssl.properties -
次のコマンドを実行して、SSL 設定ファイルを使用してデータを生成します。
export IP=<your_InnerIP> kafka-producer-perf-test.sh --topic test --num-records 123456 --throughput 10000 --record-size 1024 --producer-props bootstrap.servers=${IP}:9092 --producer.config ssl.properties説明このコード例では、
<your_InnerIP>は master-1-1 ノードの内部 IP アドレスです。 -
次のコマンドを実行して、SSL 設定ファイルを使用してデータを消費します。
export IP=<your_InnerIP> kafka-consumer-perf-test.sh --broker-list ${IP}:9092 --messages 100000000 --topic test --consumer.config ssl.properties
関連トピック
SASL を使用して Kafka サービスに接続するユーザーを認証するには、「SASL を使用した Kafka サービスへの認証」をご参照ください。