Kafka安全认证-Kerberos&SCRAM

SASL/SCRAM动态认证

配置SASL/PLAIN验证,实现了对Kafka的权限控制。但SASL/PLAIN验证有一个问题:只能在JAAS文件KafkaServer中配置用户,一但Kafka启动,无法动态新增用户。SASL/SCRAM验证可以动态新增用户并分配权限安装步骤.

初始化

①启动Zookeeper服务

[root@CentOS zookeeper-3.4.6]# ./bin/zkServer.sh start zoo.cfg
JMX enabled by default
Using config: /usr/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

②解压kafka安装包

③ 创建SCRAM证书

1、创建broker建通信用户:admin(在使用sasl之前必须先创建,否则启动报错)

[root@CentOS kafka_2.11-2.2.0]# ./bin/kafka-configs.sh --zookeeper CentOS:2181 --alter --add-config 'SCRAM-SHA-256=[password=admin-sec],SCRAM-SHA-512=[password=admin-sec]' --entity-type users --entity-name admin
Completed Updating config for entity: user-principal 'admin'.

2、创建生产用户:producer

[root@CentOS kafka_2.11-2.2.0]# ./bin/kafka-configs.sh --zookeeper CentOS:2181 --alter --add-config 'SCRAM-SHA-256=[password=producer-sec],SCRAM-SHA-512=[password=producer-sec]' --entity-type users --entity-name producer
Completed Updating config for entity: user-principal 'producer'.

3、创建生产用户:consumer

[root@CentOS kafka_2.11-2.2.0]# ./bin/kafka-configs.sh --zookeeper CentOS:2181 --alter --add-config 'SCRAM-SHA-256=[password=consumer-sec],SCRAM-SHA-512=[password=consumer-sec]' --entity-type users --entity-name consumer
Completed Updating config for entity: user-principal 'producer'.

4、查看SCRAM证书信息

  • 查看所有用户证书
[root@CentOS kafka_2.11-2.2.0]# ./bin/kafka-configs.sh --zookeeper CentOS:2181 --describe --entity-type users
Configs for user-principal 'admin' are SCRAM-SHA-512=salt=eGNkNjYzZDJwN24xeTFtaXpic2d6dnY1ag==,stored_key=l4FUWp9mV5gjT2NQT0ehFoZ6xp2UVWo9uzdoqCMTkHwM/QeJLL18ox6Xj4hDe3RBb4nv/RjGsJgKkXHd+cURNg==,server_key=QMAjOMaLnrbzwyJwlXaPFK81HuIQzS9NJJGrQewKlpHO/7oq7Pc8BAxMApyGjv7THFpzcLiFarspyvPJeG1V2w==,iterations=4096,SCRAM-SHA-256=salt=N2FyaWdpenRiYzczeWUwdXpidGN5N2NlYQ==,stored_key=q1rarCTxAZgLT14da2BGoKJ+AR80rqkRSCCH6q+wNC8=,server_key=34mFNBMYr5S8xznga6/N7eWPB16fRgM/uXh1A7Mp9NU=,iterations=4096
Configs for user-principal 'producer' are SCRAM-SHA-512=salt=bTg2dmExaDlucGdrOTh0bGp3dzVleDJzNg==,stored_key=OIKvp1ZqEBYh6l6W6DAaVGoff7qpSQ6QW21TH2k8Flt5V3IpUXXAjq9zkE8M1QHB5dTDaIxudYpDsJrr5sdbgw==,server_key=s2tMQOEb7aR7fFpkGFmy/OOqsDqy/Os32JbCUj3Crd/bXwQsbez5Bp661bliQVze8db9cBNOnvWGrf3smDJQNg==,iterations=4096,SCRAM-SHA-256=salt=NWJpajRncXR2MW8wOW04NzNqanM0YTI0Yg==,stored_key=HamFB9o2XMNzDyNhCCkBfDo73rwF9spdM3joIui7nZY=,server_key
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kafka 开启了 Kerberos 认证后,连接 ZooKeeper 需要进行以下步骤: 1. 配置 Kafka 服务器以使用 Kerberos 认证。在 Kafka 配置文件(通常是 `server.properties`)中,添加以下属性: ``` listeners=SASL_PLAINTEXT://<Kafka_server_host>:<Kafka_server_port> security.inter.broker.protocol=SASL_PLAINTEXT sasl.mechanism.inter.broker.protocol=GSSAPI sasl.kerberos.service.name=kafka ``` 2. 配置 ZooKeeper 服务器以支持 Kerberos 认证。在 ZooKeeper 配置文件(通常是 `zoo.cfg`)中,添加以下属性: ``` authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider requireClientAuthScheme=sasl jaasLoginRenew=3600000 jaasLoginRefresh=3600000 ``` 3. 生成 Kafka 和 ZooKeeper 的 Kerberos Keytab 文件。Keytab 文件包含了用于服务认证的凭证信息。可以使用 `kadmin` 命令行工具生成 Keytab 文件。 4. 在 Kafka 服务器上配置 Kerberos 客户端。将 Kafka 和 ZooKeeper 相关的 Keytab 文件分发到 Kafka 服务器上,并配置 Kerberos 客户端以使用这些文件。 5. 启动 Kafka 服务器和 ZooKeeper 服务器。确保 Kafka 服务器和 ZooKeeper 服务器都已正确配置并启动。 6. 使用 Kafka 客户端连接到 ZooKeeper。在代码中,使用适当的配置和认证信息创建 Kafka 客户端,并指定 ZooKeeper 的连接字符串,例如: ```java Properties props = new Properties(); props.put("bootstrap.servers", "<Kafka_server_host>:<Kafka_server_port>"); props.put("security.protocol", "SASL_PLAINTEXT"); props.put("sasl.kerberos.service.name", "kafka"); props.put("group.id", "<consumer_group_id>"); KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props); consumer.subscribe(Arrays.asList("<topic_name>")); while (true) { ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100)); // 处理消费记录 } ``` 请注意,上述步骤是一个基本的指南,实际操作中可能会有其他配置和设置需求。详细的步骤和配置可以参考 Kafka 和 ZooKeeper 的官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值