Ranger+LDAP+Presto实现权限控制

  • Post author:
  • Post category:其他

LDAP搭建

LDAP的搭建步骤可参考文章《Centos 7 搭建Openldap,使用lam做web管理》 Centos 7 搭建Openldap,使用lam做web管理 – 简书

Presto搭建

使用的是trino中的presto-server-350版本,350往后的版本对包空间名称做了更改(io.prestosql -> io.trino),ranger2.1.0版本对其还不兼容。

presto-server-350下载地址:https://repo1.maven.org/maven2/io/prestosql/presto-server/350/presto-server-350.tar.gz

trino官方网站:Trino | Distributed SQL query engine for big data

我们将presto部署到3个服务节点,例如192.168.40.1/192.168.40.2/192.168.40.3

第1步

        下载jdk11,presto需要的jdk11+。

        下载地址:Java Downloads | Oracle

         选择jdk-11.0.12_linux-x64_bin.tar.gz

第2步

        将jdk上传到服务器节点192.168.40.1的/data目录下,并解压 “tar -zxvf jdk-11.0.12_linux-x64_bin.tar.gz”

第3步

        新增presto用户。

        命令:useradd presto

第4步

        编辑presto用户的java环境变量。

        命令:vim /home/presto/.bashrc

# JAVA
export JAVA_HOME=/data/jdk-11.0.12/
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH

        切换到presto用户,查看java版本是否是java 11

        命令: su presto

                   java -version

第5步

        下载presto软件包,并将软件包上传到服务器192.168.40.1的/data目录下,并解压。

        命令: tar -zxvf presto-server-350.tar.gz

第6步

        将/data/presto-server-350授权给用户presto。

        命令: chown -R presto:presto /data/presto-server-350

第7步

        应为presto要开启https访问,所以要设置SSL证书,证书生成步骤如下。

        a.生成keystore.jks,命令:keytool -genkeypair -alias presto_server -dname “C=CN, ST=Guangdong, L=Shenzhen, O=test.cn, OU=presto, CN=presto.test.cn” -validity 3650 -keyalg RSA -keysize 2048 -keystore keystore.jks -keypass presto -storepass presto

        b.导出证书,命令:keytool –exportcert -alias presto_server -file presto_server.cer -keystore keystore.jks -storepass presto

        c.生成truststore.jks,命令:keytool –importcert -alias presto_server -file presto_server.cer -keystore truststore.jks -storepass presto

第8步

        将第7步生成的keystore.jks/truststore.jks移动到/data/presto-server-350/etc/文件夹下

第9步

        编辑config.properties配置文件,192.168.40.1这个服务器节点,我们作为coordinator节点

        命令:vim /data/presto-server-350/etc/config.properties

# coordinator节点

coordinator=true
# 是否复用为 worker 节点, false 为否。默认为 false
node-scheduler.include-coordinator=true
# 本节点 presto 服务端口号
http-server.http.port=8010
# query.max-memory-per-node * worker 节点的个数
query.max-memory=4GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery-server.enabled=true
# 本节点、 端口号
discovery.uri=http://192.168.40.1:8010

http-server.authentication.type=PASSWORD
http-server.https.enabled=true
http-server.https.port=8443
http-server.https.keystore.path=/data/presto-server-350/etc/keystore.jks
http-server.https.keystore.key=presto

第10步

        编辑password-authenticator.properties配置文件,用于同步ldap数据。

        命令:vim /data/presto-server-350/etc/password-authenticator.properties

password-authenticator.name=ldap
#ldap服务地址
ldap.url=ldap://192.168.40.1:389
#ldap用户所在节点
ldap.user-bind-pattern=uid=${USER},ou=People,dc=test,dc=cn
#允许不安全访问,ldap可以不使用ldaps
ldap.allow-insecure=true

第11步

        编辑jvm.config配置文件

        命令:vim /data/presto-server-350/etc/jvm.config

-server
-Xmx4G
-XX:-UseBiasedLocking
-XX:+UseG1GC
-XX:G1HeapRegionSize=8M
-XX:+ExplicitGCInvokesConcurrent
-XX:+ExitOnOutOfMemoryError
-XX:+HeapDumpOnOutOfMemoryError
-XX:ReservedCodeCacheSize=128M
-XX:PerMethodRecompilationCutoff=10000
-XX:PerBytecodeRecompilationCutoff=10000
-Djdk.attach.allowAttachSelf=true
-Djdk.nio.maxCachedBufferSize=2000000

第12步

        编辑log.properties配置文件

        命令:vim /data/presto-server-350/etc/log.properties   

io.prestosql=INFO
#io.prestosql=DEBUG
#io.prestosql.server.PluginManager=DEBUG

  

第13步

        编辑node.properties配置文件

        命令:vim /data/presto-server-350/etc/node.properties

# presto 名称, 同一集群必须相同
node.environment=presto_350
# presto 节点唯一标识,同一个集群中的每个节点都不相同, 执行命令 uuidgen 读取
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
# 日志目录、 计算临时存储目录, presto 用户有读写权限
node.data-dir=/data/presto-data

第14步

        配置presto连接的数据库配置

        首先创建catalog文件夹,路径/data/presto-server-350/etc/catalog

        编辑mysql数据库连接配置,例如

        vim /data/presto-server-350/etc/catalog/mysql.properties

connector.name=mysql
connection-url=jdbc:mysql://192.168.40.1:3306?useSSL=false
connection-user=root
connection-password=root

        编辑postgresql数据库连接配置,例如

        vim /data/presto-server-350/etc/catalog/postgresql.properties

connector.name=postgresql
connection-url=jdbc:postgresql://192.168.40.1:5432/postgres
connection-user=postgres
connection-password=postgres

第15步

        启动presto

        命令:/data/presto-server-350/bin/launcher start

        启动完成后,查看日志,是否正常

        查看启动日志

        命令:cat /data/presto-data/var/log/launcher.log

        查看服务日志

        命令: cat /data/presto-data/var/log/server.log

        

第16步

        安装配置另外节点192.168.40.2/192.168.40.3,这两个节点是作为worker节点,所以步骤和之上稍有所不同。

        按照上面步骤第1~14步,跳过第7、8步,worker节点不需要配置https。

        并且需要修改两个worder节点的config.properties配置文件内容。

        config.properties配置如下

# worker节点
coordinator=false
# 是否复用为 worker 节点, false 为否。默认为 false
node-scheduler.include-coordinator=true
# 本节点 presto 服务端口号
http-server.http.port=8010
# query.max-memory-per-node * worker 节点的个数
query.max-memory=4GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
# Presto 中 coordinator 所在节点,以及其端口号
discovery.uri=http://192.168.40.1:8010

  node.properties配置文件内容需要修改node.id将其修改为唯一。例如

192.168.40.2节点的node.properties

# presto 名称, 同一集群必须相同
node.environment=presto_350
# presto 节点唯一标识,同一个集群中的每个节点都不相同, 执行命令 uuidgen 读取
node.id=uuuuuuuuuuu-uuuuuuuuu-uuuuuuuuu-uuuu
# 日志目录、 计算临时存储目录, presto 用户有读写权限
node.data-dir=/data/presto-data

192.168.40.3节点的node.properties

# presto 名称, 同一集群必须相同
node.environment=presto_350
# presto 节点唯一标识,同一个集群中的每个节点都不相同, 执行命令 uuidgen 读取
node.id=dddddddddd-dddddddddd-dddddddddd-ddddddd
# 日志目录、 计算临时存储目录, presto 用户有读写权限
node.data-dir=/data/presto-data

第17步

        按装完presto三个节点后,测试是否可以正常访问。使用presto-cli-350-executable.jar测试。

        下载地址:https://repo1.maven.org/maven2/io/prestosql/presto-cli/350/presto-cli-350-executable.jar

        将presto-cli-350-executable.jar放到第一个节点192.168.40.1的/data/presto-server-350文件夹下,并且授权可执行

        命令:chmod +x  /data/presto-server-350/presto-cli-350-executable.jar

        

        编辑hosts文件添加映射 “192.168.40.1  presto.test.cn”

        命令:vim /etc/hosts

        链接presto测试访问

        命令:/data/presto-server-350/presto-cli-350-executable.jar –server https://presto.test.cn:8443 –catalog mysql –user lisi  –truststore-path /data/presto-server-350/etc/truststore.jks –truststore-password presto –password

        连接成功后,就可以查询数据库相关表数据。

Ranger搭建

选用的是ranger 2.1.0版本,官方未提供编译好的安装包,需要自己编译。

源码包下载地址:Apache Download Mirrors

官网地址:Apache Ranger – Introduction

如果不想自己编辑,可以直接下载编译好的安装包,下载地址

链接:百度网盘 请输入提取码

提取码:g4c2

第1步

        将源码包上传到服务器/tmp/目录下,并解压

        命令: tar -zxvf /tmp/apache-ranger-2.1.0.tar.gz

第2步

        安装solr,编辑solr配置信息

        命令:vim /tmp/apache-ranger-2.1.0/security-admin/contrib/solr_for_audit_setup/install.properties,需要修改的配置如下

SOLR_INSTALL=true
SOLR_DOWNLOAD_URL=http://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/8.9.0/solr-8.9.0.tgz
SOLR_RANGER_HOME=/data/solr/ranger_audit_server
SOLR_RANGER_DATA_FOLDER=/data/solr/ranger_audit_server/data
SOLR_LOG_FOLDER=/data//solr/log/solr/ranger_audits

        修改完配置文件,执行setup.sh脚本

        命令:sh  /tmp/apache-ranger-2.1.0/security-admin/contrib/solr_for_audit_setup/setup.sh

        查看安装记录信息

        命令: cat /data/solr/ranger_audit_server/install_notes.txt

        

        安装完成后,启动solr

        命令:/data/solr/ranger_audit_server/scripts/start_solr.sh

第3步

        将编译源码得到的ranger-2.1.0-admin.tar.gz上传到服务器/data目录下并解压

        命令:tar -zxvf /data/ranger-2.1.0-admin.tar.gz

        修改install.properties配置文件

        命令:vim /data/ranger-2.1.0-admin/install.properties

        修改内容如下

#DB_FLAVOR=MYSQL|ORACLE|POSTGRES|MSSQL|SQLA
DB_FLAVOR=POSTGRES

SQL_CONNECTOR_JAR=/data/ranger-2.1.0-admin/postgresql-42.2.5.jar

db_root_user=postgres
db_root_password=Wise#postgres321
db_host=192.168.40.1

db_name=ranger
db_user=ranger
db_password=Ranger@2021

rangerAdmin_password=Ranger@2021
rangerTagsync_password=Ranger@2021
rangerUsersync_password=Ranger@2021
keyadmin_password=Ranger@2021

audit_store=solr

audit_solr_urls=http://localhost:6083/solr/ranger_audits
audit_solr_user=solr
audit_solr_password=
audit_solr_zookeepers=

policymgr_external_url=http://192.168.40.1:6080

unix_user=root
unix_user_pwd=root
unix_group=root

#配置LDAP信息
authentication_method=LDAP
xa_ldap_url=ldap://192.168.40.1:389
xa_ldap_userDNpattern=uid={0},ou=People,dc=test,dc=cn
xa_ldap_groupSearchBase=ou=group,dc=test,dc=cn
xa_ldap_groupSearchFilter=(member=uid={0},ou=People,dc=test,dc=cn)
xa_ldap_groupRoleAttribute=cn
xa_ldap_base_dn=dc=test,dc=cn
xa_ldap_bind_dn=cn=admin,ou=People,dc=test,dc=cn
xa_ldap_bind_password=test

第4步

        安装ranger-admin

        命令:/data/ranger-2.1.0-admin/setup.sh

        安装完成后,执行启动命令

        命令:/data/ranger-2.1.0-admin/ews/ranger-admin-services.sh start

        

        启动完成后,查看日志是否正常,日志所在路径/data/ranger-2.1.0-admin/ews/logs

第5步

        将编译源码得到的ranger-2.1.0-usersync.tar.gz上传到服务器/data目录下并解压

        命令:tar -zxvf /data/ranger-2.1.0-usersync.tar.gz

        修改install.properties配置文件

        命令:vim /data/ranger-2.1.0-usersync/install.properties

        修改内容如下

POLICY_MGR_URL =http://192.168.40.1:6080
SYNC_SOURCE = ldap
MIN_UNIX_USER_ID_TO_SYNC = 0
MIN_UNIX_GROUP_ID_TO_SYNC = 0
SYNC_INTERVAL = 60
unix_user=root
unix_group=root
rangerUsersync_password=Ranger@2021
SYNC_LDAP_URL = ldap://192.168.40.1:389
SYNC_LDAP_BIND_DN = cn=admin,dc=test,dc=cn
SYNC_LDAP_BIND_PASSWORD = test
SYNC_LDAP_SEARCH_BASE = dc=test,dc=cn
SYNC_LDAP_USER_SEARCH_BASE = ou=People,dc=test,dc=cn
SYNC_LDAP_USER_NAME_ATTRIBUTE = uid

第6步

        安装ranger-usersync

        命令:/data/ranger-2.1.0-usersync/setup.sh

        

        安装完成后,需修改配置文件ranger-ugsync-site.xml

        命令:vim /data/ranger-2.1.0-usersync/conf/ranger-ugsync-site.xml

        修改内容如下:

    <property>
        <name>ranger.usersync.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>ranger.usersync.cookie.enabled</name>
        <value>false</value>
    </property>

        启动ranger-usersync

        命令:/data/ranger-2.1.0-usersync/start.sh

        日志文件在/data/ranger-2.1.0-usersync/logs

第7步

        在浏览器中http://192.168.40.1:6080,用户名为admin,密码为Ranger@2021

Presto配置Ranger插件

第1步

        将Ranger编译源码得到的ranger-2.1.0-presto-plugin.tar.gz上传到Presto的coordinator服务器节点/data目录下,并解压

        命令:tar -zxvf /data/ranger-2.1.0-presto-plugin.tar.gz

第2步

        编辑配置文件install.properties

        命令:vim /data/ranger-2.1.0-presto-plugin/install.properties

        编辑内容如下

POLICY_MGR_URL=http://192.168.40.1:6080

REPOSITORY_NAME=prestoTest

COMPONENT_INSTALL_DIR_NAME=/data/presto-server-350

XAAUDIT.SUMMARY.ENABLE=false
XAAUDIT.SOLR.ENABLE=true
XAAUDIT.SOLR.URL=http://localhost:6083/solr/ranger_audits
XAAUDIT.SOLR.USER=solr
XAAUDIT.SOLR.PASSWORD=NONE
XAAUDIT.SOLR.ZOOKEEPER=NONE
XAAUDIT.SOLR.FILE_SPOOL_DIR=/data/solr/log/presto/audit/solr/spool

CUSTOM_USER=presto
CUSTOM_GROUP=presto

第3步

        安装插件

        命令:/data/ranger-2.1.0-presto-plugin/enable-presto-plugin.sh

        

        安装完成,查看presto目录中etc文件夹下是否有ranger插件

        重启presto


版权声明:本文为pandani原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。