HDP 06.Ranger LDAP ⽤户权限测试
1、ipa-v01 服务器创建LDAP组,团队用户,普通用户
kinit admin
Wfipaadmin123456
ipa group-add g_etl --desc groupOf_etl
ipa group-add g_bigdata --desc groupOf_bigdata
ipa group-add g_rec --desc groupOf_rec
ipa group-add g_push --desc groupOf_push
ipa group-add g_ad --desc groupOfAD
ipa group-add g_hue --desc groupOf_hue
ipa group-add g_flink --desc groupOfFlink
ipa user-add etl --first=etl --last=etl --shell=/bin/bash --homedir=/home/etl
ipa user-add bigdata --first=bigdata --last=bigdata --shell=/bin/bash --homedir=/home/bigdata
ipa user-add rec --first=rec --last=rec --shell=/bin/bash --homedir=/home/rec
ipa user-add push --first=push --last=push --shell=/bin/bash --homedir=/home/push
ipa user-add ad --first=ad --last=ad --shell=/bin/bash --homedir=/home/ad
ipa user-add hue --first=hue --last=hue --shell=/bin/bash --homedir=/home/hue
ipa user-add flink --first=flink --last=flink --shell=/bin/bash --homedir=/home/flink
Hue普通用户(后续 Hue 安装使用中会作权限测试)
ipa user-add tianlingqun --first=lingqun --last=tian
ipa user-add fanwei --first=wei --last=fan
ipa user-add fanbinbin --first=binbin --last=fan
给LDAP组添加成员
ipa group-add-member g_etl --users=etl
ipa group-add-member g_bigdata --users=bigdata
ipa group-add-member g_rec --users=rec
ipa group-add-member g_push --users=push
ipa group-add-member g_ad --users=ad
ipa group-add-member g_hue --users=hue --users=tianlingqun --users=fanwei --users=fanbinbin
ipa group-add-member g_flink --users=flink
ipa group-add g_other --desc groupOfOhter
ipa user-add other --first=other --last=other --shell=/bin/bash --homedir=/home/other
ipa group-add-member g_other --users=other
重启 Ranger 的 "RANGER USERSYNC"组件查看cat /var/log/ranger/usersync/usersync.log 日志
2、创建 hive 数据库
create database etl;
create database dim_v8sp;
create database dim_v8sp_tmp;
create database dim_v8sp_ph;
create database ods_v8sp;
create database dwd_v8sp;
create database dwb_v8sp;
create database dws_v8sp;
create database rec_test;
create database rec_online;
create database push_test;
create database push_online;
create database ad_test;
create database ad_online;
注意:
1). 其中 带 test 字样的是团队用户的测试库,带 online 是团队用户的线上库;
2). dim_v8sp_tmp(维表临时库),主要是sqoop 从关系数据库同步而来,进将其数据 merge into 到 dim_v8sp(维表库);
3). dim_v8sp_ph 是 hive 访问 phoenix相关表所建的库(库里主要创建的是一些
hive for phoenix 指针表),这样可以直接将hive数据插入phoenix(hbase);
4). ods_v8sp 是原始日志层,dwd_v8sp 是清洗层以及清洗结果层, dwb_v8sp是
数仓中间层,dws_v8sp是服务层(这些库均只有 bigdata 组用户才能执行建表,及表的增,删,改操作)
3、登录ranger管理界面
4、同步的用户和用户组:
从上图我们发现 g_other 组及 other⽤户并没有同步到Ranger中(上⾯图均没找到),其主要原因是在配置 Ranger 的 "GROUPCONFIGS"的时候,参数 ranger.usersync.group.searchfilte( GroupSearch Filter ) 的值中并没有包含 g_other 组
5、创建相关的hive 数据库,因为暂时还没有给任何⽤户的任何Hive库表权限,⽽hive相关的服务主要安装在 master-v[01,02]两台服务器,所以先进 master-v01 或者 master-v02 服务器,以hive ⽤户操作
直接⽤ hive 命令进去,报错"Failed to find any Kerberos tgt",原因是我们没有初始化票据。于是我们先到 /etc/security/keytabs/ ⽬录,查⼀下 hive 相关的票据⽂件,执⾏如下命令:
cd /etc/security/keytabs/
ls -l ./
klist -kt ./hive.service.keytab
kinit -kt ./hive.service.keytab hive/master-
v01.tianlingqun.com@tianlingqun.COM
klist
6、创建 hive 数据库
create database etl;
create database dim_v8sp;
create database dim_v8sp_tmp;
create database dim_v8sp_ph;
create database ods_v8sp;
create database dwd_v8sp;
create database dwb_v8sp;
create database dws_v8sp;
create database rec_test;
create database rec_online;
create database push_test;
create database push_online;
create database ad_test;
create database ad_online;
注意:
1). 其中 带 test 字样的是团队用户的测试库,带 online 是团队用户的线上库;
2). dim_v8sp_tmp(维表临时库),主要是sqoop 从关系数据库同步而来,进将其数据 merge into 到 dim_v8sp(维表库);
3). dim_v8sp_ph 是 hive 访问 phoenix相关表所建的库(库里主要创建的是一些
hive for phoenix 指针表),这样可以直接将hive数据插入phoenix(hbase);
4). ods_v8sp 是原始日志层,dwd_v8sp 是清洗层以及清洗结果层, dwb_v8sp是
数仓中间层,dws_v8sp是服务层(这些库均只有 bigdata 组用户才能执行建表,及表的增,删,改操作)
7、进 "Ranger Admin UI"给Hive 相关库授权。如下图,点击"wfcluster_hive" 进去后,点击"Add New policy",主要是以库为单位创建相关 Policy
注意:
1). 这⾥是按⽤户为单位配置的(你也可以按队列去配置)
2). 其他队列授权类似,不赘述
8、进 "Ranger Admin UI"给hdfs用户 相关库授权。如下图,点击"wfcluster_hadoop" 进去后,点击"Add New policy"
9、创建用户的hdfs 家目录,并在 Ranger 里授权
hdfs dfs -mkdir /user/etl;
hdfs dfs -mkdir /user/bigdata;
hdfs dfs -mkdir /user/rec;
hdfs dfs -mkdir /user/push;
hdfs dfs -mkdir /user/ad;
hdfs dfs -mkdir /user/hue;
hdfs dfs -mkdir /user/flink;
hdfs dfs -chown etl:etl /user/etl;
hdfs dfs -chown bigdata:bigdata /user/bigdata;
hdfs dfs -chown rec:rec /user/rec;
hdfs dfs -chown push:push /user/push;
hdfs dfs -chown ad:ad /user/ad;
hdfs dfs -chown hue:hue /user/hue;
hdfs dfs -chown flink:flink /user/flink;
10、添加hdfs相关参数到core-site.xml
hadoop.proxyuser.etl.groups=*
hadoop.proxyuser.etl.hosts=*
hadoop.proxyuser.bigdata.groups=*
hadoop.proxyuser.bigdata.hosts=*
hadoop.proxyuser.rec.groups=*
hadoop.proxyuser.rec.hosts=*
hadoop.proxyuser.push.groups=*
hadoop.proxyuser.push.hosts=*
hadoop.proxyuser.ad.groups=*
hadoop.proxyuser.ad.hosts=*
hadoop.proxyuser.hue.groups=*
hadoop.proxyuser.hue.hosts=*
hadoop.proxyuser.flink.groups=*
hadoop.proxyuser.flink.hosts=*
在Ambari控制台,点击 "HDFS" -> "CONFIGS" -> "ADVANCED" ->"Custom core-site" -> "Add Property" ,在弹出来的"Add Property"窗⼝选择"Bulk property add mode"图标,然后将上⾯的
参数内容粘贴到里⾯,点击"ADD",然后点击"SAVE",保存并重启相关组件
11、添加相关⽤户的 Yarn 队列,并配置⽤户默认队列,并Ranger授权相关队列给相关⽤户
注意:
1). 所有队列的 "Capacity" * "User Limit Factor" 必须⼤于等于"Max Capacity",这样 "Max Capacity"配置才能⽣效;如上图 8*15 >100
2). flink队列主要⽤于跑⼀些实时任务,实时任务的资源⼀般是不允许被抢占的,所以该队列的优先级最⾼,如上图:优先级为9
3). 带 _h 的参数⼀般要⾼⼀个优先级,如 etl_h 队列的优先级⾼于 etl的优先级;
4. 团队⽤户的默认队列就是该团队⽤户名,如 etl 团队⽤户的默认队列就是 etl 队列;它是通过 "Queue Mappings" 配置的,
如上图:我的配置是g:g_hue:hue,u:hue:hue,u:etl:etl,u:bigdata:bigdata,u:rec:rec,u:push:push,u:flink:flink,u:ad:ad
12、进 "Ranger Admin UI"给hdfs用户 相关库授权。如下图,点击" wfcluster_yarn" 进去后,点击"Add New policy"
13、配置⽤户环境,⽣成⽤户票据(因为 client-v[01,02]两台服务器主要⽤来执⾏相关任务的,所以该步操作主要在这两台机器上进⾏)这⾥以 bigdata ⽤户为例,在 client-v01 服务器以root⽤户操作
创建 bigdata 用户环境
mkdir /home/bigdata;
cp ~/.bashrc /home/bigdata/;
cp ~/.bash_profile /home/bigdata/;
chown -R bigdata:bigdata /home/bigdata
注意:我用一个 别名hive2,以便个性化一些参数。
14、生成用户票据文件(kerberos 认证有两种方式:
1. 用票据文件认证;
2. 用用户名密码认证;这里bigdata用户因为是组用户,有很多人使用,所以用票据文件可能更方便)
进 bigdata用户执行如下操作:
mkdir -p /home/${USER}/security/keytabs/;
kinit admin #初始化一下 admin 帐号,因为后续命令需要用到他的权限
Wfipaadmin123456
klist -kt /home/bigdata/security/keytabs/bigdata.keytab
kinit -kt /home/bigdata/security/keytabs/bigdata.keytab
bigdata@16899.COM
注意: 在 client-v01 上⽣成票据⽂件后,如果 client-v02 上要⽤同样的帐号的
话,此时不能再⽤ ipa-getkeytab 命令去⽣成票据⽂件(因为⼀旦执⾏该命令,原
来的 client-v01 上的票据⽂件将失效)
所以此时只能将 client-v01 上的票据⽂件copy 到 client-v02 上,在
client-v02 上类似如下操作:
mkdir -p /home/bigdata/security/keytabs/;
scp root@client-v01:/home/bigdata/security/keytabs/bigdata.keytab
/home/bigdata/security/keytabs/;
chown -R bigdata:bigdata /home/bigdata/;
chmod 600 /home/bigdata/security/keytabs/bigdata.keytab;
15、
⽤ crontab -e 命令创建 crontab 定时任务,定期初始化票据⽂件
(票据⽂件默认24⼩时有效,所以每天0点执⾏就OK了)
crontab -l
# kerberos kinit, add by tianlingqun, 20191108
0 0 * * * kinit -k -t /home/bigdata/security/keytabs/bigdata.keytab
bigdata@tianlingqun.COM
16、以 bigdata ⽤户进hive 后,尝试在 ods_v8sp 库建表,并插⼊数据成功
注意:hive 3.0 建表的时候,如果不带 external 关键字,则是建的“内部表”,且其内部表必须是“事务表”(⽀持增删改操作)
记得在 master-v01(或者master-v02) 进 hdfs 操作系统⽤户创建相关⽤户的 hdfs 家⽬录,并在 Ranger⾥授权