问题标签 [apache-kafka-security]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apache-kafka - Kafka集群CA证书如何处理?
我已经安装了 Strimzi Kafka 并创建了启用 TLS 的集群,如下所示:
自动创建的 Kafka 集群 CA 证书如下所示:
问题是:一年过去了我该怎么办(因为证书自动创建了 1 年)。我对客户端(生产者/消费者)使用 TLS 身份验证——因此我将此证书添加到客户端的 SSL 信任库。一年过去了,我应该在客户端上需要什么?我猜想用新的集群 CA 证书更新信任库?
apache-kafka - 如何将具有自定义 SSL 证书的用户(生产者或消费者)添加到 Kafka 集群?
我安装了带有 TLS 侦听器的 Kafka 集群的 Strimzi Kafka(在 OpenShift 中,如果重要的话)。当我添加一个KafkaUser
我请求 TLS 身份验证时:
然后我提取由 Strimzi 用户的密钥库创建的,并在我从客户端代码连接到 Kafka 引导服务器时提供它。
问题:添加时如何提供自定义 SSL 证书KafkaUser
,或者有没有办法用自定义证书替换自动生成的 SSL 用户证书(例如延长有效期)?特别是,将用户证书添加到哪个密钥的信任库?或者这是一个不好的做法,我应该坚持自动生成?
apache-kafka - 使用 Kafka 安全管理器进行 ACL 进行架构注册表
我有一个运行 Zookeeper、Confluent Schema 注册表和 Kafka 安全管理器(KSM)的 Kafka 集群。KSM,https://github.com/conduktor/kafka-security-manager是一种软件,它可以使用 csv 文件而不是使用命令行工具来轻松管理 Kafka ACL。
融合模式注册表让我们为 Kafka 存储 Avro 模式。它目前是开放的,我需要保护它。我只想给每个用户 READ 或 GET 权限。我目前正在使用 Kubernetes 来部署所有工具。
我怎么能用 KSM 做到这一点?我在哪里可以找到示例?
谢谢
apache-kafka - 选择正确的 KafkaUser 身份验证类型?
也许我错过了什么,如果是这样,请原谅我的无知。
这里我们有:
- 我们在 Kafka 集群中使用 TLS 身份验证侦听器(这可以更改,我们可以添加新类型的侦听器)。
- 从 Java 代码连接到 Kafka 主题时,我使用为 Kafka 用户生成的 SSL 证书。
如果我决定避免使用 SSL 证书,原因有两个:
- 我将仅从受信任的 OpenShift 集群 POD 连接到 Kafka 主题
- 为避免生产者/消费者端更新重新生成年度用户的 SSL 证书(因为 Kafka 生成的用户证书有效期为 1 年)
由于上述两个原因,KafkaUser 的 SCRAM-SHA-512 身份验证类型会是更好的(也是唯一的?)选择吗?或者 SCRAM-SHA-512 也需要 SSL 证书?
我看到的另一种方法是不进行身份验证,但我不确定 ACL 如何用于此类用户?我如何将用户正在连接的服务器信息传递给服务器。是否可以同时使用 ACL 而不是通过 SSL 证书或密码 Kafka 用户进行身份验证?
[UPD]环境建立在 Strimzi(OpenShift 中的 Apache Kafka 集群)之上
apache-kafka - Apache Kafka Spout SSL
我们正在创建一个带有 kafka spout 的 STORM 拓扑。Kafka 上的数据使用来自生产者的 SSL 进行加密。我们使用直接 Storm Bolt 集成来访问来自 Kafka Spout 的数据,如下所示
我们如何配置 Kafka Spout 来访问加密数据?
docker - 在kafka中设置ACL后无法生产
我在本地使用wurstmeister kafka和zookeeper docker图像来测试 kafka 中的 SASL 和 ACL。
我的 docker-compose.yml是 -
以下是 zookeeper 和 kafka 的 jaas 文件 -
zookeeper.sasl.jaas.config -
kafka.jaas.config -
我创建了 zookeeper 和 kafka 容器,并在 kafka 容器中运行了命令 -
但是当我尝试从我的 go 代码(使用 sarama)中产生事件时 - 它给出了错误
我的代码是 -
我也尝试了带有 --bootstrap-server (command - ./kafka-acls.sh --bootstrap-server localhost:9092 --add --allow-principal User:alice --producer --topic testtopic
) 参数的 kafka-acls.sh 但是脚本会卡住,我可以在 kafka docker 日志中观察到身份验证错误-
PS:如果我只使用 SASL(没有 ACL),一切都可以正常工作
现在我被困在 acl 部分。任何人都知道我缺少什么(可能在 zookeeper 或 kafka 配置中)?
任何帮助表示赞赏。提前致谢。
nullpointerexception - 使用 SASL/SCRAM 连接到 Kafka 代理时出现 NullPointerException 异常
我们在 application.YAML 中配置了两个 Kafka 代理,一个使用 SASL KERBEROS,另一个使用 SASL SCRAM。在启动服务时,它使用 SASL KERBEROS 连接到代理,并低于其他代理 (SASL SCRAM) 的错误。当我们在应用程序 YAML 中使用 SALS SCRAM 连接到一个代理时,它正在连接且没有任何错误
==================================================== ============================================= 将 SASL 客户端状态设置为 RECEIVE_APIVERSIONS_RESPONSE main] OakcsaSaslClientAuthenticator 将 SASL 客户端状态设置为 SEND_HANDSHAKE_REQUEST main] OakcsaSaslClientAuthenticator 将 SASL 客户端状态设置为 RECEIVE_HANDSHAKE_RESPONSE main] OakcsaSaslClientAuthenticator 将 SASL 客户端状态设置为 INITIAL main] o.apache.kafka.common.network.Selector 来自 100.76.140.194 的意外错误;关闭连接
java.lang.NullPointerException:在 org.apache.kafka.common.security.authenticator.SaslClientAuthenticator.sendInitialToken(SaslClientAuthenticator.java) 的 org.apache.kafka.common.security.authenticator.SaslClientAuthenticator.sendSaslClientToken(SaslClientAuthenticator.java:389) 处为空:296) 在 org.apache.kafka.common.security.authenticator.SaslClientAuthenticator.authenticate(SaslClientAuthenticator.java:237)
应用程序.YAML
java - 是否可以将环境变量引用为 Kafka 的 kafkaProducer.properties 和 KafkaConsumer.properties 文件中的属性值
我有一个生产者和消费者 java 代码,我试图升级它以连接受 SSL 保护的 Kafka。我的情况是,与 ssl 相关的密码只能通过环境变量提供。那么是否可以直接引用KafkaProducer.properties和KafkaConsumer.properties文件中的环境变量引用的值
例如:我在linux系统中声明了一个环境变量 SSL_KEY_PASSWORD=password
在 KafkaProducer/Consumer 属性中,我声明为 ''' ssl.key.password=${SSL_KEY_PASSWORD} '''
示例 KAFKA 消费者/生产者属性文件配置可能如下所示,
ssl - 使用 SASL/PLAIN 设置 kafka 安全集群
我试图通过https://docs.confluent.io/platform/current/security/security_tutorial.html使用 SSL 密钥和用户名/密码来设置集群,就像描述的那样。
但未能找到正确的方法来设置密钥的 dname 和代理的参数“super.users”
它被告知要创建一个密钥:
稍后在配置代理的server.properties时,我们需要设置一个 super.users:
由于本教程将代理间安全协议配置为 SSL,因此将超级用户名设置为代理证书中配置的可分辨名称。(请参阅其他授权配置选项)。
super.users=用户:;用户:;用户:;用户:kafka-broker-metric-reporter
问题是 dname 必须遵循一个模式:“CN=cName, OU=orgUnit, O=org, L=city, S=state, C=countryCode”
此外,kafka 对 CN 有一个限制:它必须等于 SAN FQDN 设置。
所以,一个问题是:
如果我们有一个 localhost 并使用单个代理设置集群,我们是否应该为“CN = localhost”之类的键设置 dname 并且命令将是:
然后在 server.properties 条目中:
?
如果是真的,第二个问题:如果我们仍然有一个 localhost 并在那里设置 2 个单独的代理。那么,我们会有相同的 dname 吗?
apache-kafka - 将主题创建和 ACL 操作仅限于 Strimzi 中的管理员用户
我正在运行 Strimzi 的 0.24.0 版本。
我已经设置了 SSL 身份验证和 ACL。我可以添加/删除 ACL,它按预期工作。目前它允许任何人创建、更新和删除 ACL。此外,它允许任何人在集群上创建主题。
我们希望将主题创建和 ACL 创建/更新限制为用户子集。
如何在 Strimzi 集群上实现它?
我设置了以下值,但似乎没有效果。我确定我还缺少其他配置。
谢谢。乙脑