• kafka-producer kerberos 原理和配置


    kerberos简单介绍

    kerberos这一名词来源于希腊神话“三个头的狗---地狱之门守护者”后来沿用作为安全认证的概念,该系统设计上

    采用客户端/服务器结构与DES(Data Encryption Standard标准加密技术),AES(Advanced Encryption Standerd

    高级加密技术)等加密技术,并且能够进行相互认证,即客户端和服务端均可对对方进行身份认证。可以防止窃听、

    防止replay攻击、保护数据完整性等场合,是一种应对对称密钥体制进行密钥管理的系统。

    基本概念

    票据授权票(TGT Ticket Granting):

    用于应用程序与KDC(Key Distribution Center 密钥分发中心)服务器建立安全会话的票据,票据授权票存在有效期,

    当票据授权票失效后,应用侧需要重新建立与KDC服务器的安全会话。会话有效期为24小时,不可配置。

    服务票据(ST Service Ticket):

    用于应用程序与服务端建立安全会话的票据,服务票据存在有效期,当服务票据失效后,应用侧需要重新建立于

    服务端的安全会话。默认有效期5分钟,不可配置。

    kafka kerberos 配置

    详见网络说明在这里不再赘述:http://orchome.com/500

    kafka kerberos producer客户端配置

    1)使用配置文件kafka-console-producer.sh生产数据

    cat kafka_client_jaas.conf 文件配置

    KafkaClient {
    com.sun.security.auth.module.Krb5LoginModule required
    useTicketCache=false
    useKeyTab=true
    keyTab="/hbase/test.keytab"
    principal="test@KERBEROS.TEST"
    serviceName="kafka"
    Client=true;
    };
    

     配置环境变量KAFKA_OPTS 举例说明

    export KAFKA_OPTS="-Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.auth.login.config=/kafka_client_jaas_acl.conf"
    

     cat producer.properties

    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=GSSAPI
    sasl.kerberos.service.name=kafka
    

     生产脚本kafka-console-producer.sh

    ./kafka-console-producer.sh --broker-list hostname:9092 --topic TEST_ACL1 --producer.config producer.properties

     kafka kerberos producer客户端JAVA代码设置

    import org.apache.kafka.clients.producer.*;
    import java.util.Properties;
    
    /**
     * Created by Administrator on 2018-05-24.
     */
    public class mykafkaprocucerwithkerberos {
    
        private static final String BROKER_LIST = "127.0.0.1:9093";
    
    
        public static void main(String[] args) throws InterruptedException {
    
            String rootPath = System.getProperty("user.dir");
            System.setProperty("java.security.krb5.conf", rootPath + "/src/main/resources/krb5.conf");
            System.setProperty("java.security.auth.login.config",rootPath + "/src/main/resources/kafka_client_jaas.conf");
    
            Properties props1 = new Properties();
            Producer<String, Object> producer1=null;
            props1.put("bootstrap.servers", BROKER_LIST);
            props1.put("security.protocol","SASL_PLAINTEXT");
            props1.put("sasl.mechanism","GSSAPI");
            props1.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
            props1.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
    
            producer1= new KafkaProducer<String,Object>(props1);
            int line = 1;
            while (line <=4) {
                ProducerRecord<String, Object>    message1= new ProducerRecord<String, Object>("TEST_ACL1","TEST_TOPIC_DATA");
                producer1.send(message1, new Callback() {
                    public void onCompletion(RecordMetadata recordMetadata, Exception e) {
                        if( e!=null){
                            e.printStackTrace();
                            System.out.println("failed");
                        }else {
                            System.out.println(recordMetadata.topic());
                        }
                    }
                });
                line++;
            }
            producer1.close();
        }
    }
    
  • 相关阅读:
    DOS批处理命令-SET命令
    DOS批处理命令-注释
    DOS批处理命令-pause
    DOS批处理命令-goto命令
    [2020.8.3]联想 Z5S(L78071) Magisk ROOT 纯净无推广 一键刷机 ZUI_11.1.171
    [2020.8.3]联想 ZUK Z1 Magisk ROOT 纯净无推广 一键刷机 ZUI_
    [2020.8.3]联想 Z5(L78011) Magisk ROOT 纯净无推广 一键刷机 ZUI_11.1.053
    [2020.8.3]联想 Z6 Pro 5G(L79041) Magisk ROOT 纯净无推广 一键刷机 ZUI_11.3.363
    [2020.8.3]联想 Z6 青春版(L38111) Magisk ROOT 纯净无推广 一键刷机 ZUI_11.1.094
    [2020.8.3]联想 Z6 Pro(L78051) Magisk ROOT 纯净无推广 一键刷机 ZUI_11.1.105
  • 原文地址:https://www.cnblogs.com/boanxin/p/9144214.html
Copyright © 2020-2023  润新知