簡易認証およびセキュリティ層 (SASL) は、有効な認証情報を持つクライアントのみが Kafka ブローカーに接続できることを保証します。デフォルトでは、E-MapReduce (EMR) Kafka クラスターでは SASL が無効になっています。このトピックでは、SCRAM-SHA-512 メカニズムを使用した SASL の有効化、ブローカーとクライアントの認証設定、およびセットアップの検証について説明します。
前提条件
E-MapReduce (EMR) コンソールで Dataflow クラスターが作成され、クラスターの作成時に Kafka が選択されている必要があります。詳細については、「Dataflow Kafka クラスターの作成」をご参照ください。
管理者ユーザーの作成
EMR は、server.properties 設定ファイル内の kafka.sasl.config.type 設定項目を介して SASL を管理します。
SSH モードでご利用のクラスターのマスターノードにログインします。詳細については、「クラスターへのログイン」をご参照ください。
次のコマンドを実行して、管理者ユーザーを作成します。
説明この例では、
adminユーザーのパスワードはadmin-secretです。ビジネス要件に基づいてパスワードを指定してください。kafka-configs.sh --bootstrap-server core-1-1:9092 --alter --add-config 'SCRAM-SHA-256=[password=admin-secret],SCRAM-SHA-512=[password=admin-secret]' --entity-type users --entity-name admin
EMR コンソールでの SASL 設定項目の追加
Kafka 設定ページへの移動
EMR コンソールにログインします。左側のナビゲーションウィンドウで、[EMR On ECS] をクリックします。
上部のナビゲーションバーで、ご利用のクラスターが存在するリージョンを選択し、ビジネス要件に基づいてリソースグループを選択します。
[EMR On ECS] ページで、クラスターを見つけ、操作列の [サービス] をクリックします。
「サービス」タブで、Kafka サービスを見つけ、「設定」をクリックします。
SASL メカニズム設定の追加
[server.properties] タブで:
[設定項目の追加] をクリックします。
「[設定項目の追加]」ダイアログボックスで、以下の設定項目を追加し、「[OK]」をクリックします。
設定項目 値 sasl.mechanism.inter.broker.protocol SCRAM-SHA-512 sasl.enabled.mechanisms SCRAM-SHA-512 表示されるダイアログボックスで、[実行理由] を指定し、[保存] をクリックします。
リスナーのカスタムモードへの設定
「[server.properties]」タブで:
[kafka.sasl.config.type] 設定項目の値を [CUSTOM] に変更し、[保存] をクリックします。
表示されるダイアログボックスで、[実行理由] を指定し、[保存] をクリックします。
Kafka ブローカーの JAAS 設定
次のいずれかの方法を選択して、Kafka ブローカーの Java Authentication and Authorization Service (JAAS) を設定します。
方法 1: カスタム設定項目の使用
Kafka の [設定] ページの server.properties タブで:
[設定項目の追加] をクリックし、以下の設定項目を追加してから、[OK] をクリックします。
設定項目 値 listener.name.sasl_plaintext.sasl.enabled.mechanisms SCRAM-SHA-512 listener.name.sasl_plaintext.scram-sha-512.sasl.jaas.config org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret" ; 表示されるダイアログボックスで、[実行理由] を指定し、[保存] をクリックします。
方法 2: 設定ファイルの使用
Kafka の [設定] ページで、以下の設定項目を変更し、[保存] をクリックします。
| タブ | 設定項目 | 値 |
|---|---|---|
| kafka_server_jaas.conf | kafka.server.jaas.content | KafkaServer { org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret"; }; |
| server.properties | kafka_opts | -Djava.security.auth.login.config=/etc/taihao-apps/kafka-conf/kafka-conf/kafka_server_jaas.conf |
kafka.server.jaas.content の値の全体は次のとおりです。
KafkaServer {
org.apache.kafka.common.security.scram.ScramLoginModule required
username="admin"
password="admin-secret";
};表示されるダイアログボックスで、[実行理由] を指定し、[保存] をクリックします。
Kafka クライアントの JAAS 設定
kafka_client_jaas.conf 設定ファイルで kafka.client.jaas.content 設定項目を設定します。この設定は、Kafka Schema Registry と Kafka REST Proxy を起動するために使用されます。
Kafka の [設定] ページで、以下の設定項目を変更し、[保存] をクリックします。
| [タブ] | [設定項目] | [値] |
|---|---|---|
| kafka_client_jaas.conf | kafka.client.jaas.content | KafkaClient { org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret"; }; |
| schema-registry.properties | schema_registry_opts | -Djava.security.auth.login.config=/etc/taihao-apps/kafka-conf/kafka-conf/kafka_client_jaas.conf |
| kafka-rest.properties | kafkarest_opts | -Djava.security.auth.login.config=/etc/taihao-apps/kafka-conf/kafka-conf/kafka_client_jaas.conf |
kafka.client.jaas.content の値の全体は次のとおりです。
KafkaClient {
org.apache.kafka.common.security.scram.ScramLoginModule required
username="admin"
password="admin-secret";
};表示されるダイアログボックスで、[実行理由]を指定し、[保存]をクリックします。
Kafka サービスの再起動
SASL 設定が完了したら、変更を有効にするために Kafka サービスを再起動します。
Kafka サービスページの[設定]タブで、右上隅の[その他] > [再起動]を選択します。
表示されるダイアログボックスで、[実行理由] を指定し、[OK] をクリックします。
[確認] メッセージで、[OK] をクリックします。
SASL 認証の検証
Kafka サービスが再起動したら、SCRAM-SHA-512 メカニズムを使用して Kafka クラスターに認証します。次の例では、組み込みのプロデューサープログラムとコンシューマープログラムを使用します。
管理者設定ファイルの作成
SSH モードでご利用の EMR クラスターのマスターノードにログインします。詳細については、「クラスターへのログイン」をご参照ください。
次のコマンドを実行して、
sasl_admin.propertiesファイルを作成します。vim sasl_admin.propertiesファイルに次のコンテンツを追加します。
security.protocol=SASL_PLAINTEXT sasl.mechanism=SCRAM-SHA-512 sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret";
一般ユーザーの作成
次のコマンドを実行して、一般ユーザーを作成します。
kafka-configs.sh --bootstrap-server core-1-1:9092 --alter --add-config 'SCRAM-SHA-256=[password=<yourUserpassword>],SCRAM-SHA-512=[password=<yourUserpassword>]' --entity-type users --entity-name <yourUsername> --command-config /root/sasl_admin.properties<yourUsername> と <yourUserpassword> を、一般ユーザーに割り当てるユーザー名とパスワードに置き換えます。
ユーザー設定ファイルの作成
次のコマンドを実行して、
sasl_user.propertiesファイルを作成します。vim sasl_user.propertiesファイルに次のコンテンツを追加します。
security.protocol=SASL_PLAINTEXT sasl.mechanism=SCRAM-SHA-512 sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="<yourUsername>" password="<yourUserpassword>";
トピックの作成
次のコマンドを実行して、トピックを作成します。
kafka-topics.sh --partitions 10 --replication-factor 2 --bootstrap-server core-1-1:9092 --topic test --create --command-config /root/sasl_user.propertiestest はトピックの名前です。ビジネス要件に基づいてトピック名を指定してください。
データの生成
次のコマンドを実行して、トピックにデータを生成します。
kafka-producer-perf-test.sh --topic test --num-records 123456 --throughput 10000 --record-size 1024 --producer-props bootstrap.servers=core-1-1:9092 --producer.config sasl_user.propertiesデータの消費
次のコマンドを実行して、トピックからデータを消費します。
kafka-consumer-perf-test.sh --broker-list core-1-1:9092 --messages 100000000 --topic test --consumer.config sasl_user.properties参照
クライアントとサーバー間で暗号化されたデータ伝送チャネルを確立する方法については、「SSL を使用した Kafka データの暗号化」をご参照ください。