【trino https】trino权限验证开启https

一. 背景

presto使用的很顺利,项目要求把presto的账号开放出去,供其他用户自己使用。因为目前的presto的jdbc链接是没有口令的,只要拿到这个链接,任何人都可以使用,且无法追踪任务提交的用户,这对presto和集群是一个大的风险,因此需要给presto加上权限控制。因为presto有两个版本,一个是目前的facebook的prestodb,更新到0.265.1,目前我们使用的prestodb0.220,另一个是创始团队重新创建的一个项目叫trino,更新到364版本。在调查了双方的官方安装包及社区活跃度的一些问题,选择了使用trino的363版本。

关于trino的权限安装,会分两篇介绍,本文介绍stand alone方式,下篇介绍trino on kubenetes

官方文档

trino官方文档icon-default.png?t=LA92https://trino.io/docs/current/security/tls.html

二.申请域名及证书

要使用trino的权限控制,从官方文档上看,需要开启https,因此一定需要证书的,所以先申请域名及证书

域名的申请:因为有专门的网络管理人员负责这一块,我只提供了一个名称,由他去做域名的申请,域名 wux-prestotest.seagate.com

证书申请:申请证书,网管要求有一个csr文件,关于csr文件,我是用java工具keytool生成的

首先生成keystore,有效期为2年(730天)

keytool -genkey -alias presto -keyalg RSA -keysize 2048 -validity 730 -storetype PKCS12 -keystore presto.jks

根据生成的jks生成csr

keytool -certreq -alias presto -keyalg RSA -file presto.csr -keystore presto.jks -ext "SAN=dns:wux-prestotest.seagate.com"

把csr发给网管,他做好证书会给你一个key和一个证书,我的证书是.p12的文件,可以根据.p12转换成crt文件(openssl pkcs12 -in wux-prestotest.seagate.com.p12 -nokeys -out wux-prestotest.seagate.com.crt)

 这样证书和域名都做好了。

三.trino安装

trino安装包下载

trino363安装包icon-default.png?t=LA92https://repo1.maven.org/maven2/io/trino/trino-server/363/

trino363要求jdk11以上,官方推荐去这个地址下载jdk

jdk-azul下载icon-default.png?t=LA92https://www.azul.com/downloads/?package=jdk

下载完成之后配置好jdk环境变量,解压trino安装包,解压后如下,里面是没有etc目录的,etc目录需要自己配置 

【trino https】trino权限验证开启https_第1张图片

我们可以先尝试使用http跑一下trino,没问题之后再准备配置https。这里介绍https的配置

config.properties

coordinator=true
node-scheduler.include-coordinator=false
http-server.authentication.type=PASSWORD    //开启password验证,必须
http-server.http.port=8080
query.max-memory=80GB
query.max-memory-per-node=4.8GB
query.max-total-memory-per-node=4.8GB
discovery-server.enabled=true
discovery.uri=http://10.38.199.202:8080    //这里discover server还是使用http与其他worker节点交互
http-server.https.enabled=true    //开启https验证
http-server.https.port=8443        //https设置一个端口
http-server.https.keystore.path=/root/wux-prestotest.seagate.com.p12    //证书地址
http-server.https.keystore.key=presto-seagate    //生成证书时的密码

password-authenticator.properties,里面需要用到password.db,这个文件就是在登录trino的时候使用到的用户名密码,需要bcrypt加密,可以去网络上找在线加密

password-authenticator.name=file
file.password-file=/root/trino-server-363/etc/password.db

password.db,用户密码文件,一行就是一个用户名密码,用户密码用:隔开,比如我定义了一个test/test1234的用户。在使用bcrypt加密的时候,生成的密码可能是$2a$开头的,而根据trino文档内定义的password规范是需要$2y$开头的,这里需要注意,这边我刚做的时候也遇到过麻烦

test:$2y$10$zZKqBwY5bvazWKrZmp01pex4Jy4AeknJ3lLPviC9BMF0zOMEU4vXS

jvm.config,node.properties,catalog其他文件不再赘述

上面都配置完之后,启动trino,bin/launcher start,访问

https://wux-prestotest.seagate.com:8443

【trino https】trino权限验证开启https_第2张图片

使用test/test1234登入

【trino https】trino权限验证开启https_第3张图片

 

stand alone方式部署trino基本没遇到什么问题,只要按照官方文档操作,很快就能做出来。

你可能感兴趣的:(presto,https,安全,网络协议)