Secure Sockets Layer ( SSL ) は、クライアントとサーバー間の安全な接続を提供するネットワークプロトコルです。Dataflow クラスタで SSL を有効にすると、プロデューサー、コンシューマー、およびブローカー間のデータ転送が暗号化されます。これにより、転送中の機密データが盗聴や改ざんから保護されます。このトピックでは、Kafka がデプロイされている Dataflow クラスタで SSL を有効にし、SSL 経由で Kafka にアクセスする方法について説明します。
前提条件
E-MapReduce ( EMR ) コンソールで Dataflow クラスタが作成され、クラスタの作成時に Kafka が選択されています。詳細については、「Dataflow Kafka クラスタを作成する」をご参照ください。
手順
手順 1:SSL を有効にする
Kafka クラスタで SSL を有効にするには、次のいずれかの方法を使用できます。
EMR が提供するデフォルトの証明書を使用して SSL を有効にします。
カスタム証明書と関連する設定項目を使用して SSL を有効にします。
EMR は、server.properties 設定ファイルの kafka.ssl.config.type 設定項目を使用して、SSL を構成するために使用されるポリシーを管理します。
方法 1:デフォルトの証明書を使用して SSL を有効にする
デフォルトでは、Kafka クラスタの SSL は無効になっています。次の操作を実行して、SSL をすばやく有効にすることができます。
Kafka サービスページの [構成] タブに移動します。
EMR コンソール にログインします。左側のナビゲーションウィンドウで、[ EMR on ECS ] をクリックします。
上部のナビゲーションバーで、クラスタが存在するリージョンを選択し、ビジネス要件に基づいてリソースグループを選択します。
[ EMR on ECS ] ページで、目的のクラスタを見つけ、[操作] 列の [サービス] をクリックします。
[サービス] タブで、Kafka サービスを見つけ、[構成] をクリックします。
設定項目を変更します。
[構成] タブで、[server.properties] タブをクリックします。
kafka.ssl.config.type 設定項目の値を DEFAULT に変更します。

構成を保存します。
[保存] をクリックします。
表示されるダイアログボックスで、[実行理由] パラメーターを構成し、[保存] をクリックします。
Kafka サービスを再起動します。
Kafka サービスページの [構成] タブで、右上隅にある を選択します。
表示されるダイアログボックスで、[実行理由] パラメーターを構成し、[OK] をクリックします。
[確認] メッセージで、[OK] をクリックします。
方法 2:カスタム証明書を使用して SSL を有効にする
デフォルトでは、Kafka クラスタの SSL は無効になっています。構成をカスタマイズして SSL を有効にすることができます。
Kafka サービスページの [構成] タブに移動します。
EMR コンソール にログインします。左側のナビゲーションウィンドウで、[ EMR on ECS ] をクリックします。
上部のナビゲーションバーで、クラスタが存在するリージョンを選択し、ビジネス要件に基づいてリソースグループを選択します。
EMR on ECS ページで、目的のクラスタを見つけ、[アクション] 列の [サービス] をクリックします。
[サービス] タブで、Kafka サービスを見つけ、[構成] をクリックします。
設定項目を変更します。
Kafka サービスページの [構成] タブで、[server.properties] タブをクリックします。
kafka.ssl.config.type 設定項目の値を CUSTOM に変更します。
構成を保存します。
[保存] をクリックします。
表示されるダイアログボックスで、[実行理由] パラメーターを構成し、[保存] をクリックします。
SSL に関連する他の設定項目を変更します。
リスナーを除く SSL 関連の設定項目は、ビジネス要件に基づいて構成する必要があります。たとえば、ssl.keystore.location、ssl.keystore.password、ssl.truststore.location、ssl.truststore.password、ssl.key.password、ssl.keystore.type、および ssl.truststore.type などの設定項目を構成する必要があります。
Kafka サービスを再起動します。
Kafka サービス ページの [構成] タブで、右上隅にある を選択します。
表示されるダイアログボックスで、実行理由パラメーターを構成し、[OK] をクリックします。
[確認] メッセージで、[OK] をクリックします。
手順 2:SSL 経由で Kafka にアクセスする
SSL 経由で Kafka にアクセスするには、security.protocol、ssl.truststore.password、および ssl.truststore.location 設定項目を構成する必要があります。
たとえば、Kafka の Producer プログラムと Consumer プログラムを使用して、SSL が有効になっている Kafka クラスタでジョブを実行する場合、次の手順を実行できます。
SSH モードでクラスタのマスターノードにログインします。詳細については、「クラスタにログインする」をご参照ください。
設定ファイルを作成します。
次のコマンドを実行して、ssl.properties 設定ファイルを作成します。
vim ssl.propertiesssl.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 クラスタ外でジョブを実行する場合は、Kafka クラスタのノードの特定のディレクトリにある truststore ファイルと keystore ファイルを実行時環境にコピーします。次に、必要な情報を構成します。
次のコマンドを実行して、Kafka トピックを作成します。
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 ) を使用して Dataflow Kafka クラスタにログインするために使用されるユーザー ID を検証する方法については、「SASL を使用して Kafka クラスタにログインする」をご参照ください。