如何配置Kafka集群以使用PAM后端

这篇文章将为大家详细讲解有关如何配置Kafka集群以使用PAM后端,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

创新互联公司,是成都地区的互联网解决方案提供商,用心服务为企业提供网站建设、app软件开发公司、小程序定制开发、系统按需策划和微信代运营服务。经过数10年的沉淀与积累,沉淀的是技术和服务,让客户少走弯路,踏实做事,诚实做人,用情服务,致力做一个负责任、受尊敬的企业。对客户负责,就是对自己负责,对企业负责。

我们将研究如何配置Kafka集群以使用PAM后端而不是LDAP后端。

此处显示的示例将以粗体突出显示与身份验证相关的属性,以将其与其他必需的安全属性区分开,如下例所示。假定已为Apache Kafka集群启用了TLS,并且应该为每个安全集群启用TLS。

security.protocol=SASL_SSL
ssl.truststore.location=/opt/cloudera/security/jks/truststore.jks.truststore.location=/opt/cloudera/security/jks/truststore.jks

我们在以下所有示例中使用kafka-console-consumer。所有概念和配置也适用于其他应用程序。

 

PAM验证

将Kafka集群配置为执行PAM(可插入身份验证模块)身份验证时,Kafka会将客户端的身份验证委派给为其运行的操作系统配置的PAM模块。 

Kafka客户端配置与我们用于LDAP身份验证的配置相同,正如我们在上一篇文章中看到的:

# Uses SASL/PLAIN over a TLS encrypted connectionsecurity.protocol=SASL_SSL.protocol=SASL_SSLsasl.mechanism=PLAIN.mechanism=PLAIN# LDAP credentialssasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="alice" password="supersecret1";.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="alice" password="supersecret1";# TLS truststoressl.truststore.location=/opt/cloudera/security/jks/truststore.jks.truststore.location=/opt/cloudera/security/jks/truststore.jks

上面的配置使用SASL/PLAIN进行身份验证,并使用TLS(SSL)进行数据加密。PAM身份验证的选择是在SASL/PLAIN的服务器端处理程序上配置的,我们将在本节后面介绍。

 

确保正在使用TLS/SSL加密

与LDAP身份验证情况类似,由于用户名和密码是通过网络发送的以用于客户端身份验证,因此对于Kafka客户端之间的所有通信启用并实施TLS加密非常重要。这将确保凭据始终通过网络加密,并且不会受到损害。

必须将所有Kafka代理配置为对其SASL端点使用SASL_SSL安全协议。

其他要求

根据系统中配置的PAM模块,可能需要正确配置一些其他要求才能使PAM身份验证起作用。确切的配置取决于所使用的模块,不在本文档的范围之内。

以下是使用某些PAM模块时可能需要的两个附加配置的简单示例:

  • 如果要使用登录服务的pam_unix模块,则kafka用户(运行Kafka代理的用户)必须有权访问/etc/shadow文件,以使身份验证起作用。

下面的命令只是一个简单的示例,说明如何在单个节点上实现此目标。可能会有更好的方法来确保整个集群都满足此要求。

usermod -G shadow kafka-G shadow kafkachgrp shadow /etc/shadow/etc/shadowchmod 440 /etc/shadow 440 /etc/shadow
  • 如果使用了pam_nologin模块,则代理上文件/var/run/nologin的存在将阻止Kafka的PAM身份验证正常工作。为了使PAM身份验证正常工作,必须从所有代理中删除文件/var/run/nologin,或者必须禁用pam_nologin模块。

 

在Kafka Broker上启用PAM身份验证

安装Kafka服务时,默认情况下未为Kafka代理启用PAM身份验证,但是通过Cloudera Manager对其进行配置非常简单:

在Cloudera Manager中,在Kafka服务配置中设置以下属性以匹配您的环境:通过选择PAM作为上面的SASL/PLAIN身份验证选项,Cloudera Manager将Kafka配置为使用以下SASL/PLAIN回调处理程序:
如何配置Kafka集群以使用PAM后端

org.apache.kafka.common.security.pam.internals..apache.kafka.common.security.pam.internals.PamPlainServerCallbackHandler
  • 配置要用于身份验证的PAM服务:

如何配置Kafka集群以使用PAM后端

  • 单击Kafka>操作>重新启动以重新启动Kafka服务并使更改生效。

 

示例

注意:以下信息包含敏感的凭据。将此配置存储在文件中时,请确保已设置文件许可权,以便只有文件所有者才能读取它。

以下是使用Kafka控制台使用者通过PAM身份验证从主题读取的示例。

$ cat pam-client.properties-client.propertiessecurity.protocol=SASL_SSL.protocol=SASL_SSLsasl.mechanism=PLAIN.mechanism=PLAINsasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="alice" password="supersecret1";.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="alice" password="supersecret1";ssl.truststore.location=/opt/cloudera/security/jks/truststore.jks.truststore.location=/opt/cloudera/security/jks/truststore.jks

$ kafka-console-consumer \-console-consumer \   --bootstrap-server host-1.example.com:9093 \--bootstrap-server host-1.example.com:9093 \   --topic test \--topic test \    --consumer.config ./pam-client.properties--consumer.config ./pam-client.properties

关于如何配置Kafka集群以使用PAM后端就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


分享标题:如何配置Kafka集群以使用PAM后端
文章转载:http://azwzsj.com/article/ggjiji.html