Kafka安全认证-SASL

Kafka0.10提供SASL/PLAIN,这是一种简单的用户名/密码安全认证机制。

配置Kafka Brokers

  • 创建kafka_server_jaas.conf
1
2
3
4
5
6
7
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret"
user_alice="alice-secret";
};

这里定义了两个用户,admin和alice。username和password用于集群内部通讯,即当前broker使用admin/admin-secret去连接别的broker。而user_userName=”password”定义了能够访问这个broker的用户及其密码。

将kafka_server_jaas.conf拷贝到Kafka的所有broker上

  • 将kafka_server_jaas.conf加入到Kafka broker启动参数中

    1
    -Djava.security.auth.login.config=${PATH}/kafka_server_jaas.conf
  • 在server.properties中配置SASL端口和SASL实现机制,例如

    1
    2
    3
    4
    listeners=SASL_PLAINTEXT://localhost:9092
    security.inter.broker.protocol=SASL_PLAINTEXT
    sasl.mechanism.inter.broker.protocol=PLAIN
    sasl.enabled.mechanisms=PLAIN

配置Kafka Clients

  • 创建kafka_client_jaas.conf,consumer和producer使用它来访问Kafka broker
    1
    2
    3
    4
    5
    KafkaClient {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="alice"
    password="alice-secret";
    };

属性username和password被用于配置到Kafka broker的连接。在这个例子中,clients使用用户alice连接broker

  • 将kafka_client_jaas.conf加入到Kafka client启动参数中:

    1
    -Djava.security.auth.login.config=${PATH}/kafka_client_jaas.conf
  • 在producer.properties或者consumer.properties中加入以下配置:

    1
    2
    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=PLAIN