[英]How to implement OAUTHBEARER SASL authentication mechanism in kafka?
[英]fluentd/kafka : SASL authentication requires that SSL is configured
我计划将日志发送到我们的合作弹性搜索集群。
我正在使用 td-agent 将日志转发到连接到协作弹性搜索集群的 Kafka 端点。 我已经安装了带有 td-agent 的 fluent-plugin-kafka 插件,以将日志发送到连接以配合弹性搜索集群的 Kafka 端点
插件网址: https : //github.com/fluent/fluent-plugin-kafka
日志发送路径如下:
logs --> td-agent+fluent-plugin-kafka --> kafka cluster --> elasticsearch --> kibana
问题是,Kafka 端点配置为支持 SASL 身份验证而不支持 SSL,由于日志仅通过合作网络路由,我想不需要 SSL 支持。
我收到以下错误:
2019-04-30 17:46:39 +0900 [error]: #0 /opt/td-agent/embedded/lib/ruby/gems/2.4.0/gems/fluentd-1.3.3/bin/fluentd:8:in `<top (required)>'
2019-04-30 17:46:39 +0900 [error]: #0 /opt/td-agent/embedded/bin/fluentd:23:in `load'
2019-04-30 17:46:39 +0900 [error]: #0 /opt/td-agent/embedded/bin/fluentd:23:in `<main>'
2019-04-30 17:46:39 +0900 [error]: #0 unexpected error error_class=ArgumentError error="SASL authentication requires that SSL is configured"
2019-04-30 17:46:39 +0900 [error]: #0 suppressed same stacktrace
2019-04-30 17:46:39 +0900 [info]: Worker 0 finished unexpectedly with status 1
^C
我的 td-agent 配置是:
#
<source>
@type dummy
dummy {"hello":"world"}
tag test
</source>
<match test>
@type kafka2
brokers stg-ageapdsk101.stg.hnd2.bdd.local:9002,stg-ageapdsk102.stg.hnd2.bdd.local:9002,stg-ageapdsk103.stg.hnd2.bdd.local:9002
principal 'appuser@STGKAFKA100.GEAP.XXX.COM'
keytab 'appuser.keytab'
client_id 'kafka'
sasl_over_ssl false
get_kafka_client_log true
<format>
@type json
</format>
topic_key 'stg_esd_app_elk_1'
get_kafka_client_log true
<buffer topic>
flush_interval 10s
</buffer>
</match>
请帮我解决这个问题。
在带有 Kerberos 身份验证(GSSAPI)的 cloudera 6.3 环境中,fluentd v1.9.2 插件 fluent-plugin-kafkav0.13.0,out_kafka2 不起作用。 作为同一个插件中的替代模块,我尝试了 rdkafka2,现在它可以工作了。
细节;
主体和密钥表与 kafka2 相同
特定于 rdkafka2 service_name 'kafka' 的参数
您可以检查代码,因为它填充了 GSSAPI、SASL_PAINTEXT 场景的所有必要参数。
if @principal
sasl = true
config[:"sasl.mechanisms"] = "GSSAPI"
config[:"sasl.kerberos.principal"] = @principal
config[:"sasl.kerberos.service.name"] = @service_name if @service_name
config[:"sasl.kerberos.keytab"] = @keytab if @keytab
end
if ssl && sasl
security_protocol = "SASL_SSL"
elsif ssl && !sasl
security_protocol = "SSL"
elsif !ssl && sasl
security_protocol = "SASL_PLAINTEXT"
else
security_protocol = "PLAINTEXT"
end
config[:"security.protocol"] = security_protocol
添加到这里,不要忘记添加环境变量 -Djava.security.auth.login.config=/home/user/jaas.conf 了解 jaas conf 这个链接的详细信息。
而不是 sasl_over_ssl false,使用没有值的 ssl_ca_cert
例如
client_id '卡夫卡'
ssl_ca_cert
keytab 'appuser.keytab
谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.