1. 配置方式
認(rèn)證方式是在$KYLIN_HOME/conf/kylin.properites文件中進行配置的,默認(rèn)情況下使用的是testing的方式:
kylin.security.profile=testing
需要添加修改用戶和用戶權(quán)限,需要如下操作:
vim $KYLIN_HOME/tomcat/webapps/kylin/WEB-INF/classes/kylinSecurity.xml
第一種方法

1.png

2.png
第二種方法
<scr:authentication-manager alias="testingAuthenticationManager">
<!-- do user ldap auth -->
<scr:authentication-provider ref="kylinUserAuthProvider">
<scr:user-service>
<scr:user name="KYLIN" password="$2a$10$59cVAEx9A4.SFzEcyvPWUOW/XKsERN1.B3STIYtIB7OJotuNU/jYW" authorities="ROLE_MODELER, ROLE_ANALYST, ROLE_ADMIN" />
</scr:user-service>
<scr:password-encoder ref="passwordEncoder"/>
</scr:authentication-provider>
</scr:authentication-manager>
2. OPEN LDAP
Kylin支持企業(yè)或生產(chǎn)部署的LDAP認(rèn)證; 這是用Spring Security框架實現(xiàn)的;
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==
#得到密鑰添加密碼
創(chuàng)建配置文件副本:
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:配置權(quán)限###########
# 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”設(shè)置為“ROLE_”+ GROUP_NAME。
例如,在LDAP中,組“KYLIN-ADMIN-GROUP”是管理員列表,
這里需要將其設(shè)置為:
-----------------------------------------------------------------------
acl.adminRole=ROLE_KYLIN_ADMIN_GROUP
acl.defaultRole=ROLE_ANALYST,ROLE_MODELER
-----------------------------------------------------------------------
“acl.defaultRole”是授予所有人的默認(rèn)角色列表,保持原樣。
Kylin web 支持 BI 工作流中各種角色的需求
- 分析師(ANALYST):運行查詢和檢出結(jié)果
- 建模師(MODELER):cube 設(shè)計,cube/job 操作和監(jiān)視器
- 管理員(ADMIN):系統(tǒng)操作。
#########step3:配置ldap服務(wù)###########
#"用戶名和密碼信息"
# LDAP authentication configuration
kylin.security.ldap.connection-server=ldap://<your ldap ip>:389
kylin.security.ldap.connection-username=cn=Manager,dc=daojia,dc=com
kylin.security.ldap.connection-password=uIS3e+hZQiYh4kFrsyjekA==
#"OU組織單元即當(dāng)前DN的分組,下面為用戶賬戶組和系統(tǒng)賬戶組"
# 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. 導(dǎo)入用戶和組
注: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: testmail@gmaild.com
userPassword: 123123
#給ADMIN用戶添加組權(quán)限的節(jié)點
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用戶添加組權(quán)限的節(jié)點
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中設(shè)置“kylin.sandbox = false”,然后重新啟動Kylin服務(wù)器。
../bin/kylin.sh stop && sh ../bin/kylin.sh start #注意:"重啟失敗需要手動kill,retart不好用"
發(fā)現(xiàn)bug,新建用戶需要登錄一下,admin才能給其他非管理員授權(quán)project的權(quán)限,解決方法創(chuàng)建用戶后調(diào)用登錄接口。

39BE5549-C45E-403C-9DC1-8CD1D44A5915.png
添加完如圖所示。
附:簡單操作命令
增加用戶:
新增成員后將成員添加到ou對應(yīng)的驗證組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"