ldap + sentry架构的相关结论的验证
文章目录
一、环境
ldap跟hdfs、hive整合,kerberos、sentry安装并启用。
二、验证
1. 验证1:kerberos的认证、sentry的授权不关心用户的来源(ldap,linux),是独立于linxu和ldap的,可以不在linux创建对应用户。
kerberos、sentry只接收相关服务(hdfs、hive、impala)的认证、授权委托。验证用户是否认证、授权,用户是由服务提交的,至于用户最终映射到哪里(ldap、linux),kerberos、sentry并不关心
{1} 在ldap中添加一个linux中没有的entry(用户),先不赋sentry权限,查看这个用户是否可以访问hive。然后sentry再授权,查看访问情况
[1] 创建在linux中没有的ldap用户
创建组vim /opt/ldap-groups/testgroup.ldif
ldapadd -D “cn=ldapadmin,dc=example,dc=com” -W -x -f /opt/ldap-groups/testgroup.ldif -hnode105 -p389
创建用户vim /opt/ldap-users/testuser.ldif
ldapadd -D “cn=ldapadmin,dc=example,dc=com” -W -x -f /opt/ldap-users/testuser.ldif -hnode105 -p389
id testuser
[2] 进行krb认证
[3] 访问hdfs
kinit testuser
在testuser认证的情况下,可以访问hdfs
如果kdestory,则不能访问
[4] sentry未授权的情况下访问hive
beeline -u “jdbc:hive2://node105:10000/;principal=hive/[email protected]”
无法访问对应表。
此时testuser用户所在组testgroup没有任何角色:
[4] 赋予表sentry的权限,查看是否可以访问hive
-
切换到超级用户dcdcdc:
kinit dcdcdc
-
beeline -u “jdbc:hive2://node105:10000/;principal=hive/[email protected]”
-
show roles; dcdcdc当然是可以获取的,testuser直接报错,因为没权限
-
show current roles;
-
用超级用户给testuser授权
创建role:create role testgrouprole;
show roles;
将dctest库的权限付给testgrouprole: grant all on database dctest to ROLE testgrouprole;
将角色testgrouprole分配给testgroup组: GRANT ROLE testgrouprole TO GROUP testgroup; -
退出beeline,重新用testuser认证
beeline -u “jdbc:hive2://node105:10000/;principal=hive/[email protected]”
show current roles;会发现相比上一节,多了role
再次查询select * from dctest.test limit 10;会发现能查到dctest库中的数据。
2. 验证2:整合ldap后,不在ldap但在linux的用户是否仍可以访问hive
kinit hive/hive, 发现可以访问