CDH 6.3.2 集成 Apache Ranger 2.1.0
- 文档路径
- 介质下载路径
- 环境信息
- 部署 Ranger 2.1.0
-
- 1. 存放 Ranger 和 Maven 介质
- 2. 安装 Maven 3.6.2 并安装编译过程中所需的依赖服务
- 3. 安装数据库
- 4. 创建 Ranger 元数据库
- 5. 编译 Ranger 2.1.0
- 6. 安装自带 Solr 服务
- 7. 验证 Solr 状态
- 8. 安装 Ranger Admin
- 9. 验证 Ranger Admin 状态
- 10. 安装 Ranger Usersync
- 11. 验证 UserSync 状态
- 部署 HDFS Plugin
-
- 1. 安装 Ranger 2.1.0 HDFS Plugin
- 2. 重启 HDFS 服务
- 3. 检查 HDFS 服务状态
- 4. HDFS Plugin 关联 Ranger Admin
- 部署 YARN Plugin
-
- 1. 安装 Ranger 2.1.0 YARN Plugin
- 2. 重启 YARN 服务
- 3. 检查 YARN 服务状态
-
- 4. YARN Plugin 关联 Ranger Admin
- 部署 Hive Plugin
-
- 1. 安装 Ranger 2.1.0 Hive Plugin
- 2. 重启 Hive 服务
- 3. 检查 Hive 服务状态
- 4. Hive Plugin 关联 Ranger Admin
- 部署 Kafka Plugin
-
- 1. 安装 Ranger 2.1.0 Kafka Plugin
- 2. 重启 Kafka 服务
- 3. 检查 Kafka 服务状态
- 4. Kafka Plugin 关联 Ranger Admin
- 部署 HBase Plugin
-
- 1. 安装 Ranger 2.1.0 HBase Plugin
- 2. 重启 HBase 服务
- 3. 检查 HBase 服务状态
- 4. HBase Plugin 关联 Ranger Admin
- 部署 Spark Plugin
-
- 1. 安装 Ranger 2.1.0 Spark Plugin
文档路径
-
CDH 6.3.2 对应服务版本:https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_63_packaging.html#cdh_630_packaging
-
Ranger 官方部署文档:https://cwiki.apache.org/confluence/display/RANGER/Index
介质下载路径
- Ranger 2.1.0 For CDH 6.3.1: https://github.com/gm19900510/ranger/tree/release-ranger-2.1.0-cdh-6.3.1-hylink
- Maven 3.6.3: https://archive.apache.org/dist/maven/maven-3/3.6.2/binaries/apache-maven-3.6.3-bin.tar.gz
环境信息
- Ranger Admin 节点
Hostname | IP Address | JDK Version | Ranger Admin Version | Ranger Admin Roles | Ranger UserSync Version | Ranger UserSync Roles |
---|---|---|---|---|---|---|
cdh6-01 | 10.10.10.137 | 1.8.0_333 | 2.1.0 | YES | 2.1.0 | YES |
- MySQL 节点
Hostname | IP Address | MySQL Version | Root Password |
---|---|---|---|
monitor | 10.10.10.130 | 5.7.40 | !Qaz2wsx |
- CDH 节点(只包含需要部署 Ranger 插件的节点)
Hostname | IP Address | JDK Version | Hadoop Version | HDFS Roles | YARN Roles | Hive Version | Hive Roles |
---|---|---|---|---|---|---|---|
cdh6-01 | 10.10.10.137 | 1.8.0_333 | 3.0.0-cdh6.3.2 | NameNode | ResourceManager | ||
cdh6-02 | 10.10.10.138 | 1.8.0_333 | 3.0.0-cdh6.3.2 | NameNode | ResourceManager | ||
cdh6-03 | 10.10.10.139 | 1.8.0_333 | 2.1.1-cdh6.3.2 | HiveServer2 |
Hostname | IP Address | JDK Version | HBase Version | HBase Roles | Kafka Version | Kafka Roles | Spark Version | Spark Roles |
---|---|---|---|---|---|---|---|---|
cdh6-01 | 10.10.10.137 | 1.8.0_333 | Broker | 2.4.0-cdh6.3.2 | Gateway | |||
cdh6-02 | 10.10.10.138 | 1.8.0_333 | RegionServer | Broker | 2.4.0-cdh6.3.2 | Gateway | ||
cdh6-03 | 10.10.10.139 | 1.8.0_333 | 2.1.0-cdh6.3.2 | Master/RegionServer | 2.2.1-cdh6.3.2 | Broker | 2.4.0-cdh6.3.2 | Gateway |
- CDH 6.3.2 服务路径(只包含需要部署 Ranger 插件的角色
Hostname | IP Address | Hadoop Config Path | Hadoop Libs Path | Hive Config Path | Hive Lib Path | HBase Config Path | HBase Lib Path | Kafka Config Path | Kafka Lib Path | Spark Config Path | Spark Lib Path |
---|---|---|---|---|---|---|---|---|---|---|---|
cdh6-01 | 10.10.10.137 | /opt/cloudera/parcels/CDH/lib/hadoop/etc/hadoop | /opt/cloudera/parcels/CDH/lib/hadoop/lib/ | /opt/cloudera/parcels/CDH/lib/kafka/config/ | /opt/cloudera/parcels/CDH/lib/kafka/libs/ | /opt/cloudera/parcels/CDH/lib/spark/config/ | /opt/cloudera/parcels/CDH/lib/spark/libs/ | ||||
cdh6-02 | 10.10.10.138 | /opt/cloudera/parcels/CDH/lib/hadoop/etc/hadoop | /opt/cloudera/parcels/CDH/lib/hadoop/lib/ | /opt/cloudera/parcels/CDH/lib/hbase/conf/ | /opt/cloudera/parcels/CDH/lib/hbase/lib/ | /opt/cloudera/parcels/CDH/lib/kafka/config/ | /opt/cloudera/parcels/CDH/lib/kafka/libs/ | /opt/cloudera/parcels/CDH/lib/spark/config/ | /opt/cloudera/parcels/CDH/lib/spark/libs/ | ||
cdh6-03 | 10.10.10.139 | /opt/cloudera/parcels/CDH/lib/hive/conf/ | /opt/cloudera/parcels/CDH/lib/hive/lib/ | /opt/cloudera/parcels/CDH/lib/hbase/conf/ | /opt/cloudera/parcels/CDH/lib/hbase/lib/ | /opt/cloudera/parcels/CDH/lib/kafka/config/ | /opt/cloudera/parcels/CDH/lib/kafka/libs/ | /opt/cloudera/parcels/CDH/lib/spark/config/ | /opt/cloudera/parcels/CDH/lib/spark/libs/ |
部署 Ranger 2.1.0
1. 存放 Ranger 和 Maven 介质
-
由于 Ranger 服务需要通过 Maven 进行编译后才能使用,所以需要确保在安装 Ranger 服务前已部署 Maven。若节点上已部署 Maven,可不下载 Maven 相关介质
-
在 cdh6-01 - 10.10.10.137 节点上,进行如下操作:
# 创建服务路径 mkdir -p /data/ranger mkdir -p /data/maven/ # 下载 Ranger 2.1.0 For CDH 6.3.1 编译包 # 由于在 linux 系统上,通过 wget 等方式下载后,还需要使用 git 命令再次编译,所以此处直接在 windows 系统下载后,上传至 /data/ranger 目录下 # 下载 Maven 3.6.3 介质 wget https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz --no-check-certificate -P /data/ranger # 查看介质存放是否符合要求 tree -L 1 /data/ranger /data/ranger ├── ranger-release-ranger-2.1.0-cdh-6.3.1-hylink.zip └── apache-maven-3.6.3-bin.tar.gz
2. 安装 Maven 3.6.2 并安装编译过程中所需的依赖服务
-
若节点上已部署 Maven,可跳过此步骤
-
在 cdh6-01 - 10.10.10.137 节点上,进行如下操作
# 解压 Mave 3.6.2 源码包 tar -zxf /data/ranger/apache-maven-3.6.2-bin.tar.gz -C /data/maven/ # 添加环境变量 cp /etc/profile /etc/profile.0904 cat >> /etc/profile << EOF # MAVEN 3.6.3 2023-09-04 export MAVEN_HOME=/data/maven/apache-maven-3.6.3/ export CLASSPATH=.:$:CLASSPATH:$MAVEN_HOME/lib/ export PATH=$PATH:$MAVEN_HOME/bin EOF # 刷新配置文件 source /etc/profile # 查看 Maven 版本 mvn -v Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven home: /data/maven/apache-maven-3.6.3 Java version: 1.8.0_333, vendor: Oracle Corporation, runtime: /usr/java/jdk1.8.0_333/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix" # 安装其它依赖服务 yum install gcc git python3 bzip2 fontconfig-devel npm -y pip3 install requests
3. 安装数据库
-
需要提前创建 Ranger 元数据库,用于存放 Ranger 服务的元数据信息
-
Ranger 对于用户的密码安全性要求相对较高,在设置用户密码时,需要使用强度较高的密码。此处所使用的密码为 !Qaz2wsx
-
官方说明中,MySQL 和 PostgreSQL 都可以使用。此文档所使用的数据库为 MySQL
4. 创建 Ranger 元数据库
- 在 monitor - 10.10.10.130 节点上,进行如下操作:
# 登录数据库 mysql -h10.10.10.130 -P3306 -uroot -p'!Qaz2wsx' # 创建 Ranger 元数据库 ranger # - CREATE DATABASE ranger: 创建数据库,名称为 ranger # - DEFAULT CHARACTER SET utf8: 数据库的默认字符集为 uft8 # - DEFAULT COLLATE utf8_general_ci: 数据库的默认排序规则为 uft8 的大小写不敏感的通用规则。general 表示通用,ci 表示大小写不敏感 CREATE DATABASE ranger DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; # 验证数据库创建是否成功 show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | ranger | | sys | +--------------------+
5. 编译 Ranger 2.1.0
-
由于 Ranger 2.1.0 默认支持的大数据服务版本,相较于 CDH 6.3.2 所提供的服务版本而言过高,所以无法直接兼容 CDH 6.3.2,需要额外调整配置文件和源码
-
由于 CDH 在重启服务时,会在 /var/run/cloudera-scm-agent/process/ 目录下,以进程号为目录名称重新创建一个全新的服务目录,所以直接使用 Apache Ranger 会在重启服务后,出现无法获取 jar 包或配置文件的异常。需要额外添加 jar 包和配置文件获取逻辑
-
此处所使用的是已完成源码调整的编译包,可直接进行编译操作
-
若使用已编译完成的安装包,则可跳过此步骤
-
在 cdh6-01 - 10.10.10.137 节点上,进行如下操作
# 解压二进制包 unzip /data/ranger/ranger-release-ranger-2.1.0-cdh-6.3.1-hylink.zip -d /data/ranger # 调整目录名称 mv /data/ranger/ranger-release-ranger-2.1.0-cdh-6.3.1-hylink /data/ranger/ranger-release-ranger-2.1.0-cdh-6.3.2 # 备份原配置文件 cp /data/ranger/ranger-release-ranger-2.1.0-cdh-6.3.2/pom.xml /data/ranger/ranger-release-ranger-2.1.0-cdh-6.3.2/pom.xml.0905 # 调整编码包中的对应服务版本。调整配置中如下部分参数 vim /data/ranger/ranger-release-ranger-2.1.0-cdh-6.3.2/pom.xml <hadoop.version>3.0.0-cdh6.3.2</hadoop.version> <hbase.version>2.1.0-cdh6.3.2</hbase.version> <hive.version>2.1.1-cdh6.3.2</hive.version> <kafka.version>2.2.1-cdh6.3.2</kafka.version> <solr.version>7.4.0-cdh6.3.2</solr.version> <zookeeper.version>3.4.5-cdh6.3.2</zookeeper.version> <lucene.version>7.4.0-cdh6.3.2</lucene.version> # 编码 Ranger 2.1.0 # - 若出现 lifecycle 相关报错,可通过尝试重新编译进行修复 cd /data/ranger/ranger-release-ranger-2.1.0-cdh-6.3.2/ && mvn clean package install -Dmaven.test.skip=true -X
6. 安装自带 Solr 服务
-
Ranger 支持基于 Solr 或 Elasticsearch 存储的审计功能
-
此处所使用的是 Ranger 自带的 Solr StandAlone
-
需要注意的是,自带的 Solr StandAlone 会将数据直接保存在本地,不建议在生产环境中使用此方式。生产环境建议关联额外的 Solr 或 Elasticsearch 服务
-
在 cdh6-01 - 10.10.10.137 节点上,进行如下操作
# 解压 Ranger Admin 2.1.0 源码包 tar -xf /data/ranger/ranger-release-ranger-2.1.0-cdh-6.3.2/target/ranger-2.1.0-admin.tar.gz -C /data/ranger # 备份原配置文件 cp /data/ranger/ranger-2.1.0-admin/contrib/solr_for_audit_setup/install.properties data/ranger/ranger-2.1.0-admin/contrib/solr_for_audit_setup/install.properties.orig # 调整配置文件 /data/ranger/ranger-2.1.0-admin/contrib/solr_for_audit_setup/install.properties cat > /data/ranger/ranger-2.1.0-admin/contrib/solr_for_audit_setup/install.properties << EOF JAVA_HOME=/usr/java/jdk1.8.0_333 SOLR_USER=root SOLR_GROUP=root MAX_AUDIT_RETENTION_DAYS=90 SOLR_INSTALL=true SOLR_DOWNLOAD_URL=http://archive.apache.org/dist/lucene/solr/8.3.0/solr-8.3.0.tgz SOLR_INSTALL_FOLDER=/data/solr SOLR_RANGER_HOME=/data/solr/ranger_audit_server SOLR_RANGER_PORT=6083 SOLR_DEPLOYMENT=standalone SOLR_RANGER_DATA_FOLDER=/data/solr/ranger_audit_server/data SOLR_ZK= SOLR_HOST_URL=http://`hostname -f`:${SOLR_RANGER_PORT} SOLR_SHARDS=1 SOLR_REPLICATION=1 SOLR_LOG_FOLDER=/var/log/solr/ranger_audits SOLR_RANGER_COLLECTION=ranger_audits SOLR_MAX_MEM=2g EOF # 安装 Solr 服务 sh /data/ranger/ranger-2.1.0-admin/contrib/solr_for_audit_setup/setup.sh # 启动 Solr 服务 # - 由于默认情况下不建议使用 root 用户启动 solr,所以若需通过 root 用户启动,需添加参数 -force sh /data/solr/ranger_audit_server/scripts/start_solr.sh -force
7. 验证 Solr 状态
-
Solr Web UI: http://10.10.10.137:6083
-
查看是否已存在核心:ranger_audits
8. 安装 Ranger Admin
- 在 cdh6-01 - 10.10.10.137 节点上,进行如下操作
# 备份原配置文件 cp /data/ranger/ranger-2.1.0-admin/install.properties /data/ranger/ranger-2.1.0-admin/install.properties.orig # 调整配置文件 /data/ranger/ranger-2.1.0-admin/install.properties cat > /data/ranger/ranger-2.1.0-admin/install.properties << EOF PYTHON_COMMAND_INVOKER=python DB_FLAVOR=MYSQL SQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java.jar db_root_user=root db_root_password=!Qaz2wsx db_host=10.10.10.130 db_ssl_enabled=false db_ssl_required=false db_ssl_verifyServerCertificate=false db_ssl_auth_type=2-way javax_net_ssl_keyStore= javax_net_ssl_keyStorePassword= javax_net_ssl_trustStore= javax_net_ssl_trustStorePassword= db_name=ranger db_user=root db_password=!Qaz2wsx rangerAdmin_password=root@123 rangerTagsync_password=root@123 rangerUsersync_password=root@123 keyadmin_password=root@123 audit_store=solr audit_elasticsearch_urls= audit_elasticsearch_port= audit_elasticsearch_protocol= audit_elasticsearch_user= audit_elasticsearch_password= audit_elasticsearch_index= audit_elasticsearch_bootstrap_enabled=true audit_solr_urls=http://10.10.10.137:6083/solr/ranger_audits audit_solr_user=solr audit_solr_password= audit_solr_zookeepers= audit_solr_collection_name=ranger_audits audit_solr_config_name=ranger_audits audit_solr_no_shards=1 audit_solr_no_replica=1 audit_solr_max_shards_per_node=1 audit_solr_acl_user_list_sasl=solr,infra-solr audit_solr_bootstrap_enabled=true policymgr_external_url=http://localhost:6080 policymgr_http_enabled=true policymgr_https_keystore_file= policymgr_https_keystore_keyalias=rangeradmin policymgr_https_keystore_password= policymgr_supportedcomponents= unix_user=ranger unix_user_pwd=ranger unix_group=ranger authentication_method=NONE remoteLoginEnabled=true authServiceHostName=localhost authServicePort=5151 ranger_unixauth_keystore=keystore.jks ranger_unixauth_keystore_password=password ranger_unixauth_truststore=cacerts ranger_unixauth_truststore_password=changeit xa_ldap_url= xa_ldap_userDNpattern= xa_ldap_groupSearchBase= xa_ldap_groupSearchFilter= xa_ldap_groupRoleAttribute= xa_ldap_base_dn= xa_ldap_bind_dn= xa_ldap_bind_password= xa_ldap_referral= xa_ldap_userSearchFilter= xa_ldap_ad_domain= xa_ldap_ad_url= xa_ldap_ad_base_dn= xa_ldap_ad_bind_dn= xa_ldap_ad_bind_password= xa_ldap_ad_referral= xa_ldap_ad_userSearchFilter= spnego_principal= spnego_keytab= token_valid=30 cookie_domain= cookie_path=/ admin_principal= admin_keytab= lookup_principal= lookup_keytab= hadoop_conf=/etc/hadoop/conf sso_enabled=false sso_providerurl=https://127.0.0.1:8443/gateway/knoxsso/api/v1/websso sso_publickey= RANGER_ADMIN_LOG_DIR=$PWD RANGER_PID_DIR_PATH=/var/run/ranger XAPOLICYMGR_DIR=$PWD app_home=$PWD/ews/webapp TMPFILE=$PWD/.fi_tmp LOGFILE=$PWD/logfile LOGFILES="$LOGFILE" JAVA_BIN='java' JAVA_VERSION_REQUIRED='1.8' JAVA_ORACLE='Java(TM) SE Runtime Environment' ranger_admin_max_heap_size=1g PATCH_RETRY_INTERVAL=120 STALE_PATCH_ENTRY_HOLD_TIME=10 mysql_core_file=db/mysql/optimized/current/ranger_core_db_mysql.sql mysql_audit_file=db/mysql/xa_audit_db.sql oracle_core_file=db/oracle/optimized/current/ranger_core_db_oracle.sql oracle_audit_file=db/oracle/xa_audit_db_oracle.sql postgres_core_file=db/postgres/optimized/current/ranger_core_db_postgres.sql postgres_audit_file=db/postgres/xa_audit_db_postgres.sql sqlserver_core_file=db/sqlserver/optimized/current/ranger_core_db_sqlserver.sql sqlserver_audit_file=db/sqlserver/xa_audit_db_sqlserver.sql sqlanywhere_core_file=db/sqlanywhere/optimized/current/ranger_core_db_sqlanywhere.sql sqlanywhere_audit_file=db/sqlanywhere/xa_audit_db_sqlanywhere.sql cred_keystore_filename=$app_home/WEB-INF/classes/conf/.jceks/rangeradmin.jceks EOF # 安装 Ranger Admin 服务 sh /data/ranger/ranger-2.1.0-admin/setup.sh # 删除非兼容 jar 包 rm -rf /data/ranger/ranger-2.1.0-admin/ews/webapp/WEB-INF/lib/javax.ws.rs-api-2.1.jar /data/ranger/ranger-2.1.0-admin/ews/webapp/WEB-INF/lib/jersey-client-2.6.jar /data/ranger/ranger-2.1.0-admin/ews/webapp/WEB-INF/lib/jersey-server-2.27.jar # 启动 Ranger Admin 服务 sh /data/ranger/ranger-2.1.0-admin/ews/ranger-admin-services.sh start
9. 验证 Ranger Admin 状态
-
Ranger Admin Web UI: http://10.10.10.137:6080
-
User/Password: admin/ranger123
10. 安装 Ranger Usersync
-
Ranger Usersync 的同步策略为:
-
非实时同步,可通过配置文件设置同步周期,默认为 1 小时;
-
会将本地用户和组同步至 Ranger 内,再基于此用户或组进行权限管理;
-
不支持删除同步。即本地删除用户,Ranger 不会同步删除;Ranger 删除用户,本地不会同步删除。
-
-
在 cdh6-01 10.10.10.137 节点上,进行如下操作
# 解压 Ranger Usersync 2.1.0 源码包 tar -zxf /data/ranger/ranger-release-ranger-2.1.0-cdh-6.3.2/target/ranger-2.1.0-usersync.tar.gz -C /data/ranger # 备份原配置文件 cp /data/ranger/ranger-2.1.0-usersync/install.properties /data/ranger/ranger-2.1.0-usersync/install.properties.orig # 调整配置文件 /data/ranger/ranger-2.1.0-admin/install.properties cat > /data/ranger/ranger-2.1.0-usersync/install.properties << EOF ranger_base_dir = /etc/ranger POLICY_MGR_URL =http://10.10.10.137:6080 SYNC_SOURCE = unix MIN_UNIX_USER_ID_TO_SYNC = 500 MIN_UNIX_GROUP_ID_TO_SYNC = 500 SYNC_INTERVAL = 1 unix_user=ranger unix_group=ranger rangerUsersync_password=ranger123 usersync_principal= usersync_keytab= hadoop_conf=/etc/hadoop/conf CRED_KEYSTORE_FILENAME=/etc/ranger/usersync/conf/rangerusersync.jceks AUTH_SSL_ENABLED=false AUTH_SSL_KEYSTORE_FILE=/etc/ranger/usersync/conf/cert/unixauthservice.jks AUTH_SSL_KEYSTORE_PASSWORD=UnIx529p AUTH_SSL_TRUSTSTORE_FILE= AUTH_SSL_TRUSTSTORE_PASSWORD= ROLE_ASSIGNMENT_LIST_DELIMITER = & USERS_GROUPS_ASSIGNMENT_LIST_DELIMITER = : USERNAME_GROUPNAME_ASSIGNMENT_LIST_DELIMITER = , GROUP_BASED_ROLE_ASSIGNMENT_RULES = SYNC_LDAP_URL = SYNC_LDAP_BIND_DN = SYNC_LDAP_BIND_PASSWORD = SYNC_LDAP_DELTASYNC = SYNC_LDAP_SEARCH_BASE = SYNC_LDAP_USER_SEARCH_BASE = SYNC_LDAP_USER_SEARCH_SCOPE = sub SYNC_LDAP_USER_OBJECT_CLASS = person SYNC_LDAP_USER_SEARCH_FILTER = SYNC_LDAP_USER_NAME_ATTRIBUTE = cn SYNC_LDAP_USER_GROUP_NAME_ATTRIBUTE = memberof,ismemberof SYNC_LDAP_USERNAME_CASE_CONVERSION=lower SYNC_LDAP_GROUPNAME_CASE_CONVERSION=lower logdir=logs USERSYNC_PID_DIR_PATH=/var/run/ranger SYNC_GROUP_SEARCH_ENABLED= SYNC_GROUP_USER_MAP_SYNC_ENABLED= SYNC_GROUP_SEARCH_BASE= SYNC_GROUP_SEARCH_SCOPE= SYNC_GROUP_OBJECT_CLASS= SYNC_LDAP_GROUP_SEARCH_FILTER= SYNC_GROUP_NAME_ATTRIBUTE= SYNC_GROUP_MEMBER_ATTRIBUTE_NAME= SYNC_PAGED_RESULTS_ENABLED= SYNC_PAGED_RESULTS_SIZE= SYNC_LDAP_REFERRAL =ignore JVM_METRICS_ENABLED= JVM_METRICS_FILENAME= JVM_METRICS_FILEPATH= JVM_METRICS_FREQUENCY_TIME_IN_MILLIS= EOF # 安装 Ranger UserSync 服务 sh /data/ranger/ranger-2.1.0-usersync/setup.sh # 备份原配置文件 cp /data/ranger/ranger-2.1.0-usersync/conf/ranger-ugsync-site.xml /data/ranger/ranger-2.1.0-usersync/conf/ranger-ugsync-site.xml.orig # 调整配置文件 ranger-ugsync-site.xml # 将对应配置调整至如下内容 <property> <name>ranger.usersync.enabled</name> <value>true</value> </property> # 启动 Ranger UserSync 服务 sh /data/ranger/ranger-2.1.0-usersync/ranger-usersync-services.sh start
11. 验证 UserSync 状态
-
Ranger Admin Web UI: http://10.10.10.137:6080
-
User/Password: admin/ranger123
-
查看用户信息,会发现大量本地用户被同步至 Ranger 中
部署 HDFS Plugin
1. 安装 Ranger 2.1.0 HDFS Plugin
-
HDFS 的 Ranger 插件需要安装在所有的 NameNode 节点上
-
在 cdh6-01 - 10.10.10.137 和 cdh6-02 - 10.10.10.138 节点上,进行如下操作
# 解压 Ranger HDFS Plugin 2.1.0 源码包 tar -zxf /data/ranger/ranger-2.1.0-hdfs-plugin.tar.gz -C /data/ranger # 将 HDFS 所需 jar 包存放至 Ranger HDFS Plugin 内 # 此步骤与上述调整代码的原因相同,为了在重启 HDFS 服务时不会出现无法获取配置文件或 jar 包的异常 # 创建 jar 包路径 mkdir -p /data/ranger/ranger-2.1.0-hdfs-plugin/hadoop/etc # 存放 jar 包 ln -s /opt/cloudera/parcels/CDH/lib/hadoop/*.jar /data/ranger/ranger-2.1.0-hdfs-plugin/hadoop ln -s /opt/cloudera/parcels/CDH/lib/hadoop/lib/*.jar /data/ranger/ranger-2.1.0-hdfs-plugin/hadoop ln -s /opt/cloudera/parcels/CDH/lib/hadoop/etc/hadoop /data/ranger/ranger-2.1.0-hdfs-plugin/hadoop/etc/hadoop # 将 Ranger HDFS Plugin 所需 jar 包存放至 HDFS 内 ln -s /data/ranger/ranger-2.1.0-hdfs-plugin/lib/*.jar /opt/cloudera/parcels/CDH/lib/hadoop/lib ln -s /data/ranger/ranger-2.1.0-hdfs-plugin/lib/ranger-hdfs-plugin-impl /opt/cloudera/parcels/CDH/lib/hadoop/lib # 备份原配置文件 cp /data/ranger/ranger-2.1.0-hdfs-plugin/install.properties /data/ranger/ranger-2.1.0-hdfs-plugin/install.properties.orig # 调整配置文件 install.properties cat > install.properties <<EOF POLICY_MGR_URL=http://10.10.10.137:6080 REPOSITORY_NAME=test-cdh6-hdfs COMPONENT_INSTALL_DIR_NAME=/data/ranger/ranger-2.1.0-hdfs-plugin/hadoop XAAUDIT.SOLR.ENABLE=true XAAUDIT.SOLR.URL=http://10.10.10.137:6083/solr/ranger_audits XAAUDIT.SOLR.USER=NONE XAAUDIT.SOLR.PASSWORD=NONE XAAUDIT.SOLR.ZOOKEEPER=NONE XAAUDIT.SOLR.FILE_SPOOL_DIR=/var/log/hadoop/hdfs/audit/solr/spool XAAUDIT.ELASTICSEARCH.ENABLE=false XAAUDIT.ELASTICSEARCH.URL=NONE XAAUDIT.ELASTICSEARCH.USER=NONE XAAUDIT.ELASTICSEARCH.PASSWORD=NONE XAAUDIT.ELASTICSEARCH.INDEX=NONE XAAUDIT.ELASTICSEARCH.PORT=NONE XAAUDIT.ELASTICSEARCH.PROTOCOL=NONE XAAUDIT.HDFS.ENABLE=false XAAUDIT.HDFS.HDFS_DIR=hdfs://__REPLACE__NAME_NODE_HOST:8020/ranger/audit XAAUDIT.HDFS.FILE_SPOOL_DIR=/var/log/hadoop/hdfs/audit/hdfs/spool XAAUDIT.HDFS.AZURE_ACCOUNTNAME=__REPLACE_AZURE_ACCOUNT_NAME XAAUDIT.HDFS.AZURE_ACCOUNTKEY=__REPLACE_AZURE_ACCOUNT_KEY XAAUDIT.HDFS.AZURE_SHELL_KEY_PROVIDER=__REPLACE_AZURE_SHELL_KEY_PROVIDER XAAUDIT.HDFS.AZURE_ACCOUNTKEY_PROVIDER=__REPLACE_AZURE_ACCOUNT_KEY_PROVIDER XAAUDIT.LOG4J.ENABLE=false XAAUDIT.LOG4J.IS_ASYNC=false XAAUDIT.LOG4J.ASYNC.MAX.QUEUE.SIZE=10240 XAAUDIT.LOG4J.ASYNC.MAX.FLUSH.INTERVAL.MS=30000 XAAUDIT.LOG4J.DESTINATION.LOG4J=true XAAUDIT.LOG4J.DESTINATION.LOG4J.LOGGER=xaaudit XAAUDIT.HDFS.IS_ENABLED=false XAAUDIT.HDFS.DESTINATION_DIRECTORY=hdfs://__REPLACE__NAME_NODE_HOST:8020/ranger/audit/%app-type%/%time:yyyyMMdd% XAAUDIT.HDFS.LOCAL_BUFFER_DIRECTORY=__REPLACE__LOG_DIR/hadoop/%app-type%/audit XAAUDIT.HDFS.LOCAL_ARCHIVE_DIRECTORY=__REPLACE__LOG_DIR/hadoop/%app-type%/audit/archive XAAUDIT.HDFS.DESTINTATION_FILE=%hostname%-audit.log XAAUDIT.HDFS.DESTINTATION_FLUSH_INTERVAL_SECONDS=900 XAAUDIT.HDFS.DESTINTATION_ROLLOVER_INTERVAL_SECONDS=86400 XAAUDIT.HDFS.DESTINTATION_OPEN_RETRY_INTERVAL_SECONDS=60 XAAUDIT.HDFS.LOCAL_BUFFER_FILE=%time:yyyyMMdd-HHmm.ss%.log XAAUDIT.HDFS.LOCAL_BUFFER_FLUSH_INTERVAL_SECONDS=60 XAAUDIT.HDFS.LOCAL_BUFFER_ROLLOVER_INTERVAL_SECONDS=600 XAAUDIT.HDFS.LOCAL_ARCHIVE_MAX_FILE_COUNT=10 XAAUDIT.SOLR.IS_ENABLED=false XAAUDIT.SOLR.MAX_QUEUE_SIZE=1 XAAUDIT.SOLR.MAX_FLUSH_INTERVAL_MS=1000 XAAUDIT.SOLR.SOLR_URL=http://localhost:6083/solr/ranger_audits SSL_KEYSTORE_FILE_PATH=/etc/hadoop/conf/ranger-plugin-keystore.jks SSL_KEYSTORE_PASSWORD=myKeyFilePassword SSL_TRUSTSTORE_FILE_PATH=/etc/hadoop/conf/ranger-plugin-truststore.jks SSL_TRUSTSTORE_PASSWORD=changeit CUSTOM_USER=hdfs CUSTOM_GROUP=hadoop EOF # 创建配置文件 xasecure-audit.xml cat > /data/ranger/ranger-2.1.0-hdfs-plugin/hadoop/etc/hadoop/xasecure-audit.xml << EOF <!-- MYSQL的连接地址及用户名端口号,配置同RANGER ADMIN中INSTALL.PROPERTIES的MYSQL配置相同--> <property> <name>xasecure.audit.jpa.javax.persistence.jdbc.url</name> <value>jdbc:mysql://10.10.10.130:3306/ranger</value> </property> <property> <name>xasecure.audit.jpa.javax.persistence.jdbc.user</name> <value>ranger</value> </property> <property> <name>xasecure.audit.jpa.javax.persistence.jdbc.password</name> <value>Ranger2.1</value> </property> EOF # 启动 Ranger HDFS Plugin 2.1.0 sh /data/ranger/ranger-2.1.0-hdfs-plugin/enable-hdfs-plugin.sh # 调整 HDFS 配置文件 # CDH 环境内,如下参数已开放配置 <property> <name>dfs.permissions</name> <value>true</value> </property> <property> <name>dfs.namenode.alcs.enabled</name> <value>true</value> </property> # CDH 环境内,在 HDFS 服务的 hdfs-site.xml 的 HDFS 高级配置代码段添加如下配置 <property> <name>dfs.namenode.inode.attributes.provider.class</name> <value>org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer</value> </property
2. 重启 HDFS 服务
3. 检查 HDFS 服务状态
- 在 cdh6-01 - 10.10.10.137 和 cdh6-02 - 10.10.10.138 节点上,进行如下操作
# 若插件正常工作,则会在如下目录中生成临时文件 ll /etc/ranger/test-cdh6-hdfs/policycache/
4. HDFS Plugin 关联 Ranger Admin
-
Service Name: test-cdh6-hdfs
-
Username: ranger
-
Password: ranger@123
-
NameNode URL: hdfs://10.10.10.137:9870,hdfs://10.10.10.138:9870
部署 YARN Plugin
1. 安装 Ranger 2.1.0 YARN Plugin
-
YARN 的 Ranger 插件需要安装在所有的 ResourceManager 节点上
-
在 cdh6-01 - 10.10.10.137 和 cdh6-02 - 10.10.10.138 节点上,进行如下操作
# 解压 Ranger YARN Plugin 2.1.0 源码包 tar -zxf /data/ranger/ranger-2.1.0-yarn-plugin.tar.gz -C /data/ranger # 将 YARN 所需 jar 包存放至 Ranger YARN Plugin 内 # 此步骤与上述调整代码的原因相同,为了在重启 YARN 服务时不会出现无法获取配置文件或 jar 包的异常 # 创建 jar 包路径 mkdir -p /data/ranger/ranger-2.1.0-yarn-plugin/hadoop/etc # 存放 jar 包 ln -s /opt/cloudera/parcels/CDH/lib/hadoop/*.jar /data/ranger/ranger-2.1.0-yarn-plugin/hadoop ln -s /opt/cloudera/parcels/CDH/lib/hadoop/lib/*.jar /data/ranger/ranger-2.1.0-yarn-plugin/hadoop ln -s /opt/cloudera/parcels/CDH/lib/hadoop/etc/hadoop /data/ranger/ranger-2.1.0-yarn-plugin/hadoop/etc/hadoop # 将 Ranger YARN Plugin 所需 jar 包存放至 YARN 内 ln -s /data/ranger/ranger-2.1.0-yarn-plugin/lib/*.jar /opt/cloudera/parcels/CDH/lib/hadoop/lib ln -s /data/ranger/ranger-2.1.0-yarn-plugin/lib/ranger-yarn-plugin-impl /opt/cloudera/parcels/CDH/lib/hadoop/lib # 备份原配置文件 cp /data/ranger/ranger-2.1.0-yarn-plugin/install.properties /data/ranger/ranger-2.1.0-yarn-plugin/install.properties.orig # 调整配置文件 install.properties cat > install.properties <<EOF REPOSITORY_NAME=test-cdh6-yarn COMPONENT_INSTALL_DIR_NAME=/data/ranger/ranger-2.1.0-yarn-plugin/hadoop XAAUDIT.SOLR.ENABLE=true XAAUDIT.SOLR.URL=http://10.10.10.137:6083/solr/ranger_audits XAAUDIT.SOLR.USER=NONE XAAUDIT.SOLR.PASSWORD=NONE XAAUDIT.SOLR.ZOOKEEPER=NONE XAAUDIT.SOLR.FILE_SPOOL_DIR=/var/log/hadoop/yarn/audit/solr/spool XAAUDIT.ELASTICSEARCH.ENABLE=false XAAUDIT.ELASTICSEARCH.URL=NONE XAAUDIT.ELASTICSEARCH.USER=NONE XAAUDIT.ELASTICSEARCH.PASSWORD=NONE XAAUDIT.ELASTICSEARCH.INDEX=NONE XAAUDIT.ELASTICSEARCH.PORT=NONE XAAUDIT.ELASTICSEARCH.PROTOCOL=NONE XAAUDIT.HDFS.ENABLE=false XAAUDIT.HDFS.HDFS_DIR=hdfs://__REPLACE__NAME_NODE_HOST:8020/ranger/audit XAAUDIT.HDFS.FILE_SPOOL_DIR=/var/log/hadoop/yarn/audit/hdfs/spool XAAUDIT.HDFS.AZURE_ACCOUNTNAME=__REPLACE_AZURE_ACCOUNT_NAME XAAUDIT.HDFS.AZURE_ACCOUNTKEY=__REPLACE_AZURE_ACCOUNT_KEY XAAUDIT.HDFS.AZURE_SHELL_KEY_PROVIDER=__REPLACE_AZURE_SHELL_KEY_PROVIDER XAAUDIT.HDFS.AZURE_ACCOUNTKEY_PROVIDER=__REPLACE_AZURE_ACCOUNT_KEY_PROVIDER XAAUDIT.LOG4J.ENABLE=false XAAUDIT.LOG4J.IS_ASYNC=false XAAUDIT.LOG4J.ASYNC.MAX.QUEUE.SIZE=10240 XAAUDIT.LOG4J.ASYNC.MAX.FLUSH.INTERVAL.MS=30000 XAAUDIT.LOG4J.DESTINATION.LOG4J=true XAAUDIT.LOG4J.DESTINATION.LOG4J.LOGGER=xaaudit XAAUDIT.HDFS.IS_ENABLED=false XAAUDIT.HDFS.DESTINATION_DIRECTORY=hdfs://__REPLACE__NAME_NODE_HOST:8020/ranger/audit/%app-type%/%time:yyyyMMdd% XAAUDIT.HDFS.LOCAL_BUFFER_DIRECTORY=__REPLACE__LOG_DIR/yarn/audit XAAUDIT.HDFS.LOCAL_ARCHIVE_DIRECTORY=__REPLACE__LOG_DIR/yarn/audit/archive XAAUDIT.HDFS.DESTINTATION_FILE=%hostname%-audit.log XAAUDIT.HDFS.DESTINTATION_FLUSH_INTERVAL_SECONDS=900 XAAUDIT.HDFS.DESTINTATION_ROLLOVER_INTERVAL_SECONDS=86400 XAAUDIT.HDFS.DESTINTATION_OPEN_RETRY_INTERVAL_SECONDS=60 XAAUDIT.HDFS.LOCAL_BUFFER_FILE=%time:yyyyMMdd-HHmm.ss%.log XAAUDIT.HDFS.LOCAL_BUFFER_FLUSH_INTERVAL_SECONDS=60 XAAUDIT.HDFS.LOCAL_BUFFER_ROLLOVER_INTERVAL_SECONDS=600 XAAUDIT.HDFS.LOCAL_ARCHIVE_MAX_FILE_COUNT=10 XAAUDIT.SOLR.IS_ENABLED=false XAAUDIT.SOLR.MAX_QUEUE_SIZE=1 XAAUDIT.SOLR.MAX_FLUSH_INTERVAL_MS=1000 XAAUDIT.SOLR.SOLR_URL=http://localhost:6083/solr/ranger_audits SSL_KEYSTORE_FILE_PATH=/etc/hadoop/conf/ranger-plugin-keystore.jks SSL_KEYSTORE_PASSWORD=myKeyFilePassword SSL_TRUSTSTORE_FILE_PATH=/etc/hadoop/conf/ranger-plugin-truststore.jks SSL_TRUSTSTORE_PASSWORD=changeit CUSTOM_USER=yarn CUSTOM_GROUP=hadoop EOF # 创建配置文件 xasecure-audit.xml cat > /data/ranger/ranger-2.1.0-yarn-plugin/hadoop/etc/hadoop/xasecure-audit.xml << EOF <!-- MYSQL的连接地址及用户名端口号,配置同RANGER ADMIN中INSTALL.PROPERTIES的MYSQL配置相同--> <property> <name>xasecure.audit.jpa.javax.persistence.jdbc.url</name> <value>jdbc:mysql://10.10.10.130:3306/ranger</value> </property> <property> <name>xasecure.audit.jpa.javax.persistence.jdbc.user</name> <value>ranger</value> </property> <property> <name>xasecure.audit.jpa.javax.persistence.jdbc.password</name> <value>Ranger2.1</value> </property> EOF # 启动 Ranger YARN Plugin 2.1.0 sh /data/ranger/ranger-2.1.0-yarn-plugin/enable-yarn-plugin.sh # 调整 YARN 配置文件 # CDH 环境内,在 YARN 服务的 yarn-site.xml 的 YARN 高级配置代码段添加如下配置 <property> <name>yarn.authorization-provider</name> <value>org.apache.ranger.authorization.yarn.authorizer.RangerYarnAuthorizer</value> </property>
2. 重启 YARN 服务
3. 检查 YARN 服务状态
- 在 cdh6-01 - 10.10.10.137 和 cdh6-02 - 10.10.10.138 节点上,进行如下操作
# 若插件正常工作,则会在如下目录中生成临时文件 ll /etc/ranger/test-cdh6-yarn/policycache/
4. YARN Plugin 关联 Ranger Admin
-
Service Name: test-cdh6-yarn
-
Username: ranger
-
Password: ranger@123
-
YARN REST URL: hdfs://10.10.10.137:8080,hdfs://10.10.10.138:8080
部署 Hive Plugin
1. 安装 Ranger 2.1.0 Hive Plugin
-
Ranger 对于 Hive 的权限管理特殊性为:
-
Ranger 只能管理基于 jdbc 连接的,无法管理其它的连接方式,例如:hive-cli
-
若业务不需要 hive-cli 操作方式,建议将此方式禁用
-
-
Hive 的 Ranger 插件需要安装在所有的 HiveServer2 节点上
-
在 cdh6-03 - 10.10.10.139 节点上,进行如下操作
# 解压 Ranger Hive Plugin 2.1.0 源码包 tar -zxf /data/ranger/ranger-2.1.0-hive-plugin.tar.gz -C /data/ranger # 备份原配置文件 cp /data/ranger/ranger-2.1.0-hive-plugin/install.properties /data/ranger/ranger-2.1.0-hive-plugin/install.properties.orig # 调整配置文件 install.properties cat > /data/ranger/ranger-2.1.0-hive-plugin/install.properties << EOF POLICY_MGR_URL=http://10.10.10.137:6080 REPOSITORY_NAME=test-cdh6-hive COMPONENT_INSTALL_DIR_NAME=/opt/cloudera/parcels/CDH/lib/hive XAAUDIT.SOLR.ENABLE=true XAAUDIT.SOLR.URL=http://10.10.10.137:6083/solr/ranger_audits XAAUDIT.SOLR.USER=NONE XAAUDIT.SOLR.PASSWORD=NONE XAAUDIT.SOLR.ZOOKEEPER=NONE XAAUDIT.SOLR.FILE_SPOOL_DIR=/var/log/hive/audit/solr/spool XAAUDIT.HDFS.ENABLE=false XAAUDIT.HDFS.HDFS_DIR=hdfs://__REPLACE__NAME_NODE_HOST:8020/ranger/audit XAAUDIT.HDFS.FILE_SPOOL_DIR=/var/log/hive/audit/hdfs/spool XAAUDIT.HDFS.AZURE_ACCOUNTNAME=__REPLACE_AZURE_ACCOUNT_NAME XAAUDIT.HDFS.AZURE_ACCOUNTKEY=__REPLACE_AZURE_ACCOUNT_KEY XAAUDIT.HDFS.AZURE_SHELL_KEY_PROVIDER=__REPLACE_AZURE_SHELL_KEY_PROVIDER XAAUDIT.HDFS.AZURE_ACCOUNTKEY_PROVIDER=__REPLACE_AZURE_ACCOUNT_KEY_PROVIDER XAAUDIT.HDFS.IS_ENABLED=false XAAUDIT.HDFS.DESTINATION_DIRECTORY=hdfs://__REPLACE__NAME_NODE_HOST:8020/ranger/audit/%app-type%/%time:yyyyMMdd% XAAUDIT.HDFS.LOCAL_BUFFER_DIRECTORY=__REPLACE__LOG_DIR/hive/audit/%app-type% XAAUDIT.HDFS.LOCAL_ARCHIVE_DIRECTORY=__REPLACE__LOG_DIR/hive/audit/archive/%app-type% XAAUDIT.HDFS.DESTINTATION_FILE=%hostname%-audit.log XAAUDIT.HDFS.DESTINTATION_FLUSH_INTERVAL_SECONDS=900 XAAUDIT.HDFS.DESTINTATION_ROLLOVER_INTERVAL_SECONDS=86400 XAAUDIT.HDFS.DESTINTATION_OPEN_RETRY_INTERVAL_SECONDS=60 XAAUDIT.HDFS.LOCAL_BUFFER_FILE=%time:yyyyMMdd-HHmm.ss%.log XAAUDIT.HDFS.LOCAL_BUFFER_FLUSH_INTERVAL_SECONDS=60 XAAUDIT.HDFS.LOCAL_BUFFER_ROLLOVER_INTERVAL_SECONDS=600 XAAUDIT.HDFS.LOCAL_ARCHIVE_MAX_FILE_COUNT=10 XAAUDIT.SOLR.IS_ENABLED=false XAAUDIT.SOLR.MAX_QUEUE_SIZE=1 XAAUDIT.SOLR.MAX_FLUSH_INTERVAL_MS=1000 XAAUDIT.SOLR.SOLR_URL=http://localhost:6083/solr/ranger_audits SSL_KEYSTORE_FILE_PATH=/etc/hive/conf/ranger-plugin-keystore.jks SSL_KEYSTORE_PASSWORD=myKeyFilePassword SSL_TRUSTSTORE_FILE_PATH=/etc/hive/conf/ranger-plugin-truststore.jks SSL_TRUSTSTORE_PASSWORD=changeit UPDATE_XAPOLICIES_ON_GRANT_REVOKE=true CUSTOM_USER=hive CUSTOM_GROUP=hadoop EOF # 创建配置文件 xasecure-audit.xml cat > /data/ranger/ranger-2.1.0-hive-plugin/install/conf.templates/enable/xasecure-audit.xml << EOF <!-- MYSQL的连接地址及用户名端口号,配置同RANGER ADMIN中INSTALL.PROPERTIES的MYSQL配置相同--> <property> <name>xasecure.audit.jpa.javax.persistence.jdbc.url</name> <value>jdbc:mysql://10.10.10.130:3306/ranger</value> </property> <property> <name>xasecure.audit.jpa.javax.persistence.jdbc.user</name> <value>ranger</value> </property> <property> <name>xasecure.audit.jpa.javax.persistence.jdbc.password</name> <value>Ranger2.1</value> </property> EOF # 注释环境变量 # 若不进行如下配置,在通过 beeline 连接 Hive 时会出现异常 # 所有需要连接 Hive 节点都需进行如下操作 # 备份原配置文件 cp /opt/cloudera/parcels/CDH/lib/hive/conf/hive-env.sh cp /opt/cloudera/parcels/CDH/lib/hive/conf/hive-env.sh.orig # 注释如下环境变量定义 # export HIVE_OPTS="${HIVE_OPTS} --hiveconf hive.query.redaction.rules=${HIVE_CONF_DIR}/redaction-rules.json --hiveconf hive.exec.query.redactor.hooks=org.cloudera.hadoop.hive.ql.hooks.QueryRedactor" # 启动 Ranger Hive Plugin 2.1.0 sh /data/ranger/ranger-2.1.0-hive-plugin/enable-hive-plugin.sh # 检查 Ranger Hive Plugin 2.1.0 启动状态 # 目录下会生成 ranger 相关配置文件 ll /opt/cloudera/parcels/CDH/lib/hive/conf/ # 目录下会生成 Ranger 相关 jar 包 ll /opt/cloudera/parcels/CDH/lib/hive/lib/ |grep ranger lrwxrwxrwx 1 root root 64 Sep 6 10:47 ranger-hive-plugin-impl -> /data/ranger/ranger-2.1.0-hive-plugin/lib/ranger-hive-plugin-impl lrwxrwxrwx 1 root root 74 Sep 6 10:47 ranger-hive-plugin-shim-2.1.0.jar -> /data/ranger/ranger-2.1.0-hive-plugin/lib/ranger-hive-plugin-shim-2.1.0.jar lrwxrwxrwx 1 root root 76 Sep 6 10:47 ranger-plugin-classloader-2.1.0.jar -> /data/ranger/ranger-2.1.0-hive-plugin/lib/ranger-plugin-classloader-2.1.0.jar # 调整 Hive 配置文件 # CDH 环境内,在 Hive 服务的 hive-site.xml 的 Hive 客户端高级配置代码段添加如下配置 <property> <name>hive.security.authenticator.manager</name> <value> org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator </value> </property> <property> <name>hive.security.authorization.manager</name> <value> org.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory </value> </property> <property> <name>hive.security.authorization.enabled</name> <value>true</value> </property> <property> <name>hive.conf.restricted.list</name> <value> hive.security.authorization.enabled,hive.security.authorization.manager,hive.security.authenticator.manager </value> </property>
2. 重启 Hive 服务
3. 检查 Hive 服务状态
- 在 cdh6-03 - 10.10.10.139 节点上,进行如下操作
# 若插件正常工作,则会在如下目录中生成临时文件 ll /etc/ranger/test-cdh6-hive/policycache/
4. Hive Plugin 关联 Ranger Admin
-
Service Name: test-cdh6-hive
-
Username: ranger
-
Password: ranger@123
-
jdbc.driverClassName: org.apache.hive.jdbc.HiveDriver
-
jdbc.url: jdbc:hive2://10.10.10.139:10000
部署 Kafka Plugin
1. 安装 Ranger 2.1.0 Kafka Plugin
-
Kafka 的 Ranger 插件需要安装在所有的 Broker 节点上
-
在所有节点上,进行如下操作
# 解压 Ranger Kafka Plugin 2.1.0 源码包 tar -zxf /data/ranger/ranger-2.1.0-kafka-plugin.tar.gz -C /data/ranger # 备份原配置文件 cp /data/ranger/ranger-2.1.0-kafka-plugin/install.properties /data/ranger/ranger-2.1.0-kafka-plugin/install.properties.orig # 调整配置文件 install.properties cat > /data/ranger/ranger-2.1.0-kafka-plugin/install.properties << EOF COMPONENT_INSTALL_DIR_NAME=/opt/cloudera/parcels/CDH/lib/kafka POLICY_MGR_URL=http://10.10.10.137:6080 REPOSITORY_NAME=test-cdh6-kafka XAAUDIT.SUMMARY.ENABLE=true XAAUDIT.SOLR.ENABLE=true XAAUDIT.SOLR.URL=http://10.10.10.137:6083/solr/ranger_audits XAAUDIT.SOLR.USER=NONE XAAUDIT.SOLR.PASSWORD=NONE XAAUDIT.SOLR.ZOOKEEPER=NONE XAAUDIT.SOLR.FILE_SPOOL_DIR=/var/log/kafka/audit/solr/spool XAAUDIT.ELASTICSEARCH.ENABLE=false XAAUDIT.ELASTICSEARCH.URL=NONE XAAUDIT.ELASTICSEARCH.USER=NONE XAAUDIT.ELASTICSEARCH.PASSWORD=NONE XAAUDIT.ELASTICSEARCH.INDEX=NONE XAAUDIT.ELASTICSEARCH.PORT=NONE XAAUDIT.ELASTICSEARCH.PROTOCOL=NONE XAAUDIT.HDFS.ENABLE=false XAAUDIT.HDFS.HDFS_DIR=hdfs://__REPLACE__NAME_NODE_HOST:8020/ranger/audit XAAUDIT.HDFS.FILE_SPOOL_DIR=/var/log/kafka/audit/hdfs/spool XAAUDIT.HDFS.AZURE_ACCOUNTNAME=__REPLACE_AZURE_ACCOUNT_NAME XAAUDIT.HDFS.AZURE_ACCOUNTKEY=__REPLACE_AZURE_ACCOUNT_KEY XAAUDIT.HDFS.AZURE_SHELL_KEY_PROVIDER=__REPLACE_AZURE_SHELL_KEY_PROVIDER XAAUDIT.HDFS.AZURE_ACCOUNTKEY_PROVIDER=__REPLACE_AZURE_ACCOUNT_KEY_PROVIDER XAAUDIT.LOG4J.ENABLE=false XAAUDIT.LOG4J.IS_ASYNC=false XAAUDIT.LOG4J.ASYNC.MAX.QUEUE.SIZE=10240 XAAUDIT.LOG4J.ASYNC.MAX.FLUSH.INTERVAL.MS=30000 XAAUDIT.LOG4J.DESTINATION.LOG4J=true XAAUDIT.LOG4J.DESTINATION.LOG4J.LOGGER=xaaudit XAAUDIT.HDFS.IS_ENABLED=false XAAUDIT.HDFS.DESTINATION_DIRECTORY=hdfs://__REPLACE__NAME_NODE_HOST:8020/ranger/audit/%app-type%/%time:yyyyMMdd% XAAUDIT.HDFS.LOCAL_BUFFER_DIRECTORY=__REPLACE__LOG_DIR/kafka/audit XAAUDIT.HDFS.LOCAL_ARCHIVE_DIRECTORY=__REPLACE__LOG_DIR/kafka/audit/archive XAAUDIT.HDFS.DESTINTATION_FILE=%hostname%-audit.log XAAUDIT.HDFS.DESTINTATION_FLUSH_INTERVAL_SECONDS=900 XAAUDIT.HDFS.DESTINTATION_ROLLOVER_INTERVAL_SECONDS=86400 XAAUDIT.HDFS.DESTINTATION_OPEN_RETRY_INTERVAL_SECONDS=60 XAAUDIT.HDFS.LOCAL_BUFFER_FILE=%time:yyyyMMdd-HHmm.ss%.log XAAUDIT.HDFS.LOCAL_BUFFER_FLUSH_INTERVAL_SECONDS=60 XAAUDIT.HDFS.LOCAL_BUFFER_ROLLOVER_INTERVAL_SECONDS=600 XAAUDIT.HDFS.LOCAL_ARCHIVE_MAX_FILE_COUNT=10 XAAUDIT.SOLR.IS_ENABLED=false XAAUDIT.SOLR.MAX_QUEUE_SIZE=1 XAAUDIT.SOLR.MAX_FLUSH_INTERVAL_MS=1000 XAAUDIT.SOLR.SOLR_URL=http://localhost:6083/solr/ranger_audits SSL_KEYSTORE_FILE_PATH=/etc/hadoop/conf/ranger-plugin-keystore.jks SSL_KEYSTORE_PASSWORD=myKeyFilePassword SSL_TRUSTSTORE_FILE_PATH=/etc/hadoop/conf/ranger-plugin-truststore.jks SSL_TRUSTSTORE_PASSWORD=changeit CUSTOM_USER=kafka CUSTOM_GROUP=hadoop EOF # 存放配置文件 ln -s /data/ranger/ranger-2.1.0-kafka-plugin/lib/ranger-kafka-plugin-impl/*.xml /opt/cloudera/parcels/CDH/lib/kafka/config/ # 启动 Ranger Kafka Plugin 2.1.0 sh /data/ranger/ranger-2.1.0-kafka-plugin/enable-kafka-plugin.sh # 检查 Ranger Kafka Plugin 2.1.0 启动状态 # 目录下会生成 Ranger 相关 jar 包 ll /opt/cloudera/parcels/CDH/lib/kafka/libs/ |grep ranger lrwxrwxrwx 1 root root 67 Sep 25 18:23 ranger-kafka-plugin-impl -> /data/ranger/ranger-2.1.0-kafka-plugin/lib/ranger-kafka-plugin-impl lrwxrwxrwx 1 root root 77 Sep 25 18:23 ranger-kafka-plugin-shim-2.1.0.jar -> /data/ranger/ranger-2.1.0-kafka-plugin/lib/ranger-kafka-plugin-shim-2.1.0.jar lrwxrwxrwx 1 root root 78 Sep 25 18:23 ranger-plugin-classloader-2.1.0.jar -> /data/ranger/ranger-2.1.0-kafka-plugin/lib/ranger-plugin-classloader-2.1.0.jar # 调整 Kafka 配置文件 # CDH 环境内,在 Kafka 服务的 kafka.properties 的 Kafka Broker 高级配置代码段添加如下配置 authorizer.class.name=org.apache.ranger.authorization.kafka.authorizer.RangerKafkaAuthorizer
2. 重启 Kafka 服务
3. 检查 Kafka 服务状态
- 在所有节点上,进行如下操作
# 若插件正常工作,则会在如下目录中生成临时文件 ll /etc/ranger/test-cdh6-kafka/policycache/
4. Kafka Plugin 关联 Ranger Admin
-
Service Name: test-cdh6-kafka
-
Username: ranger
-
Password: ranger@123
-
ZooKeeper Connect String: 10.10.10.139:218/kafka
部署 HBase Plugin
1. 安装 Ranger 2.1.0 HBase Plugin
-
HBase 的 Ranger 插件需要安装在所有的 RegionServer 节点上
-
在 cdh6-02 - 10.10.10.138 和 cdh6-03 - 10.10.10.139 节点上,进行如下操作
# 解压 Ranger HBase Plugin 2.1.0 源码包 tar -zxf /data/ranger/ranger-2.1.0-hbase-plugin.tar.gz -C /data/ranger # 备份原配置文件 cp /data/ranger/ranger-2.1.0-hbase-plugin/install.properties /data/ranger/ranger-2.1.0-hbase-plugin/install.properties.orig # 调整配置文件 install.properties cat > /data/ranger/ranger-2.1.0-hbase-plugin/install.properties << EOF POLICY_MGR_URL=http://10.10.10.137:6080 REPOSITORY_NAME=test-cdh6-hbase COMPONENT_INSTALL_DIR_NAME=/opt/cloudera/parcels/CDH/lib/hbase XAAUDIT.SUMMARY.ENABLE=true XAAUDIT.SOLR.ENABLE=true XAAUDIT.SOLR.URL=http://10.10.10.137:6083/solr/ranger_audits XAAUDIT.SOLR.USER=NONE XAAUDIT.SOLR.PASSWORD=NONE XAAUDIT.SOLR.ZOOKEEPER=NONE XAAUDIT.SOLR.FILE_SPOOL_DIR=/var/log/hbase/audit/solr/spool XAAUDIT.ELASTICSEARCH.ENABLE=false XAAUDIT.ELASTICSEARCH.URL=NONE XAAUDIT.ELASTICSEARCH.USER=NONE XAAUDIT.ELASTICSEARCH.PASSWORD=NONE XAAUDIT.ELASTICSEARCH.INDEX=NONE XAAUDIT.ELASTICSEARCH.PORT=NONE XAAUDIT.ELASTICSEARCH.PROTOCOL=NONE XAAUDIT.HDFS.ENABLE=false XAAUDIT.HDFS.HDFS_DIR=hdfs://__REPLACE__NAME_NODE_HOST:8020/ranger/audit XAAUDIT.HDFS.FILE_SPOOL_DIR=/var/log/hbase/audit/hdfs/spool XAAUDIT.HDFS.AZURE_ACCOUNTNAME=__REPLACE_AZURE_ACCOUNT_NAME XAAUDIT.HDFS.AZURE_ACCOUNTKEY=__REPLACE_AZURE_ACCOUNT_KEY XAAUDIT.HDFS.AZURE_SHELL_KEY_PROVIDER=__REPLACE_AZURE_SHELL_KEY_PROVIDER XAAUDIT.HDFS.AZURE_ACCOUNTKEY_PROVIDER=__REPLACE_AZURE_ACCOUNT_KEY_PROVIDER XAAUDIT.LOG4J.ENABLE=false XAAUDIT.LOG4J.IS_ASYNC=false XAAUDIT.LOG4J.ASYNC.MAX.QUEUE.SIZE=10240 XAAUDIT.LOG4J.ASYNC.MAX.FLUSH.INTERVAL.MS=30000 XAAUDIT.LOG4J.DESTINATION.LOG4J=true XAAUDIT.LOG4J.DESTINATION.LOG4J.LOGGER=xaaudit XAAUDIT.HDFS.IS_ENABLED=false XAAUDIT.HDFS.DESTINATION_DIRECTORY=hdfs://__REPLACE__NAME_NODE_HOST:8020/ranger/audit/%app-type%/%time:yyyyMMdd% XAAUDIT.HDFS.LOCAL_BUFFER_DIRECTORY=__REPLACE__LOG_DIR/hbase/audit/%app-type% XAAUDIT.HDFS.LOCAL_ARCHIVE_DIRECTORY=__REPLACE__LOG_DIR/hbase/audit/archive/%app-type% XAAUDIT.HDFS.DESTINTATION_FILE=%hostname%-audit.log XAAUDIT.HDFS.DESTINTATION_FLUSH_INTERVAL_SECONDS=900 XAAUDIT.HDFS.DESTINTATION_ROLLOVER_INTERVAL_SECONDS=86400 XAAUDIT.HDFS.DESTINTATION_OPEN_RETRY_INTERVAL_SECONDS=60 XAAUDIT.HDFS.LOCAL_BUFFER_FILE=%time:yyyyMMdd-HHmm.ss%.log XAAUDIT.HDFS.LOCAL_BUFFER_FLUSH_INTERVAL_SECONDS=60 XAAUDIT.HDFS.LOCAL_BUFFER_ROLLOVER_INTERVAL_SECONDS=600 XAAUDIT.HDFS.LOCAL_ARCHIVE_MAX_FILE_COUNT=10 XAAUDIT.SOLR.IS_ENABLED=false XAAUDIT.SOLR.MAX_QUEUE_SIZE=1 XAAUDIT.SOLR.MAX_FLUSH_INTERVAL_MS=1000 XAAUDIT.SOLR.SOLR_URL=http://localhost:6083/solr/ranger_audits SSL_KEYSTORE_FILE_PATH=/etc/hbase/conf/ranger-plugin-keystore.jks SSL_KEYSTORE_PASSWORD=myKeyFilePassword SSL_TRUSTSTORE_FILE_PATH=/etc/hbase/conf/ranger-plugin-truststore.jks SSL_TRUSTSTORE_PASSWORD=changeit UPDATE_XAPOLICIES_ON_GRANT_REVOKE=true CUSTOM_USER=hbase CUSTOM_GROUP=hadoop EOF # 启动 Ranger HBase Plugin 2.1.0 sh /data/ranger/ranger-2.1.0-hbase-plugin/enable-hbase-plugin.sh # 检查 Ranger HBase Plugin 2.1.0 启动状态 # 目录下会生成 ranger 相关配置文件 ll /opt/cloudera/parcels/CDH/lib/hbase/conf/ -rw-r--r-- 1 root root 21 Sep 26 08:09 __cloudera_generation__ -rw-r--r-- 1 root root 70 Sep 26 08:09 __cloudera_metadata__ -rw-r--r-- 1 root root 3346 Sep 26 08:09 core-site.xml -rw-r--r-- 1 root root 270 Sep 26 08:09 hbase-env.sh -rw-r--r-- 1 root root 3018 Sep 26 08:36 hbase-site.xml -rw-r--r-- 1 root root 2876 Sep 26 08:09 hdfs-site.xml -rw-r--r-- 1 root root 0 Sep 26 08:09 jaas.conf -rw-r--r-- 1 root root 312 Sep 26 08:09 log4j.properties -rw-r--r-- 1 hbase hadoop 10816 Sep 26 08:36 ranger-hbase-audit.xml -rw-r--r-- 1 hbase hadoop 2948 Sep 26 08:36 ranger-hbase-security.xml -rw-r--r-- 1 hbase hadoop 1924 Sep 26 08:36 ranger-policymgr-ssl.xml -rw-r--r-- 1 hbase hadoop 69 Sep 26 08:36 ranger-security.xml -rw-r--r-- 1 root root 315 Sep 26 08:09 ssl-client.xml # 目录下会生成 Ranger 相关 jar 包 ll /opt/cloudera/parcels/CDH/lib/hbase/lib/ |grep ranger lrwxrwxrwx 1 root root 67 Sep 26 08:36 ranger-hbase-plugin-impl -> /data/ranger/ranger-2.1.0-hbase-plugin/lib/ranger-hbase-plugin-impl lrwxrwxrwx 1 root root 77 Sep 26 08:36 ranger-hbase-plugin-shim-2.1.0.jar -> /data/ranger/ranger-2.1.0-hbase-plugin/lib/ranger-hbase-plugin-shim-2.1.0.jar lrwxrwxrwx 1 root root 78 Sep 26 08:36 ranger-plugin-classloader-2.1.0.jar -> /data/ranger/ranger-2.1.0-hbase-plugin/lib/ranger-plugin-classloader-2.1.0.jar # 调整 HBase 配置文件 # CDH 环境内,在 HBase 服务的 hbase-site.xml 的 HBase Master 高级配置代码段添加如下配置 <property> <name>hbase.coprocessor.master.classes</name> <value>org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor</value> </property> # CDH 环境内,在 HBase 服务的 hbase-site.xml 的 HBase RegionServer 高级配置代码段添加如下配置 <property> <name>hbase.coprocessor.region.classes</name> <value>org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor</value> </property>
2. 重启 HBase 服务
- 在启动 Master 过程中,会报出访问元数据权限不足的异常。一般是由于在配置完成 HDFS Plugin 后,未将 hbase 用户权限设置为最大权限导致。调整权限后,再次重启就可恢复正常。
3. 检查 HBase 服务状态
- 在 cdh6-02 - 10.10.10.138 和 cdh6-03 - 10.10.10.139 节点上,进行如下操作
# 若插件正常工作,则会在如下目录中生成临时文件 ll /etc/ranger/test-cdh6-hbase/policycache/
4. HBase Plugin 关联 Ranger Admin
-
Service Name: test-cdh6-hbase
-
Username: ranger
-
Password: ranger@123
-
hbase.zookeeper.property.clientPort: 2181
-
hbase.zookeeper.quorum: 10.10.10.139
-
zookeeper.znode.parent: /hbase
部署 Spark Plugin
1. 安装 Ranger 2.1.0 Spark Plugin
-
部署 Spark Ranger 插件的主要目的是,为了解决使用 Spark 运行 Hive 任务时不出现无法获取用户组的异常,保证 Hive On Spark 能够正常运行
-
此文档所使用的 Spark 为 On YARN 模式,其余模式的 Spark 不适用于此文档
-
由于 Ranger 2.1.0 不支持 Spark,而且最新版本的 Ranger 2.4.0 也未支持 Spark,所以即使安装了 Spark 插件也无法通过 Ranger Admin 进行权限管理
-
Spark 的 Ranger 插件需要安装在所有的 Gateway 节点上
-
所有节点上,进行如下操作
# 解压 Ranger Spark Plugin 2.1.0 源码包 tar -zxf /data/ranger/ranger-2.1.0-spark-plugin.tar.gz -C /data/ranger # 备份原配置文件 cp /data/ranger/ranger-2.1.0-spark-plugin/ranger-spark-audit.xml /data/ranger/ranger-2.1.0-spark-plugin/ranger-spark-audit.xml.orig # 调整配置文件 ranger-spark-audit.xml cat > /data/ranger/ranger-2.1.0-spark-plugin/ranger-spark-audit.xml << EOF <configuration> <property> <name>xasecure.audit.is.enabled</name> <value>false</value> </property> <property> <name>xasecure.audit.destination.db</name> <value>false</value> </property> <property> <name>xasecure.audit.destination.db.jdbc.driver</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>xasecure.audit.destination.db.jdbc.url</name> <value>jdbc:mysql://10.10.10.130:3306/ranger</value> </property> <property> <name>xasecure.audit.destination.db.password</name> <value>ranger</value> </property> <property> <name>xasecure.audit.destination.db.user</name> <value>Ranger2.1</value> </property> </configuration> EOF # 备份原配置文件 cp /data/ranger/ranger-2.1.0-spark-plugin/ranger-spark-security.xml /data/ranger/ranger-2.1.0-spark-plugin/ranger-spark-security.xml.orig # 调整配置文件 ranger-spark-security.xml cat > /data/ranger/ranger-2.1.0-spark-plugin/ranger-spark-security.xml << EOF <configuration> <property> <name>ranger.plugin.spark.policy.rest.url</name> <value>http://10.10.10.137:6080</value> </property> <property> <name>ranger.plugin.spark.service.name</name> <value>test-cdh6-hive</value> </property> <property> <name>ranger.plugin.spark.policy.cache.dir</name> <value>./test-cdh6-hive/policycache</value> </property> <property> <name>ranger.plugin.spark.policy.pollIntervalMs</name> <value>5000</value> </property> <property> <name>ranger.plugin.spark.policy.source.impl</name> <value>org.apache.ranger.admin.client.RangerAdminRESTClient</value> </property> </configuration> EOF # 启动 Ranger Spark Plugin 2.1.0 cd /data/ranger/ranger-2.1.0-spark-plugin/ && sh enable-spark-plugin.sh # 检查 Ranger Spark Plugin 2.1.0 启动状态 # 目录下会生成 ranger 相关配置文件 ll /opt/cloudera/parcels/CDH/lib/spark/conf/ -rw-r--r-- 1 root root 13195 Nov 7 20:47 classpath.txt -rw-r--r-- 1 root root 20 Nov 7 20:47 __cloudera_generation__ -rw-r--r-- 1 root root 70 Nov 7 20:47 __cloudera_metadata__ -rw-r--r-- 1 root root 888 Nov 7 20:47 log4j.properties -rw-r--r-- 1 root root 0 Nov 7 20:47 navigator.lineage.client.properties -rw-r--r-- 1 root root 1776 Nov 7 20:47 spark-defaults.conf -rw-r--r-- 1 root root 2128 Nov 7 20:47 spark-env.sh -rw-r--r-- 1 root root 762 Nov 21 15:22 ranger-spark-audit.xml -rw-r--r-- 1 root root 724 Nov 21 15:20 ranger-spark-security.xml drwxr-xr-x 2 root root 174 Nov 7 20:47 yarn-conf # 目录下会生成 Ranger 相关 jar 包 ll /opt/cloudera/parcels/CDH/lib/spark/jars/ |grep -E "ranger|jna|gethostname" -rw-r--r-- 1 root root 4179 Nov 21 13:31 gethostname4j.jar -rw-r--r-- 1 root root 1506993 Nov 21 13:31 jna-5.5.0.jar -rw-r--r-- 1 root root 93766 Nov 21 15:15 ranger-hive-plugin-2.1.0.jar -rw-r--r-- 1 root root 26943 Nov 21 15:16 ranger-hive-plugin-shim-2.1.0.jar -rw-r--r-- 1 root root 215530 Nov 21 15:32 ranger-plugins-audit-2.1.0.jar -rw-r--r-- 1 root root 899844 Nov 21 15:32 ranger-plugins-common-2.1.0.jar -rw-r--r-- 1 root root 22168 Nov 21 15:32 ranger-plugins-cred-2.1.0.jar -rw-r--r-- 1 root root 16103757 Nov 21 15:24 spark-ranger-1.0-SNAPSHOT.jar # 调整 Spark 配置文件 # CDH 环境内,spark-conf/spark-defaults.conf的Spark客户端高级配置代码段(安全阀)添加如下配置 hive.security.authorization.manager=org.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory spark.sql.extensions=org.apache.ranger.authorization.spark.authorizer.RangerSparkSQLExtension