security - 如何在不停机的情况下在 Kafka 集群中启用安全性

标签 security ssl apache-kafka kerberos apache-kafka-security

我们有一个生产中的 Kafka 集群 没有 任何安全。我们计划在代理端开启安全性(SASL/OAUTHBEARER)。但是看起来只要我们打开代理端安全性,所有不安全的客户端都会立即被删除。
为了从不安全集群平稳过渡到安全集群,并且没有任何停机时间,我们希望 Kafka 客户端首先启用安全性。一旦我们所有的客户都迁移了,我们就可以打开代理级别的安全性。
但是,我找不到安全客户端可以与不安全的经纪人交谈的方法。有人做过吗?
关于顺利迁移到生产安全的任何想法?

最佳答案

在 Kafka 2.0 中,允许以下协议(protocol)组​​合:

+------------------+-------+-----------+
|                  |  SSL  |  Kerberos |
+------------------+-------+-----------+
| PLAINTEXT        |  No   |    No     |
| SSL              |  Yes  |    No     |
| SASL_PLAINTEXT   |  No   |    Yes    |
| SASL_SSL         |  Yes  |    Yes    |
+------------------+-------+-----------+

这些组合适用于代理到代理和代理到客户端,但这里的关键配置是 security.inter.broker.protocol对于经纪人对经纪人和经纪人对客户,这不必相同。这意味着我们可以在不停机的情况下在 Kafka 集群中启用安全性。

启用 Kerberos
  • 第一步:禁用代理到代理的安全性
  • security.inter.broker.protocol=PLAINTEXT
    
  • 第二步: Enable Kerberos for broker-to-client in server.properties
  • 第三步:滚动重启
  • 第四步:为代理到代理启用 Kerberos
  • security.inter.broker.protocol=SASL_PLAINTEXT
    

    启用 SSL
  • 第一步:禁用代理到代理的安全性
  • security.inter.broker.protocol=PLAINTEXT
    
  • 第二步: Enable SSL for broker-to-client in server.properties
  • 第三步:滚动重启
  • 第四步:为代理到代理启用 SSL
  • security.inter.broker.protocol=SSL
    

    关于security - 如何在不停机的情况下在 Kafka 集群中启用安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60404127/

    相关文章:

    java - 如何使用 java.security 禁用密码套件

    security - JSONP 可以安全使用吗?

    ruby-on-rails - Rails Controller 中的客户端 SSL 身份验证

    apache-kafka - 如何在 Kafka Rest API 中指示消费者偏移量

    ios - 使用远程服务器、本地脚本和许可证 key 保护 Cocoa Touch 库的安全

    php - 保护网络应用程序的基本原则?

    ssl - 添加了 Heroku SSL 但访问域仍然说连接不是私有(private)的

    java - 试图在 java 中将证书添加到我的 post 方法

    ssl - kafka - ssl握手失败

    apache-spark - 组中的一个 Kafka 消费者始终拒绝协调器,但仅当 Spark 和 Kafka 都在 EC2 中时