竹笋

首页 » 问答 » 环境 » 配置客户端以安全连接到Kafka集群K
TUhjnbcbe - 2023/3/14 19:22:00
白蚀 http://m.39.net/pf/a_4342801.html

这是有关ApacheKafka安全性的简短博客文章系列的第一部分。在本文中,我们将说明如何配置客户端以使用不同的身份验证机制对集群进行身份验证。

可以将受保护的ApacheKafka集群配置为使用以下不同方法来强制执行身份验证:

SSL–TLS客户端身份验证SASL/GSSAPI–Kerberos身份验证SASL/PLAIN–LDAP和基于文件的身份验证SASL/SCRAM-SHA-和SASL/SCRAM-SHA-SASL/OAUTHBEARER在本文中,我们将开始研究Kerberos身份验证,并将重点介绍通过配置为使用Kerberos的集群进行身份验证所需的客户端配置。其他身份验证机制将在本系列的后续文章中介绍。

我们将不在本文中介绍服务器端配置,但在需要使示例更清楚时将添加一些引用。

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

security.protocol=SASL_SSLssl.truststore.location=/opt/cloudera/security/jks/truststore.jks

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

Kerberos身份验证

迄今为止,Kerberos是我们在该领域中用于保护Kafka集群安全的最常用选项。它使用户能够使用存储在ActiveDirectory,RedHatIPA和FreeIPA等服务中的公司身份,从而简化了身份管理。Kerberos化的Kafka集群还使与大数据生态系统中的其他服务集成变得更加容易,该服务通常使用Kerberos进行强身份验证。

Kafka通过简单身份验证和安全层(SASL)框架实现Kerberos身份验证。SASL是身份验证框架,是RFC定义的标准IETF协议。它支持多种不同的身份验证机制,而实现Kerberos身份验证的机制称为GSSAPI。

ThebasicKafkaclientpropertiesthatmustbesettoconfiguretheKafkaclienttoauthenticateviaKerberosareshownbelow:#UsesSASL/GSSAPIoveraTLSencryptedconnectionsecurity.protocol=SASL_SSLsasl.mechanism=GSSAPIsasl.kerberos.service.name=kafka#TLStruststoressl.truststore.location=/opt/cloudera/security/jks/truststore.jks

上面的配置使用Kerberos(SASL/GSSAPI)进行身份验证。TLS(SSL)仅用于通过有线进行数据加密。

JAAS配置

但是,以上属性未向客户端提供其通过Kafka集群进行身份验证所需的凭据。我们需要更多信息。

使用Kerberos时,我们可以通过两种方式将凭据提供给客户端应用程序。以有效的Kerberos票证的形式存储在票证缓存中,或者作为keytab文件,应用程序可以使用该文件来获取Kerberos票证

Kafka客户端中Kerberos凭证的处理由Java身份验证和授权服务(JAAS)库完成。因此,我们需要为客户端配置必要的信息,以便JAAS知道从何处获取凭证。

有两种方法可以为Kafka客户端设置这些属性:

创建一个JAAS配置文件,并将Java系统属性java.security.auth.login.config指向它;要么内联JAAS配置,设置Kafka客户端属性sasl.jaas.config。在本节中,我们显示如何使用这两种方法。为了简单起见,本文中的示例将使用sasl.jaas.config方法。

使用JAAS配置文件

如果您使用的是JAAS配置文件,则需要告诉KafkaJava客户端在哪里找到它。这是通过在命令行中设置以下Java属性来完成的:

...-Djava.security.auth.login.config=/path/to/jaas.conf...

如果您在Cloudera数据平台(CDP)中使用Kafka命令行工具,则可以通过设置以下环境变量来实现:

$exportKAFKA_OPTS=-Djava.security.auth.login.config=/path/to/jaas.conf

配置文件的内容取决于凭证的来源。要使用存储在用户票证缓存中的Kerberos票证,请使用以下jaas.conf文件:

KafkaClient{

1
查看完整版本: 配置客户端以安全连接到Kafka集群K