1. 配置方式
认证方式是在$KYLIN_HOME/conf/kylin.properites文件中进行配置的,默认情况下使用的是testing的方式:
kylin.security.profile=testing
需要添加修改用户和用户权限,需要如下操作:
vim $KYLIN_HOME/tomcat/webapps/kylin/WEB-INF/classes/kylinSecurity.xml
第一种方法
第二种方法
2. OPEN LDAP
Kylin支持企业或生产部署的LDAP认证; 这是用Spring Security框架实现的;
kylin.properties配置密钥需要使用AES进行加密
#input args[0]:AES args[1]:your password
#jar找不到删到版本号tab自己库的
java -classpath kylin-server-base-2.2.0.jar:spring-beans-4.3.10.RELEASE.jar:spring-core-4.3.10.RELEASE.jar:commons-codec-1.7.jar org.apache.kylin.rest.security.PasswordPlaceholderConfigurer AES 123456
#output
>> uIS3e+hZQiYh4kFrsyjekA==
#得到密钥添加密码
创建配置文件副本:
cd /opt/soft/kylin/apache-kylin-2.2.0-bin/conf/
cp kylin.properties kylin.properties_bak
---------------------------------
vim /opt/soft/kylin/apache-kylin-2.2.0-bin/conf/kylin.properties
#########step1:修改验证方式为ldap,不可共存,测试都配只有testing有用###########
# Spring security profile, options: testing, ldap, saml
# with "testing" profile, user can use pre-defined name/pwd like KYLIN/ADMIN to login
kylin.security.profile=ldap
#########step2:配置权限###########
# Default roles and admin roles in LDAP, for ldap and saml
kylin.security.acl.default-role=ROLE_ANALYST,ROLE_MODELER
kylin.security.acl.admin-role=ROLE_KYLIN_ADMIN_GROUP
官方解释:要将LDAP组映射到Kylin中的管理组,
需要将“acl.adminRole”设置为“ROLE_”+ GROUP_NAME。
例如,在LDAP中,组“KYLIN-ADMIN-GROUP”是管理员列表,
这里需要将其设置为:
-----------------------------------------------------------------------
acl.adminRole=ROLE_KYLIN_ADMIN_GROUP
acl.defaultRole=ROLE_ANALYST,ROLE_MODELER
-----------------------------------------------------------------------
“acl.defaultRole”是授予所有人的默认角色列表,保持原样。
Kylin web 支持 BI 工作流中各种角色的需求
- 分析师(ANALYST):运行查询和检出结果
- 建模师(MODELER):cube 设计,cube/job 操作和监视器
- 管理员(ADMIN):系统操作。
#########step3:配置ldap服务###########
#"用户名和密码信息"
# LDAP authentication configuration
kylin.security.ldap.connection-server=ldap://:389
kylin.security.ldap.connection-username=cn=Manager,dc=daojia,dc=com
kylin.security.ldap.connection-password=uIS3e+hZQiYh4kFrsyjekA==
#"OU组织单元即当前DN的分组,下面为用户账户组和系统账户组"
# LDAP user account directory
kylin.security.ldap.user-search-base=ou=Kylin_People,dc=daojia,dc=com
kylin.security.ldap.user-search-pattern=uid={0}
kylin.security.ldap.user-group-search-base=ou=Kylin_Group,dc=daojia,dc=com
# LDAP service account directory
kylin.security.ldap.service-search-base=ou=Kylin_People,dc=daojia,dc=com
kylin.security.ldap.service-search-pattern=uid={0}
kylin.security.ldap.service-group-search-base=ou=Kylin_Group,dc=daojia,dc=com
3. 导入用户和组
注:dn:后面要加一个空格。
ldapadd -x -D "cn=Manager,dc=daojia,dc=com" -W -f Kylin_People.ldif
#添加用户分支和组分支,添加用户到用户分支
#Kylin_People, dc=daojia,dc=com
dn: ou=Kylin_People,dc=daojia,dc=com
ou: Kylin_People
objectClass: top
objectClass: organizationalUnit
ldapadd -x -D "cn=Manager,dc=daojia,dc=com" -W -f Kylin_People.ldif
dn: ou=Kylin_Group,dc=daojia,dc=com
ou: Kylin_Group
objectClass: top
objectClass: organizationalUnit
ldapadd -x -D "cn=Manager,dc=daojia,dc=com" -W -f zhanglin.ldif
dn: uid=zhanglin,ou=Kylin_People,dc=daojia,dc=com
objectClass: inetOrgPerson
uid: zhanglin
sn: zhanglin
cn: zhanglin
mail: [email protected]
userPassword: 123123
#给ADMIN用户添加组权限的节点
ldapadd -x -D "cn=Manager,dc=daojia,dc=com" -W -f Kylin_Admin_Group.ldif
dn: cn=Kylin_Admin_Group,ou=Kylin_Group,dc=daojia,dc=com
objectClass: groupOfNames
objectClass: top
cn: ky_group
member: uid=zhanglin04,ou=Kylin_People,dc=daojia,dc=com
member: uid=ADMIN,ou=Kylin_People,dc=daojia,dc=com
#给ANALYST用户添加组权限的节点
ldapadd -x -D "cn=Manager,dc=daojia,dc=com" -W -f ANALYST.ldif
dn: cn=ANALYST,ou=Kylin_Group,dc=daojia,dc=com
objectClass: groupOfNames
objectClass: top
cn: ANALYST
member: uid=test1,ou=Kylin_People,dc=daojia,dc=com
member: uid=test,ou=Kylin_People,dc=daojia,dc=com
4 启用LDAP
在conf / kylin.properties中设置“kylin.sandbox = false”,然后重新启动Kylin服务器。
../bin/kylin.sh stop && sh ../bin/kylin.sh start #注意:"重启失败需要手动kill,retart不好用"
发现bug,新建用户需要登录一下,admin才能给其他非管理员授权project的权限,解决方法创建用户后调用登录接口。
添加完如图所示。
附:简单操作命令
增加用户:
新增成员后将成员添加到ou对应的验证组member上即可,无需重启
# ldapadd -x -D "cn=Manager,dc=zpbigdata,dc=com" -W -f /tmp/passwd.ldif
# ldapadd -x -D "cn=Manager,dc=zpbigdata,dc=com" -W -f /tmp/group.ldif
ldapadd -x -D "cn=Manager,dc=daojia,dc=com" -W
查询:
ldapsearch -x -D "cn=Manager,dc=daojia,dc=com" -w 123456 -b "ou=People,dc=daojia,dc=com"
删除用户或组条目:
$ ldapdelete -x -w secret -D 'uid=ldapadmin,ou=people,dc=javachen,dc=com' "uid=test,ou=people,dc=javachen,dc=com"
$ ldapdelete -x -w secret -D 'uid=ldapadmin,ou=people,dc=javachen,dc=com' "cn=test,ou=group,dc=javachen,dc=com"
查询:
ldapsearch -x -D "cn=Manager,dc=daojia,dc=com" -w 123456 -b "uid=haha1,ou=People,dc=daojia,dc=com"