バージョン0.9の後、カフカは、認証とアクセス制御の2つのセキュリティメカニズムを追加します。
認証:クライアントを参照し、サーバが接続を認証し; ,,プロキシと飼育係の間で、クライアントとカフカプロキシ接続認証の間にエージェントとプロキシの間を含め、現在、SSL、SASL /ケルベロス、SASL / PLAINこれをサポートしています認証メカニズムの三種類。
アクセス制御:操作アクセス制御クライアントを読み書き実行するために参照します。
1、使用SASL / PLAIN ID認証:
1)server.propertiesファイルを変更し、オープンSASL認証設定:
リスナーで= SASL_PLAINTEXT:// 0.0.0.0:9092#はSASLポート設定 security.inter.broker.protocolを = SASL_PLAINTEXT#の間で代理通信プロトコルの設定 sasl.enable.mechanismsを = SASLメカニズムの有効PLAIN# sasl.mechanism.inter.brokerを.protocol =#SASL PLAINメカニズムを設定
2)JAASファイルサーバーを作成し、PLAINを設定します。
ファイルの内容、その後、configディレクトリにkafka_server_jaas.confというファイルを作成します。
KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule必要な ユーザ名 = " カフカ" パスワード = " kafkapswd " user_kafka = " kafkapswd " user_morton = " mortonpswd " }
ユーザー名とパスワードは、接続を開始する他の薬剤とプロキシクラスタのユーザ名とパスワードを指定します。
道の後に接頭辞ユーザー名「USER_」にアクセスするための接続、プロキシのユーザー名とパスワードを作成します。
3)を作成し、クライアントのJAASファイルを設定します。
ファイルの内容、その後、configディレクトリにkafka_client_jaas.confというファイルを作成します。
KafkaClient { org.apache.kafka.common.security.plain.PlainLoginModule必要な ユーザ名 = " モルトン" パスワード = " mortonpswd " }
4)適切な構成ファイルにJAAS設定ファイル:
Kafka-server-start.shは、スクリプト内のサーバー側のJAASファイルの導入を、スクリプトを変更します。
場合は、[ "X $ KAFKA_OPTS" = "X"]; その後、
エクスポートKAFKA_OPTS = " - DJava.security.auth.login.config = .. / configに/ kafka_server_jaas.config"
Fiの
Kafak-console-producer.sh kafka-console-consumer.shの修正及びトルエンは、クライアントスクリプトファイルJAASに導入され、
場合は、[ "X $ KAFKA_OPTS" = "X"]; その後、
エクスポートKAFKA_OPTS = " - DJava.security.auth.login.config = .. / configに/ kafka_client_jaas.config"
Fiの
5)サーバー、生産者と消費者を起動します。
kafka-server-start.sh --deamon ../config/server.properties
kafka-console-producer.sh --brokerリストはlocalhost:9092 --topicカフカアクション--producer-プロパティsecurity.protocol = SASL_PLAINTEXT --producer-プロパティsasl.mechanism = PLAIN
kafka-console-consumer.sh --bootstrapサーバはlocalhost:9092トピックカフカアクション--consumer.property security.protocol = SASL_PLAINTEXT --consumer.property sasl.mechanism = PLAIN
2、アクセス制御
カフカは、アクセス制御のこれらの3種類の操作を追加(追加)、削除(削除)kafka-acls.shスクリプトのサポートクエリ(リスト)を提供します。
カフカACLのアクセス制御を有効にするには、まず第一に、あなたは、server.propertiesファイル内のクラスを達成するために、アクセス制御の設定を増やす必要があります。
authorizer.class.name = kafka.security.auth.SimpleAuthorizer
カフカACLアクセス制御が有効になっている場合、スーパーユーザー以外のデフォルト状態は、すべてのユーザーが何の権利を持っていません。
user2は:;:super.users =ユーザー:ユーザーuser1のserver.propertiesファイル形式でスーパーバイザーを設定します
server.propertiesコンフィギュレーションファイル形式のすべてのユーザーにオープン権限:allow.everyone.if.no.acl.found =真
クライアントが開始カフカに接続する必要があるのでjava.security.auth.login.configに、環境変数の設定ならば、それは必要である、あるいは許可され、クライアントはまだカフカを接続することはできません。スクリプトを実行するクライアントは、このように、このスクリプトでJava.security.suth.login.config環境変数を追加kafka-run-class.shスクリプトを呼び出すため:
#起動モード KAFKA_SASL_OPTS = ' -DJava.security.suth.login.config = .. /設定/ kafka_server_jaas.conf ' であれば [ " X $ DAEMON_MODE " = " xtrue " ]; その後、 nohupを$ JAVA $ KAFKA_HEAP_OPTS $ KAFKA_JVM_PERFORMANCE_OPTS $ KAFKA_GC_LOG_OPTS $ KAFKA_JMX_OPTS $ KAFKA_SASL_OPTS $ KAFKA_LOG4J_OPTS -cp $ CLASSPATH $ KAFKA_OPTS " の$ @ " > " $ CONSOLE_OUTPUT_FILE " 2 >&1 <は/ dev / nullに& 他 EXEC $ JAVA $ KAFKA_HEAP_OPTS $ KAFKA_JVM_PERFORMANCE_OPTS $ KAFKA_GC_LOG_OPTS $ KAFKA_JMX_OPTS $ KAFKA_SASL_OPTS $ KAFKA_LOG4J_OPTS -cp $ CLASSPATH $ KAFKA_OPTS " $ @を" Fiの
クエリのアクセス許可の一覧:
あなたはkafka-acls.shスクリプト(--topic)、コンシューマ・グループ(--group)、クラスター(--cluster)によってアクセス権の現在のリストをトピックを表示することができます。
kafka-acls.sh --authorizer-性質zookeeper.connect = localhostを:2181 --list --cluster
生産者の認可:
kafka-acls.sh --add --authorizer-性質zookeeper.connect = localhostを:2181 --allow-主要ユーザー:モートン--producer --topic = *
--allow-主要なパラメータは、ユーザーの承認(通常のサポート)に割り当てられています。
--deny-主なパラメータには、ユーザーが何らかの権利(定期のサポートを)持っていません指定します。
--Producerパラメータには、ユーザーの生産ロール認可、--operationを通じてアクセス権を与え、書き込みの同等のためのパラメータを説明して指定します。
パラメータのトピックでは、(通常のサポートするために)許可を与えている--topicパラメータ指定します。
--allow-ホストパラメータと--denyホストの生産が可能となり、IPへのアクセスを禁止指定されたパラメータ。
消費者のための認証:
kafka-acls.sh -add --authorizer-特性zookeeper.connect =はlocalhost:2181 --allow-主要ユーザー:モートン--consumer --topic = * --group ACLのグループ
--groupパラメータは、消費者が属しているコンシューマ・グループを指定します。
権限を削除します。
あなたが主題(--topic)、クラスタ(クラスタ)、コンシューマ・グループ(--group)の操作権限のユーザーを削除することができ、適切な権限情報は、パラメータを削除削除。
あなたは、特定の権限を削除--operationパラメータを指定することができます。
--forceパラメータは削除するように強制することができます。
kafka-acls.sh --authorizer-特性飼育係コネクト=ローカルホスト:2181 --remove --topic ACLは、FOO --force