sqoop集成Kerberos

隶属于文章系列:大数据安全实战 https://www.jianshu.com/p/76627fd8399c


  • 创建密钥文件 /var/opt/app/keytab/zkcli.keyTab
  • 创建配置文件:/var/opt/app/keytab/gss-jaas.conf
com.sun.security.jgss.initiate {
   com.sun.security.auth.module.Krb5LoginModule required
   useKeyTab=true
   useTicketCache=false
   principal="[email protected]"
   doNotPrompt=true
   keyTab="/var/opt/app/keytab/zkcli.keyTab"
   debug=true;
};
  • 执行命令用上配置文件
sqoop import  \
-D java.security.auth.login.config=/var/opt/app/keytab/gss-jaas.conf \
-D sun.security.jgss.debug=true \
-D javax.security.auth.useSubjectCredsOnly=false \
--connect jdbc:mysql://172.20.176.138:3306/sqoop --username dishy --password dishy --table jonlen \
--warehouse-dir /tmp/mytargetdir -m 1

问题

sqoop:找不到用户

跟hive类似:导数据也用mapreduce,所以导数据的用户也是在整个集群上都存在
每次在执行sqoop命令前,执行kinit XXX或者kinit -kt ***.keytab来切换用户。

用脚本指定sqoop的运行用户

#!/bin/bash
/usr/bin/expect <<-EOF
      set time 36
      # login

      ### change user
      spawn  kinit ***********
      expect "*Password:*"
      #send "echo '@@@@@@@@@@@@@' \r"
      send "Mzg2NGQ4OTdkM\r"
      expect "*]#"

      ### exec cmd
      send "echo `date` \r"
      expect "*]$"

      send "exit\r"
      expect eof
EOF

你可能感兴趣的:(sqoop集成Kerberos)