1、創建主體
注:
192.168.0.230 為單節點集群
192.168.4.50為kdc服務器
192.168.0.9為客戶端
1.1、Kdc服務器創建主體
# kadmin.local -q ‘addprinc -randkey presto’
#kadmin.local -q ‘addprinc -randkey presto/yjt’
1.2、創建秘鑰文件
# kadmin.local -q ‘xst -norandkey -k presto.keytab presto presto/yjt hive/yjt nn/yjt’
上述的hive/yjt 和nn/yjt兩個認證用戶也需要添加到秘鑰表,hive/yjt用於presto連接hive集群時使用,nn/yjt用戶操作hdfs時使用
1.3、分發秘鑰文件
# scp presto.keytab 192.168.0.230:/data1/hadoop/presto
如下操作在集群
# chmod 444 /data1/hadoop/presto/presto.keytab
1.4、生成keystore文件
在presto主節點生成keystore
# keytool -genkeypair -alias localhost -keyalg RSA -keystore keystore.jks
輸入密鑰庫口令:
再次輸入新口令:
您的名字與姓氏是什么?
[Unknown]: yjt
您的組織單位名稱是什么?
[Unknown]:
您的組織名稱是什么?
[Unknown]:
您所在的城市或區域名稱是什么?
[Unknown]:
您所在的省/市/自治區名稱是什么?
[Unknown]:
該單位的雙字母國家/地區代碼是什么?
[Unknown]:
CN=slave1, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正確?
[否]: y
輸入 <localhost> 的密鑰口令
(如果和密鑰庫口令相同, 按回車):
再次輸入新口令:
注:上述的別名alias為當前的主機名,也可以使用localhost
2、修改presto配置文件
2.1、修改hive.properties
添加如下屬性:
#配置Presto訪問HiveMetastore服務的Kerberos信息,該段配置可以只存在Presto的Coordinator節點
hive.metastore.authentication.type=KERBEROS
hive.metastore.service.principal=hive/_HOST@HADOOP.COM
hive.metastore.client.principal=presto/yjt@HADOOP.COM
hive.metastore.client.keytab=/data1/hadoop/presto/presto.keytab
#配置Presto訪問HDFS的Kerberos信息,改段配置可以只存在Presto的Worker節點
hive.hdfs.authentication.type=KERBEROS
hive.hdfs.impersonation.enabled=true
hive.hdfs.presto.principal=nn/_HOST@HADOOP.COM
hive.hdfs.presto.keytab=/data1/hadoop/presto/presto.keytab
2.1、修改jvm.properties
添加如下屬性:
-Dsun.security.krb5.debug = true
-Dlog.enable-console = true
-Djava.security.krb5.conf=/etc/krb5.conf
2.2、修改config.properties
添加如下屬性:
http-server.authentication.type=KERBEROS
http.server.authentication.krb5.service-name=presto
http.server.authentication.krb5.keytab=/data1/hadoop/presto/presto.keytab
http.authentication.krb5.config=/etc/krb5.conf
http-server.https.enabled=true
http-server.https.port=7778
http-server.https.keystore.path=/data1/hadoop/presto/keystore.jks
#http-server.https.keystore.path=/data1/hadoop/keystore/keystore
http-server.https.keystore.key=123456
注:上述的http-server.https.keystore.key值為創建keystore時輸入的密碼。
2.3、重啟presto
# launcher restart
3、測試
$ presto --server https://yjt:7778 --krb5-config-path /etc/krb5.conf --krb5-principal presto/yjt --krb5-keytab-path /data1/hadoop/presto/presto.keytab --krb5-remote-service-name presto --keystore-path /data1/hadoop/keystore/keystore --keystore-password 123456 --catalog hive --schema default