当前位置: 首页 > 知识库问答 >
问题:

绕过端口 9092 的 kafka 授权(纯文本)

司空鸣
2023-03-14

我想为我的融合 kafka 添加身份验证和授权,这些Kafka与 docker 一起运行。这应该只发生在端口9093上,9092应该像以前一样工作,因为IP表规则阻止了外部客户端的端口。因此,我使用了以下配置:

=

以下是我配置的一部分:
Kafka容器环境变量

  - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://my.host.ip:9092,SASL_SSL://my.host.ip:9093
  - KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND=false
  - KAFKA_SSL_CLIENT_AUTH=required
  - KAFKA_SECURITY_INTER_BROKER_PROTOCOL=SASL_SSL
  - KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL=PLAIN
  - KAFKA_SASL_ENABLED_MECHANISMS=PLAIN
  - KAFKA_AUTHORIZER_CLASS_NAME=kafka.security.authorizer.AclAuthorizer
  - KAFKA_SUPER_USERS="User:admin"
  - KAFKA_OPTS=-Djava.security.auth.login.config=/etc/kafka/secrets

Zookeeper容器环境变量

  - ZOOKEEPER_SERVERS=0.0.0.0:2888:3888;my.host.ip:2888:3888
  - ZOOKEEPER_SERVER_ID=1
  - ZOOKEEPER_CLIENT_PORT=2181
  - ZOOKEEPER_STANDALONE_ENABLED=false
  - ZOOKEEPER_DATA_DIR=/kafka/data
  - ZOOKEEPER_AUTH_PROVIDER_SASL=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
  - KAFKA_OPTS=-Djava.security.auth.login.config=/etc/kafka/secrets/zookeeper_jaas.conf

由于我只想为SASL_SSL侦听器配置身份验证机制,因此我使用以下jaas配置,如下所述:https://docs.confluent.io/platform/current/kafka/authentication_sasl/index.html#recommended-代理jaas配置。

kafka_jaas.config

KafkaServer {
listener.name.sasl_ssl.plain.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required
  username="admin"
  password="admin"
  user_admin="admin"
};

Client {
org.apache.kafka.common.security.plain.PlainLoginModule required
 username="admin"
 password="admin";
};

zookeeper_jaas.config

Server {
       org.apache.zookeeper.server.auth.DigestLoginModule required
       user_admin="admin";
};

运行kafka时,出现以下错误:

[main-SendThread(s415vm2140.detss.corpintra.net:2181)] WARN org.apache.zookeeper.ClientCnxn - SASL configuration failed: javax.security.auth.login.LoginException: Zookeeper client cannot authenticate using the 'Client' section of the supplied JAAS configuration: '/etc/kafka/secrets/kafka_jaas.conf' because of a RuntimeException: java.lang.SecurityException: java.io.IOException: Configuration Error:
    Line 2: expected [controlFlag] Will continue connection to Zookeeper server without SASL authentication, if Zookeeper server allows it.

如何实现客户端在连接到端口9092时不需要身份验证?

共有1个答案

胡高寒
2023-03-14

在这里阅读更多: https://docs.confluent.io/platform/current/security/zk-security.html

你设置动物园管理员使用摘要,你设置客户端使用普通kafka_jaas

KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
     username="admin"
      password="admin"
      user_admin="admin";
};

Client {
       org.apache.zookeeper.server.auth.DigestLoginModule required
       username="admin"
       password="admin";
};

在动物园管理员_jaas

Server {
   org.apache.zookeeper.server.auth.DigestLoginModule required
       username="admin"
       password="admin"
       user_admin="admin";
};


P. s.1.listener.name.sasl_ssl.plain.sasl.jaas.config=在您的KafkaServer是不正确的

在这里,您还可以使用普通配置的示例

Kafka SASL动物园管理员认证

 类似资料:
  • 配置使用者ACL 配置生产者ACL 我想在两个端口上都用Kafka。9093带有SSL加密和9092 Witout。因此,我用一个简单的控制台消费者/生产者对它进行了测试。端口9093工作正常,我可以消费和产生消息。问题是它不能在端口9092上工作。我总是在时得到身份验证错误。我用“second_user”甚至超级用户“admin”测试了它。为什么它只与安全端口一起工作?我错过了什么配置吗? 我还

  • 综述 这类测试注重于验证每个角色或访问限制文件的特权的授权模式是否良好实现。 对于评估中测试者拥有的每个不同角色,每个功能函数和应用在完成认证环节后的请求,都需要被验证: 未认证用户是否可以访问资源? 登出后是否可以访问资源? 不同角色或权限的用户是否可以访问功能函数和资源? 尝试用管理员用户来访问应用并追踪记录所有的管理功能。 普通权限用户是否可以访问管理功能? 那些拥有不同权限的用户是否可以使

  • 我已经用jwt实现了Spring Security性,并且运行良好。

  • http://${host}:${port}/auth/realms/${realm_name}/authz/protection/resource_set 但是我没有看到一个API来CRUD授权策略和权限。 我试图通过protection/resource_setendpoint创建策略,但失败了:

  • 我正试图通过带有SASL配置的spring集成模块连接到kafka服务器,但出现错误 JAVAlang.IllegalArgumentException:在JAAS配置中找不到“KafkaClient”条目。系统属性的java。安全auth。登录。未设置“配置” 但当我构建简单的消费者和民意调查消息时,一切都很好。有人能告诉我如何关闭JAAS授权或通过它正确连接吗。这是我的Kafka。java和S

  • 授权端点用于与资源所有者交互获取授权许可。 授权服务器必须先验证资源所有者的身份。 授权服务器对资源所有者进行身份验证的方式(例如,用户名和密码登录、会话cookies)超出了本规范的范围。 客户端通过何种方式获得授权端点的位置超出了本文档范围,但该位置通常在服务文档中提供。 端点URI可以包含“application/x-www-form-urlencoded”格式(按附录B)的查询部分(RFC