Pentaho安全介绍
配置安全
配置安全是帮助系统管理员设置BI平台安全,包括本机安全和第三方安全。BI平台支持常用的用户验证和访问/授权。所有管理员都必须创建符合组织层级的用户和角色,但是也有些用户想要改变用户身份验证的方法。如果想要充分掌握安全配置的概念和任务必须了解以下一些术语:
认证:这个步骤是为了确认访问的用户是系统被认证的。通常是通过用户名和密码来确认访问者身份,但有时也会有一些其他的认证方式。
授权:是确认被认证的用户是否能允许访问平台和功能。一个软件系统可以在各层级进行自身保护。在BI平台里,基于Web用户界面的页面可以得到保护。另外,在Pentaho解决方案资源库中,类似文件夹和行动序列都可以通过ACL(访问控制列表)来收到保护。
安全后端:是集用户名,密码和角色为一体的资源库。这个库可以是一个平面文件,通过JDBC访问RDBMS,或者通过LDAP访问目录服务器。
安全数据访问对象(DAO):这是访问安全后端的方法。多数安全数据访问的对象都是以JDBC, Pentaho(hibernate)和LDAP。(JDBC和Pentaho的安全数据访问对象都涉及一个RDMBS安全后端,尽管他们的方式稍有不同).
安全概要:
切换到不同的认证后端:Pentaho的许多管理员喜欢使用自己的身份验证方法,如LDAP,Active Directory的单点登录,或在现有RDBMS中自定义的安全表格,在现有的RDBMS表。这还包括如何删除所有在罕见的情况下登录的不受欢迎的认证支持信息。
访问pentaho企业控制台:由于企业控制台有很多低级别的BA服务器配置选项,你就会想限制它们被访问,也想启用HTTPS支持来确保安全通信。
备注:没有任何办法来限制访问未在BA服务器发布的内容。所以如果你在报表设计器创建了一个报告但是没在BA服务上发布,那么是没有任何访问限制的。所以本地用户一旦进入BA服务器解决方案资源库(pentaho解决方案目录)或者数据库的储存解决方案和调度(hibernate and quartz),那么就可以看见在BA服务器上发布的 所有内容。下述介绍到的限制只适用于用户通过Web浏览器(通过一个私人的局域网或公共互联网)访问Pentaho用户控制平台。
访问“原始”数据源:通过penthao企业控制台,你可以限制访问已经建立的pentaho数据源。然而任何用户都可以利用一个平面文件(CSV,XML,XLS)建立一个数据源,并且熟知JDBC或JNDI链接信息数据库的用户可以在自己的应用服务器(全局的)或客户端工具(本地的)上建数据源。这个用户组织内容安全问题并且也超越pentaho软件的范围。
访问元数据模型:Pentaho元数据模型有更细微的选项用来限制访问。元数据模型最常被用做于交互报表和仪表盘设计器的数据源,尽管报表设计器和PDI也同意访问他们。你可以用Pentaho元数据编辑器来增加访问限制的细微度,为了让你的更改生效,之后你必须要在BA服务器上发布这个模型。
访问ROLAP(Mondrian)架构:ROLAP架构是在架构工作台上创建并发布到BA服务器上,可以用来限制部分或所有基于用户角色架构的访问。这些是Mondrian角色,然而这些角色默认是不和BA服务器连接的。为了让BA服务器用户能访问Mondrian架构,你必须配置三种角色映射方法中的其中一种方法。ROLAP架构在分析设计器和仪表盘设计器中被用作为数据源,同样也可以被报表设计器和PDI访问。
支撑技术
PentahoBI平台使用的是可以配合几种常见的安全后端的Spring Security基础结构:
·? ?? ?? ?平面文件
·? ?? ?? ?Active Directory, LDAP, or other directory server
·? ?? ?? ?RDBMS (security tables in an existing database)
Pentaho的默认安全后端是RDBMS,并且他的Hibernate安全数据访问对象是指Pentaho. BI平台默认安装这个安全表和访问控制列表,同样也可以通过Pentaho企业控制台的图形用户界面来建议配置。这已经被测试过,是一个合理的管理资源授权和用户认证的安全方法,除非你已经部署了一个,否则没有理由启用别的安全后端。
备注:切换到一个非默认的安全后端意味着你需要手动编辑一些BI平台配置文件,来更改安全数据访问对象。同样也意味着你无法使用Pentaho企业控制台去管理用户和角色。
安全实施过程表
?
?
步骤
?
?
过程
?
?
1
?
?
给系统开发一个单一的计划。比如,你在本地或操作上必须有相应的安全后端(例如目录服务器)
?
?
2
?
?
决定用户角色。pentahoBI平台应该有哪些角色?比如说,你公司可能有些角色(或组)被其他应用所使用,你会再BI平台重复用到这些角色或定义新的角色。如果你已经有BI_USER角色,你应该告知Pentaho使用已有角色。
?
?
3
?
?
决定哪些角色可以访问特定的URLs. 这些角色是用于定义Web资源的授权。比如说什么角色会成为Pentaho的管理员?Pentaho有合理的默认Web资源授权设置,所以你或许不需要更改受保护的URL。但你不得不改变允许访问每个URL的角色。
?
?
4
?
?
决定哪些角色被授权执行解决方案资源库中的特定动作序列。这些角色将被用来定义域对象授权。比如说,角色A是否可以在文件夹X中执行动作序列?
?
?
5
?
?
配置安全DAO。离开它设置Pentaho默认安全DAO或切换到JDBC,LDAP,或混合的LDAP+JDBC.
?
?
6
?
?
定义一个角色前缀。默认设置是没有角色前缀。
?
?
7
?
?
定义pentaho管理员角色
?
?
8
?
?
定义域对象授权规则。这是指上述步骤5中定义的角色。
?
?
9
?
?
申请访问控制列表(ACLs).这是一个批处理操作,通过管理权限或Pentaho用户控制台删除所有定制权限
?
?
10
?
?
在/pentaho/server/biserver-ee/pentaho-solutions/system/applicationContext-spring-security.xml file中的filterInvocationInterceptor bean中定义Web资源授权规则。这是指上述步骤3定义的角色。
?
?
11
?
?
设置插件安全。各种授权设置的插件。
?
?
12
?
?
通过编辑/pentaho-solutions/system/data-access-plugin/settings.xml.来限制数据源编辑和创建
?
?
13
?
?
用元数据编辑器配置元数据安全。
?
?
14
?
?
通过配置pentahoObjects.spring.xml.中的Mondrian-UserRoleMapper bean ID来配置Mondrian安全。
?
?
15
?
?
在Pentaho企业控制台和BA服务器中创建一个安全连接。
?
?
16
?
?
如果用户要在BA服务器上发布内容,在/pentaho-solutions/system/publisher_config.xml.文件中设置一个发布密码。
?
?
17
?
?
在Pentaho企业控制台和BA服务器中创建一个Trust。用户除输入用户名和密码之外,还必须提供这个Trust密码。
?
?
18
?
?
通过编辑 repository.spring.xml来更改DI服务器上的管理角色。
?
?
BA服务器用户认证:
BI平台默认创建角色,用户和为Pentaho内置的安全数据访问对象配置的初始化设置。你肯定是要自定义角色,删除或更改默认用户以及增加自己的用户。或者你还希望在BI平台上用自己LDAP,JDBC,或CAS(单点登录)的认证机制。
? ??备注:在你开始操作之前,你应该确定你的BI平台是在一个基本的水平执行操作。这个初步核查是为了如果你在一个非工作配置的状态下结束,可以让你更容易追溯到你的步骤。你还应该备份Pentaho Business Analytics或BA服务器目录(如果你是通过图形安装实用程序,或预配置的归档包解压文件安装的话),或者你的pentaho WAR和你的Pentaho解决方案和企业控制台目录(如果你是在一个现有应用服务器上手动部署Pentaho WAR)。
1、?默认设置
Pentaho安全数据访问对象是一个自定义的Hibernate,是基于用户名/密码DAO,通过Hibernate对象关系映射来读取和写入用户名,密码和角色到一个关系数据库中。
你不需要做初始化Pentaho数据访问对象;这个默认无效的。但是,你一定要创建角色和用户名来符合你的组织架构。
备注:Pentaho的默认安全系统是有利于评价和小产品开发的(少于100个用户),Pentaho推荐在大产品环境下用专注于认证的供应商,比如LDAP或MSAD。
2、切换到LDAP
在操作前你必须有一个带有已建立好配置的工作目录服务器。
以下介绍如何去从Pentaho数据访问对象的BA服务器的认证后端切换到LDAP。
备注:下面的例子是用你的LDAP配置的相对应的角色来替代PentahoAdmins和PentahoUsers。
1) 停止BA服务器和Pentaho企业控制台。
2) 用文本编辑器方式打开/pentaho-solutions/system/pentaho-spring-beans.xml文件,找出下面两个相邻的行,并且把hibernate部分改成ldap:
<import resource="applicationContext-spring-security-hibernate.xml" />
<import resource="applicationContext-pentaho-security-hibernate.xml" />
3) 保存并关闭文件,然后继续编辑/pentaho-solutions/system/data-access/settings.xml,根据你LDAP的设置来修改用户和角色设置。
<!-- roles with data access permissions -->
<data-access-roles>pentahoAdmins</data-access-roles>
<!-- users with data access permissions -->
<!--
<data-access-users></data-access-users>
-->
<!-- roles with datasource view permissions -->
<data-access-view-roles>pentahoUsers,pentahoAdmins</data-access-view-roles>
<!-- users with datasource view permissions -->
<!-- <data-access-view-users></data-access-view-users> -->
<!-- default view acls for user or role -->
<data-access-default-view-acls>31</data-access-default-view-acls>
4) 保存并关闭该文件,继续编辑/pentaho/server/biserver-ee/pentaho-solutions/system/目录中的文件,按照你的LDAP配置中相对应的角色来更改所有Admin和Authenticated角色的例子。
???Pentaho.xml
???Repository.spring.xml(仅限DI Server)
???ApplicationContext-spring-security.xml
5)??用命令行或自己的数据库管理工具,从你的Pentaho解决方案资源数据库中的hibernate表里停止hibernate.pro_files and hibernate.pro_acls_list 表。
6) 删除/tomcat/work/ and /tomcat/temp/ 目录
7) 启用BA Server和企业控制台
8) 登录Pentaho企业控制台
9) 根据LDAP Properties. 里说明,配置Pentaho LDAP关联。
10)进入Configuration > Web Settings.
11)在Authentication里从下拉列表中选择LDAP Based,然后点击Submit。 BA Server会自动重启。
? ? BA Server现在配置的认证用户是与你的目录服务器不同的。