kafka在正在运行的集群中整合安全功能

原创
半兽人 发表于: 2016-07-29   最后更新时间: 2019-03-22 10:02:39  
{{totalSubscript}} 订阅, 12,228 游览

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

你可以为正在运行的集群增加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集群进行安全保护。第7.6.2节将介绍相关步骤。

更新于 2019-03-22

假设配置为listeners=PLAINTEXT://broker1:9091,SASL://broker1:9092,切换完成之后9091端口还能接受到没人认证到请求吗

查看kafka更多相关的文章或提一个关于kafka的问题,也可以与我们一起分享文章