7.5 将安全功能应用在正在运行的集群中
通过前面讨论的安全协议,选择一个或者多个协议保护正在运行的集群。 您可以通过以下步骤来完善安全功能:
- 滚动重启集群节点开启额外的安全端口。
- 使用安全端口重启客户端而不是 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 的安全防护。