6.5. ZooKeeper 身份验证
默认情况下,ZooZ 和 Kafka 之间的连接不会被身份验证。但是,Kafka 和 ZooKeeper 支持 Java 认证和授权服务(JAAS),可用于使用简单身份验证和安全层(SASL)设置身份验证。ZooKeeper 支持在本地存储的凭证中使用 DIGEST-MD5 SASL 机制进行身份验证。
6.5.1. JAAS 配置
					ZooKeeper 连接的 SASL 身份验证必须在 JAAS 配置文件中配置。默认情况下,Kafka 将使用名为 Client 的 JAAS 上下文连接到 ZooKeeper。Client 上下文应该在 /opt/kafka/config/jass.conf 文件中配置。上下文必须启用 PLAIN SASL 身份验证,如下例所示:
				
Client {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="kafka"
    password="123456";
};
Client {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="kafka"
    password="123456";
};6.5.2. 启用 ZooKeeper 身份验证
这个流程描述了如何在连接到 ZooKeeper 时使用 SASL DIGEST-MD5 机制启用身份验证。
先决条件
- ZooKeeper 中启用了 客户端到服务器身份验证
启用 SASL DIGEST-MD5 身份验证
- 在所有 Kafka 代理节点上,创建或编辑 - /opt/kafka/config/jaas.confJAAS 配置文件并添加以下上下文:- Client { org.apache.kafka.common.security.plain.PlainLoginModule required username="<Username>" password="<Password>"; };- Client { org.apache.kafka.common.security.plain.PlainLoginModule required username="<Username>" password="<Password>"; };- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 用户名和密码应该与 ZooKeeper 中配置相同。 - 以下示例显示了 - Client上下文:- Client { org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="123456"; };- Client { org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="123456"; };- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 逐一重启所有 Kafka 代理节点。要将 JAAS 配置传递给 Kafka 代理,请使用 - KAFKA_OPTS环境变量。- su - kafka export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/jaas.conf"; /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties - su - kafka export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/jaas.conf"; /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 有关在多节点集群中重启代理的详情,请参考 第 4.3 节 “执行 Kafka 代理的安全滚动重启”。