Kylin启用LDAP和SSO安全认证

2017年12月27日 0 条评论 1.5k 次阅读 0 人点赞

启用LDAP身份验证

Kylin通过Spring Security框架实现了对企业或生产环境下LDAP认证的支持,启用LDAP之前需要联系LDAP管理员以获取相关信息,如LDAP服务器URL,用户名/密码,搜索模式等。

  • 配置LDAP服务器信息
    如果服务器配置了LDAP安全保护,首先请提供LDAP URL以及用户名/密码。 kylin.properties中的密码需要加密,可以通过运行下面的命令来获取加密后的密码:

运行后一个大大的error非常刺眼:

这个实际上是因为官方文档没有更新,使用的还是kylin-server-base-1.6.0.jar,替换为本文正在使用中的kylin-server-base-2.0.0.jar执行成功:

配置conf/kylin.properties中LDAP选项

其次,为用户提供LDAP预设的搜索模式,以下为一个配置示例:

如果有服务账户也需要进行身份验证(例如,系统内置账户),可以对ldap.service.*属性值进行设置,否则留空即可。

  • 配置管理员组,默认角色

LDAP组映射到Kylin中的管理组,需要将“acl.adminRole”设置为“ROLE_”+ GROUP_NAME。例如在LDAP中,组“KYLIN-ADMIN-GROUP”是管理员列表,配置文件中需要将其设置为:

“acl.defaultRole”是一个授予所有人默认角色的列表,保持默认即可。

  • 启用LDAP

在conf /kylin.properties中设置“kylin.security.profile = ldap”然后重启Kylin服务器。

启用S​​SO认证

从v1.5开始,Kylin通过 SAML提供SSO认证功能。该实现基于Spring Security 的SAML扩展。详情可以参考本文来获取整体理解。进行相关配置以前请确保已经成功启用了LDAP认证并实现了用户管理,SSO服务器只能进行身份验证,而Kylin需要搜索LDAP来获取该用户的详细信息。

  • 生成IDP metadata配置文件

联系相关IDP(ID provider),提供以下三类信息以向其索要SSO metadata文件:

1.Partner entity ID, which is an unique ID of your app, e.g,: https://host-name/kylin/saml/metadata

2.App callback endpoint, to which the SAML assertion be posted, it need be: https://host-name/kylin/saml/SSO

3.Kylin server公钥, SSO server 将用它加密消息。

  • 生成JKS keystore

Kylin发送加密消息(使用Kylin的私钥签名)到SSO服务器时需要提供一个密钥库(JKS),以下将介绍生成密钥库生成中一种常用方法:

以上操作会将密钥放在别名为“kylin”的“samlKeystore.jks”秘钥库中。

  • 启用更高强度密码

确保当前环境为处理更高级别的加密密钥配置妥当,除此之外还可能需要下载Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files,(设置Java的安全策略),并将local_policy.jar和US_export_policy.jar拷贝到 $JAVA_HOME/jre/lib/security目录下。

  • 部署IDP xml文件和keystore密钥库

IDP metadata和keystore文件需要部署在Kylin web应用程序的classpath路径下:$ KYLIN_HOME/tomcat/webapps/kylin/WEB-INF/classes。

1.将IDP文件命名为sso_metadata.xml并复制到Kylin的classpath下;

2.将keystore 密钥库命名为“samlKeystore.jks”并复制到Kylin的classpath下;

3. 如果有使用其他别名或密码情况,请相应更新kylinSecurity.xml中的设置。

其他配置

将以下属性添加到Kylin Server的conf/kylin.properties配置文件中:

需要注意的是,Kylin在SAML消息中会用一个“email”属性来代表登录用户,它会截取@之前的名称来搜索、匹配LDAP用户。

  • 启用SSO认证

conf/kylin.properties中设置“kylin.security.profile = saml”并重启Kylin服务器,在URL之后输入“/kylin”或“/ kylin/cubes”时会被重定向到SSO登录页面,授权后才能成功登陆。 此时,LDAP登录方式仍然可用,可以键入“/kylin/login”以原始方式登陆。 Rest API(/ kylin / api / *)不受影响,仍然采用LDAP + basic authentication方式认证。

重剑无锋,大巧不工。

文章评论(0)