文档

使用SASL登录认证Kafka服务

更新时间:

SASL(Simple Authentication and Security Layer)是一个框架,允许应用程序层选择和实现各种认证机制。使用SASL可以对用户进行身份验证,确保只有拥有合法凭证的客户端能够连接到Kafka服务,从而显著提升服务的安全性。本文为您介绍如何开启SASL,并使用SASL连接Kafka。

前提条件

已在E-MapReduce控制台创建选择了Kafka服务的DataFlow集群(即Kafka集群),详情请参见创建DataFlow Kafka集群

配置SASL功能

E-MapReduce通过server.properties配置文件的kafka.sasl.config.type配置项来管理配置SASL的策略。

Kafka集群的SASL功能默认关闭,您可以执行以下步骤快速开启SASL功能。本文以配置SASL/SCRAM-SHA-512认证机制为例。

  1. 新增用户。

    1. 使用SSH方式连接集群的Master节点,详情请参见登录集群

    2. 执行以下命令,创建admin用户。

      kafka-configs.sh --bootstrap-server core-1-1:9092 --alter --add-config 'SCRAM-SHA-256=[password=admin-secret],SCRAM-SHA-512=[password=admin-secret]' --entity-type users --entity-name admin
      说明

      本文示例中用户admin的密码为admin-secret,您可以根据实际情况替换。

  2. 进入服务的配置页面。

    1. 登录E-MapReduce控制台

    2. 在顶部菜单栏处,根据实际情况选择地域和资源组

    3. 单击目标集群操作列的集群服务

    4. 集群服务页面,单击Kafka服务区域的配置

  3. 修改SASL认证机制相关的配置。

    1. 设置SASL配置项。

      在Kafka服务配置页面的server.properties页签,添加配置项。

      1. 单击新增配置项

      2. 新增配置项对话框中,添加以下配置,单击确定

        参数

        参数值

        sasl.mechanism.inter.broker.protocol

        SCRAM-SHA-512

        sasl.enabled.mechanisms

        SCRAM-SHA-512

      3. 在弹出的对话框中,输入执行原因,单击保存

    2. 修改listener配置。

      1. 配置页面,单击server.properties页签。

      2. 修改配置项kafka.sasl.config.type的值为CUSTOM,单击保存

      3. 在弹出的对话框中,输入执行原因,单击保存

    3. 配置服务端JAAS。

      • 方式一:通过自定义配置项配置服务端JAAS。

        1. 在Kafka服务配置页面,单击server.properties页签。

        2. 单击新增配置项,新增以下配置项,单击确定

          参数

          参数值

          listener.name.sasl_plaintext.sasl.enabled.mechanisms

          SCRAM-SHA-512

          listener.name.sasl_plaintext.scram-sha-512.sasl.jaas.config

          org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret" ;

        3. 在弹出的对话框中,输入执行原因,单击保存。

      • 方式二:通过文本文件配置JAAS。

        1. 在Kafka服务配置页面,修改以下配置项,单击保存

          页签

          参数

          参数值

          kafka_server_jaas.conf

          kafka.server.jaas.content

          KafkaServer {
          org.apache.kafka.common.security.scram.ScramLoginModule required
          username="admin"
          password="admin-secret";
          };

          server.properties

          kafka_opts

          -Djava.security.auth.login.config=/etc/taihao-apps/kafka-conf/kafka-conf/kafka_server_jaas.conf

        2. 在弹出的对话框中,输入执行原因,单击确认

    4. 配置客户端JAAS。

      通过kafka_client_jaas.conf配置文件的kafka.client.jaas.content配置项,配置Kafka客户端JAAS,该配置将会用于启动Kafka Schema Registry以及Kafka Rest Proxy组件。

      1. 在Kafka服务配置页面,修改以下配置项,单击保存

        页签

        参数

        参数值

        kafka_client_jaas.conf

        kafka.client.jaas.content

        KafkaClient {
        org.apache.kafka.common.security.scram.ScramLoginModule required
        username="admin"
        password="admin-secret";
        };

        schema-registry.properties

        schema_registry_opts

        -Djava.security.auth.login.config=/etc/taihao-apps/kafka-conf/kafka-conf/kafka_client_jaas.conf

        kafka-rest.properties

        kafkarest_opts

        -Djava.security.auth.login.config=/etc/taihao-apps/kafka-conf/kafka-conf/kafka_client_jaas.conf

      2. 在弹出的对话框中,输入执行原因,单击保存。

  4. 重启Kafka服务。

    1. 在Kafka服务的配置页面,选择更多操作 > 重启

    2. 在弹出的对话框中,输入执行原因,单击确定

    3. 确认对话框中,单击确定

使用SASL登录Kafka集群

本文以SASL/SCRAM-SHA-512机制为例,使用Kafka自带的Producer和Consumer执行作业,介绍客户端如何认证登录Kafka服务。

  1. 使用SSH方式登录到集群主节点,详情请参见登录集群

  2. 创建管理员配置文件。

    1. 执行以下命令,创建配置文件sasl_admin.properties。

      vim sasl_admin.properties
    2. 在配置文件中添加以下内容。

      security.protocol=SASL_PLAINTEXT
      sasl.mechanism=SCRAM-SHA-512
      sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret";
  3. 执行以下命令,创建普通用户。

    kafka-configs.sh --bootstrap-server core-1-1:9092 --alter --add-config 'SCRAM-SHA-256=[password=<yourUserpassword>],SCRAM-SHA-512=[password=<yourUserpassword>]' --entity-type users --entity-name <yourUsername> --command-config /root/sasl_admin.properties

    代码中的<yourUsername><yourUserpassword>为您新创建的用户名和密码,请根据实际情况替换。

  4. 创建用户配置文件。

    1. 执行以下命令,创建配置文件sasl_user.properties。

      vim sasl_user.properties
    2. 在配置文件中添加以下内容。

      security.protocol=SASL_PLAINTEXT
      sasl.mechanism=SCRAM-SHA-512
      sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="<yourUsername>" password="<yourUserpassword>";
  5. 执行以下命令,创建Topic。

    kafka-topics.sh --partitions 10 --replication-factor 2 --bootstrap-server core-1-1:9092 --topic test --create --command-config /root/sasl_user.properties

    本文示例中的test为创建的Topic的名称,请您根据实际情况替换。

  6. 执行以下命令,使用SASL配置文件产生数据。

    kafka-producer-perf-test.sh --topic test --num-records 123456 --throughput 10000 --record-size 1024 --producer-props bootstrap.servers=core-1-1:9092 --producer.config sasl_user.properties
  7. 执行以下命令,使用SASL配置文件消费数据。

    kafka-consumer-perf-test.sh --broker-list core-1-1:9092 --messages 100000000 --topic test --consumer.config sasl_user.properties

相关文档

如需在客户端和服务器之间建立加密的数据传输通道,详情请参见使用SSL加密Kafka链接