7.5 将安全功能应用在正在运行的集群中

优质
小牛编辑
132浏览
2023-12-01

通过前面讨论的安全协议,选择一个或者多个协议保护正在运行的集群。 您可以通过以下步骤来完善安全功能:

  • 滚动重启集群节点开启额外的安全端口。
  • 使用安全端口重启客户端而不是 PLAINTEXT 端口(假设你正在设置 client-broker 的安全连接 )。
  • 滚动重启集群节点开启 broker和broker之间的安全模式(如果需要的话)。
  • 最后滚动关闭 PLAINTEXT 端口

关于配置 SSL 和 SASL 的详细步骤已经在 7.2 和 7.3 描述了。 遵循文档中的步骤配置你想要的安全协议,开启安全模式。 你可以为 broker-client 之间和 broker-broker 之间的通信配置不同的安全协议。 这两种协议必须分别启用。 PLAINTEXT 端口要同时保持开放,以便 broker 和 clients 能够继续通信
通过SIGTERM(终止进程) 滚动停止 brokers. 在停止下一个节点之前, 等待重新启动的节点的副本回到 ISR 列表是一种好的行为。 举个例子, 假设我们希望使用 SSL 加密 broker 与 client之间 和 broker和broker 之间的通信。 在第一次滚动重启的时候,每个节点上开启 SSL 端口:

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

然后我们重启客户端, 将其配置更改为指向新打开的安全端口:

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

在第二次滚动重启集群节点时, 我们指定 Kafka 使用 SSL 作为 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 与 client之间 和 broker与broker 之间使用不同的协议来通信。 假设我们已经在 broker 与 client 和 broker 之间使用 SSL 加密, 而现在想在 broker 与 client 通信中添加 SASL 认证。在第一次滚动重启节点的时候,我们将开启两个额外的端口来实现两种不同的安全协议。

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

然后我们重启客户端, 将其配置更改为新打开的安全端口(SASL 和 SSAL 端口):

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

第二次滚动重启集群节点的时候, 通过使用我们之前打开的 SSL 端口(9092),将集群切换到 broker-broker 加密的通信。

        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 章节将介绍 ZooKeeper 的安全防护。