保护对 Kafka Connect 的 REST API 的访问

Pra*_*bha 8 rest apache-kafka apache-kafka-connect

用于 Kafka Connect 的 REST API 不受保护和身份验证。由于未经身份验证,任何人都可以轻松访问连接器或任务的配置。由于这些配置可能包含关于如何访问源系统 [在 SourceConnector 的情况下] 和目标系统 [在 SinkConnector 的情况下],是否有标准方法来限制对这些 API 的访问?

Eug*_*ene 7

在 Kafka 2.1.0 中,可以在不编写任何自定义代码的情况下为 Kafka Connect 的 REST 接口配置 http 基本身份验证。

由于 REST 扩展机制的实现(参见KIP-285),这成为现实。

简而言之,配置过程如下:

  1. 将扩展类添加到工作器配置文件:
rest.extension.classes = org.apache.kafka.connect.rest.basic.auth.extension.BasicAuthSecurityRestExtension
Run Code Online (Sandbox Code Playgroud)
  1. connect_jaas.conf为应用程序名称“KafkaConnect”创建 JAAS 配置文件(即):
KafkaConnect {
   org.apache.kafka.connect.rest.basic.auth.extension.PropertyFileLoginModule required
             file="/your/path/rest-credentials.properties";
};
Run Code Online (Sandbox Code Playgroud)
  1. rest-credentials.properties在上述目录中创建文件:
user=password
Run Code Online (Sandbox Code Playgroud)
  1. 最后,将您的 JAAS 配置文件通知 java,例如,通过向 java 添加命令行属性:
-Djava.security.auth.login.config=/your/path/connect_jaas.conf 
Run Code Online (Sandbox Code Playgroud)

重启 Kafka Connect 后,如果没有基本身份验证,您将无法使用 REST API。

请记住,使用的类只是示例,而不是生产就绪的功能。

链接:


Han*_*sen 2

这是未来需要改进的已知领域,但现在您应该在 Kafka Connect 计算机上使用防火墙以及 API 管理工具(Apigee 等)或反向代理(haproxy、nginx 等)来确保HTTPS 在您可以配置访问控制规则的端点处终止,然后让防火墙仅接受来自安全代理的连接。对于某些产品,防火墙、访问控制和 SSL/TLS 终止功能都可以在较少数量的产品中完成。