Simple Authentication and Security Layer (SASL) は、アプリケーションがさまざまな認証メカニズムを選択して実装できるようにするフレームワークです。 SASL を使用してユーザーの ID を検証できます。 これにより、有効な資格情報を持つクライアントのみが Kafka に接続できるようになり、サービスのセキュリティが大幅に向上します。 このトピックでは、E-MapReduce (EMR) Kafka クラスターの SASL を構成し、SASL を使用してクラスターにログオンする方法について説明します。
前提条件
E-MapReduce (EMR) コンソールで Dataflow クラスターが作成され、クラスターの作成時に Kafka が選択されています。 詳細については、「Dataflow Kafka クラスターを作成する」をご参照ください。
SASL を構成する
EMR は、server.properties 構成ファイルの kafka.sasl.config.type 構成項目に基づいて SASL 構成ポリシーを管理します。
デフォルトでは、Kafka クラスターの SASL は無効になっています。 SASL を有効にするには、次の手順を実行します。 次の例は、SCRAM-SHA-512 メカニズムを構成する方法を示しています。
ユーザーを作成します。
SSH モードでクラスターのマスターノードにログオンします。 詳細については、「クラスターにログオンする」をご参照ください。
次のコマンドを実行して管理者ユーザーを作成します。
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説明この例では、
adminユーザーのパスワードはadmin-secretです。 ビジネス要件に基づいてパスワードを指定できます。
Kafka サービスページの [構成] タブに移動します。
EMR コンソール にログオンします。 左側のナビゲーションペインで、[ECS 上の EMR] をクリックします。
上部のナビゲーションバーで、クラスターが存在するリージョンを選択し、ビジネス要件に基づいてリソースグループを選択します。
[ECS 上の EMR] ページで、目的のクラスターを見つけ、[アクション] 列の [サービス] をクリックします。
[サービス] タブで、Kafka サービスを見つけ、[構成] をクリックします。
SASL 認証メカニズムに関連する構成を変更します。
SASL に関連する構成項目を追加します。
Kafka サービスページの [構成] タブの [server.properties] タブで、SASL に関連する構成項目を追加します。
[構成項目を追加] をクリックします。
[構成項目を追加] ダイアログボックスで、次の表に示す構成項目を追加し、[OK] をクリックします。
構成項目
値
sasl.mechanism.inter.broker.protocol
SCRAM-SHA-512
sasl.enabled.mechanisms
SCRAM-SHA-512
表示されるダイアログボックスで、[実行理由] パラメーターを構成し、Save をクリックします。
リスナーの構成を変更します。
Kafka サービスページの [構成] タブで、[server.properties] タブをクリックします。
[server.properties] タブで、[kafka.sasl.config.type] 構成項目の値を [CUSTOM] に変更し、[保存] をクリックします。
表示されるダイアログボックスで、[実行理由] パラメーターを構成し、[保存] をクリックします。
Kafka ブローカーの Java Authentication and Authorization Service (JAAS) を構成します。
方法 1: カスタム構成項目を使用して Kafka ブローカーの JAAS を構成します。
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 ブローカーの JAAS を構成します。
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 クライアントの JAAS を構成します。
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 サービスを再起動します。
Kafka サービスページの [構成] タブで、右上隅にある を選択します。
表示されるダイアログボックスで、[実行理由] パラメーターを構成し、[OK] をクリックします。
[確認] メッセージで、[OK] をクリックします。
SASL を使用して Kafka クラスターにログオンする
次の例は、SCRAM-SHA-512 メカニズムを使用して、Kafka クライアントで Kafka クラスターを認証し、ログオンする方法を示しています。 この例では、Kafka クラスターの Producer プログラムと Consumer プログラムを使用してジョブを実行します。
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.propertiesコマンドの
testは、作成するトピックの名前です。 ビジネス要件に基づいて名前を指定できます。次のコマンドを実行して、SASL 構成ファイルを使用してデータを生成します。
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次のコマンドを実行して、SASL 構成ファイルを使用してデータを使用します。
kafka-consumer-perf-test.sh --broker-list core-1-1:9092 --messages 100000000 --topic test --consumer.config sasl_user.properties
参照
クライアントとサーバーの間に暗号化されたデータ伝送チャネルを確立する方法については、「SSL を使用して Kafka データを暗号化する」をご参照ください。