【kafka系列教程48】kafka在正在运行的集群中整合安全功能

将安全功能合并到运行的群集中

你可以为正在运行的集群增加1个或多个我们前面讨论的安全协议,这是分阶段完成的:

  • 以增量替换的方式添加额外的安全端口(s)。
  • 客户端使用安全的端口来连接,而不是PLAINTEXT端口的(假设你是客户端需要安全连接broker)。
  • 再次增量的方式依次启用broker与broker之间的安全端口(如果需要)
  • 最后依次关闭PLAINTEXT端口。

7.2和7.3节介绍了配置SSL和SASL的具体步骤。 按照以下步骤启用所需的安全协议。

broker与clientbroker与broker之间配置安全通讯协议。这些都必须新增启用,PLAINTEXT端口必须保留,是为了broker或客户端可以继续通讯。

当依次替换时,broker通过SIGTERM进行清理。等待重新启动的副本在移动到下一个节点之前返回到ISR列表也是一个很好的做法。

举个例子,假设我们希望在broker与clientbroker与broker之间使用SSL进行通讯加密,那么需要在每个节点上打开SSL端口:

listeners=PLAINTEXT://broker1:9091,SSL://broker1:9092

然后,我们重新启动client,改变指向新的安全端口:

bootstrap.servers = [broker1:9092,...]
security.protocol = SSL
...etc

设置broker-broker协议(同样使用SSL端口):

listeners=PLAINTEXT://broker1:9091,SSL://broker1:9092
security.inter.broker.protocol=SSL

最后,我们关闭PLAINTEXT端口:

listeners=SSL://broker1:9092
security.inter.broker.protocol=SSL

另外,我们也可以打开多个端口,使用不同协议实现broker-broker和broker-client之间通讯。假设我们希望都使用SSL加密(即,broker-broker和broker-client通讯),但是我们也想对broker-client连接增加SASL认证,我们通过打开2个额外的端口来实现这一点:

listeners=PLAINTEXT://broker1:9091,SSL://broker1:9092,SASL_SSL://broker1:9093

然后,重新启动客户端,改变他们的配置指向新的SASL&SSL安全端口:

bootstrap.servers = [broker1:9093,...]
security.protocol = SASL_SSL
...etc

然后,服务器将逐步切换,切换broker-broker之间的通讯到SSL。

listeners=PLAINTEXT://broker1:9091,SSL://broker1:9092,SASL_SSL://broker1:9093
security.inter.broker.protocol=SSL

最后,关闭PLAINTEXT端口.

listeners=SSL://broker1:9092,SASL_SSL://broker1:9093
security.inter.broker.protocol=SSL

ZooKeeper可以独立于Kafka集群进行安全保护。

 

 

ZooKeeper认证

7.5.1 新集群

若启用对broker的Zookeeper认证,有两个必要步骤:

  1. 创建一个JAAS登录文件并设置适当的系统属性指向它,如上文所述。
  2. 设置配置属性 zookeeper.set.acl的每个broker为true

存储在Zookeeper的元数据是这样的,只有broker能够修改相应的znodes,但是znodes是都可读的,原因是,存储在zookeeper的数据是不敏感的,但是znodes不当的操作可能导致集群中断,我们还是建议通过网络分割限制zookeeper(仅允许broker和一些管理工具访问zookeeper)。

7.6.2 迁移集群

如果你使用kafka的版本不支持安全的或简单的禁用安全,你想设置集群安全,则需要执行以下步骤启用ZooKeeper认证(最小的中断操作):

  1. 滚动重新启动设置的JAAS登录文件,这使broker进行身份认证,在滚动重启结束后,broker就能够用ACL操作这些znode(节点)了(但不能创建)。

  2. 执行第二次滚动重启,这次设置配置参数zookeeper.set.acl为true,这样就能使用安全的ACL创建znode。

  3. 执行ZkSecurityMigrator工具,执行脚本:./bin/zookeeper-security-migration.sh,zookeeper.acl 设置secure,这个工具将遍历更改 Acl 的 znodes 相应的 sub-trees。

也在安全集群中关闭认证,按照以下步骤:

  1. 滚动重新启动设置的JAAS登录文件,启动broker认证,但是设置zookeeper.set.acl为false。重启结束之后,broker停止用ACL创建znodes,但是仍然能认证和操作znodes。

  2. 执行ZkSecurityMigrator工具,运行脚本:./bin/zookeeper-security-migration.sh,zookeeper.acl设置为不安全的,这个工具将遍历更改 Acl 的 znodes 相应的 sub-trees。

  3. 执行第二次滚动重启broker,这次忽略了JAAS登录文件设置系统属性。

提供一个例子,如何运行迁移工具:

./bin/zookeeper-security-migration --zookeeper.acl=secure --zookeeper.connection=localhost:2181

查看完整列表:

./bin/zookeeper-security-migration --help

7.6.3 Migrating the ZooKeeper ensemble

也有必要对全部zookeeper启用身份验证。要做到这一点,我们需要设置一些属性参数。请参阅更详细的zookeeper文档︰:

  1. Apache ZooKeeper documentation
  2. Apache ZooKeeper wiki

Kafka Connect

8.1 概述

Kafka Connect 是一个可扩展、可靠的在Kafka和其他系统之间流传输的数据工具。它可以通过connectors(连接器)简单、快速的将大集合数据导入和导出kafka。Kafka Connect可以接收整个数据库或收集来自所有的应用程序的消息到Kafka Topic。使这些数据可用于低延迟流处理。导出可以把topic的数据发送到secondary storage(辅助存储也叫二级存储)也可以发送到查询系统或批处理系统做离线分析。Kafka Connect功能包括:

  • Kafka连接器通用框架:Kafka Connect 规范了kafka与其他数据系统集成,简化了connector的开发、部署和管理。

  • 分布式和单机模式- 扩展到大型支持整个organization的集中管理服务,也可缩小到开发,测试和小规模生产部署。 

  • REST 接口- 使用REST API来提交并管理Kafka Connect集群。

  • 自动的offset管理- 从connector

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值