Simple Authentication and Security Layer (SASL) は、アプリケーション層がさまざまな認証メカニズムを選択および実装できるようにするフレームワークです。SASL 認証により、ユーザーを認証し、有効な認証情報を持つクライアントのみが Kafka サービスに接続できるようになり、セキュリティが大幅に向上します。このトピックでは、SASL を有効にし、それを使用して Kafka に接続する方法について説明します。
前提条件
E-MapReduce (EMR) コンソールで、Kafka サービスが選択された Dataflow クラスター (Kafka クラスター) が作成されている必要があります。詳細については、「Dataflow Kafka クラスターの作成」をご参照ください。
手順
ステップ 1:SASL の設定
E-MapReduce は、server.properties 設定ファイルとその kafka.sasl.config.type パラメーターを使用して SASL 設定を管理します。
Kafka クラスターでは、デフォルトで SASL が無効になっています。次の例では、SCRAM-SHA-512 認証メカニズムを使用して SASL を有効にします。
-
ユーザーを作成します。
-
SSH 経由でクラスターのマスターノードに接続します。詳細については、「クラスターへのログイン」をご参照ください。
-
次のコマンドを実行して、
adminユーザーを作成します。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です。これを実際のパスワードに置き換えてください。
-
-
サービス設定ページに移動します。
-
E-MapReduce コンソールにログインします。
-
必要に応じて、トップナビゲーションバーでリージョンとリソースグループを選択します。
-
対象のクラスターの [操作] 列にある Services をクリックします。
-
Services ページで、Kafka サービスエリアの Configure をクリックします。
-
-
SASL 認証設定を変更します。
-
SASL 設定項目を追加します。
Kafka サービス設定ページの [server.properties] タブで、設定項目を追加します。
-
Add Configuration Item をクリックします。
-
Add Configuration Item ダイアログボックスで、次の設定項目を追加し、OK をクリックします。
パラメーター
値
sasl.mechanism.inter.broker.protocol
SCRAM-SHA-512
sasl.enabled.mechanisms
SCRAM-SHA-512
-
表示されるダイアログボックスで、Execution Reason フィールドに理由を入力し、Save をクリックします。
-
-
リスナー設定を変更します。
-
Configure ページで、[server.properties] タブをクリックします。
-
kafka.sasl.config.type パラメーターの値を [CUSTOM] に変更し、Save をクリックします。
-
表示されるダイアログボックスで、Execution Reason フィールドに理由を入力し、Save をクリックします。
-
-
サーバー側 JAAS を設定します。
-
方法 1:カスタム設定項目を追加して、サーバー側の JAAS を設定します。
-
Kafka サービス設定ページで、[server.properties] タブをクリックします。
-
Add Configuration Item をクリックし、次の設定項目を追加して、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" ;
-
表示されるダイアログボックスで、Execution Reason フィールドに理由を入力し、[Save] をクリックします。
-
-
方法 2:設定ファイルを使用して、JAAS を設定します。
-
Kafka サービス設定ページで、次の設定項目を変更し、Save をクリックします。
タブ
パラメーター
値
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
-
表示されるダイアログボックスで、Execution Reason フィールドに理由を入力し、Confirm をクリックします。
-
-
-
クライアント側 JAAS を設定します。
クライアント側の JAAS は、
kafka_client_jaas.conf設定ファイルのkafka.client.jaas.contentパラメーターを使用して設定します。Kafka Schema Registry および Kafka Rest Proxy コンポーネントは、起動時にこの設定を使用します。-
Kafka サービス設定ページで、次の設定項目を変更し、Save をクリックします。
タブ
パラメーター
値
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
-
表示されるダイアログボックスで、Execution Reason フィールドに理由を入力し、[Save] をクリックします。
-
-
-
Kafka サービスを再起動します。
-
Kafka サービスの Configure ページで、 を選択します。
-
表示されたダイアログボックスで、実行理由を入力し、OK をクリックします。
-
Confirm ダイアログボックスで、OK をクリックします。
-
ステップ 2:SASL を使用した Kafka への接続
次の例では、SCRAM-SHA-512 メカニズムと Kafka の組み込みプロデューサーとコンシューマーツールを使用して、クライアントが Kafka サービスに認証・接続する方法を示します。
-
SSH を使用してクラスターのマスターノードにログインします。詳細については、「クラスターへのログイン」をご参照ください。
-
管理者設定ファイルを作成します。
-
次のコマンドを実行して、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 接続の暗号化」をご参照ください。