[HOW TO] Pentaho LDAP

Contate-nos

Publicado por: Marcello Bontempo Salgueiro
Ter, 30 Mai, 09:21

TAGS: Java, Linux, Pentaho, Tecnologia

Salve galerinha, depois de um bom tempo sem postar estamos de novo retornando!!!

Hoje irei apresentar um rápido tutorial para autenticação do Pentaho com LDAP, vocês verão como é mais fácil do que parece, apesar de ter muitos arquivos para realizar tal configurações.

Introdução:

Vamos exemplificar que os servidores de LDAP são:

ldap://192.168.0.3:389
ldap://192.168.0.4:389

o usuário de autenticação que tem permissão de leitura na árvore do LDAP são:

user: ldap_user
password: senha

Agora vamos supor que o seu critério de pesquisa da árvore DN seja:

ou=corp,dc=intra,dc=empresa,dc=com,dc=br

ps.: Este será o seu filtro de pesquisa dentro da árvore de diretórios.

Configurações Pentaho:

Configurar mapeamento do servidore LDAP:

Editar o arquivo /etc/hosts e adicione o servidores LDAP:

192.168.0.3       LDAP
192.168.0.4       LDAP

Penataho carregar módulos LDAP:

Edite o arquivo pentaho-solutions/system/pentaho-spring-beans.xml :

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springsource.org/dtd/spring-beans.dtd"> 
<!--+ 
  | This should be the only file specified in web.xml's contextConfigLocation. It should only contain imports. 
  +--> 
<beans> 
  <import resource="pentahoSystemConfig.xml" />  
  <import resource="adminPlugins.xml" /> 
  <import resource="systemListeners.xml" /> 
  <import resource="sessionStartupActions.xml" />   
  <import resource="applicationContext-spring-security.xml" /> 
  <import resource="applicationContext-common-authorization.xml" /> 
  <!-- LDAP --> 
  <import resource="applicationContext-spring-security-ldap.xml" /> 
  <import resource="applicationContext-pentaho-security-ldap.xml" />  
  <import resource="pentahoObjects.spring.xml" /> 
</beans> 

Configurando conexão com LDAP

Iremos apresentar o seguinte cenário, aplicaremos a roles Admin do Pentaho a um grupo especifico da árvore de diretórios. Vamos supor que o nome do grupo da árvore a qual estamos procurando é GRUPO-TI.

Parametros utilizados no Pentaho para que o mesmo realize a conexão com o LDAP, pesquisa pelo usuário, grupos e roles:

 

 Parametros Descrição
contextSource.providerUrlURL de conexão do LDAP
contextSource.userDnCritério de pesquisa DN para leitura
contextSource.passwordSenha de usuário.
userSearch.searchBaseBase da árvore LDAP
userSearch.searchFilterFiltro de pesquisa de usuários dentro da base de árvore LDAP
populator.convertToUpperCaseConverter as ROLES, no nosso caso converter os grupos que o usuário pertence para caixa alta.
populator.groupRoleAttribute Atributo que será retornado do LDAP
populator.groupSearchBaseBase da árvore LDAP dos grupos.
populator.groupSearchFilterFiltro de pesquisa de grupos dentro da base de árvore LDAP
populator.rolePrefixEste parametro poderá ser utilizado para criar um prefixo, exemplo, temos um grupo chamado XPTO, com o prefixo 'ROLE_', a permissão no Pentaho terá o seguinte nome 'ROLE_XPTO'
populator.searchSubtree
Busca recursiva dentro da base da árvore LDAP.
allAuthoritiesSearch.roleAttributeAtributo de retorno da pesquisa de todas as roles para o Pentaho
allAuthoritiesSearch.searchBaseBase da árvore LDAP dos grupos.
allAuthoritiesSearch.searchFilterFiltro de pesquisa de grupos dentro da base de árvore LDAP
allUsernamesSearch.usernameAttributeAtributo de retorno da pesquisa de todos os usuários na base da árvore de pesquisa do LDAP.
allUsernamesSearch.searchBaseBase da árvore LDAP dos usuários.
allUsernamesSearch.searchFilterFiltro de pesquisa de usuários dentro da base de árvore LDAP

 

Edite o arquivo pentaho-solutions/system/applicationContext-security-ldap.properties:

contextSource.providerUrl=ldap\://LDAP\:389/ 
contextSource.userDn=uid\=ldap_user,ou=corp,dc=intra,dc=empresa,dc=com,dc=br
contextSource.password=senha
   
userSearch.searchBase=ou=corp,dc=intra,dc=empresa,dc=com,dc=br
userSearch.searchFilter=(&(objectClass\=posixAccount)(Uid\={0}*)) 
  
populator.convertToUpperCase=true 
populator.groupRoleAttribute=cn 
populator.groupSearchBase=ou=corp,dc=intra,dc=empresa,dc=com,dc=br
populator.groupSearchFilter=(&(objectClass\=posixGroup)(UniqueMember\=uid={1}*)) 
populator.rolePrefix= 
populator.searchSubtree=true 
    
allAuthoritiesSearch.roleAttribute=cn   
allAuthoritiesSearch.searchBase=ou\=grupos,ou=corp,dc=intra,dc=empresa,dc=com,dc=br
allAuthoritiesSearch.searchFilter=(&(objectClass\=posixGroup)(UniqueMember\=uid={1}*)) 
  
allUsernamesSearch.usernameAttribute=Uid
allUsernamesSearch.searchBase=ou=corp,dc=intra,dc=empresa,dc=com,dc=br
allUsernamesSearch.searchFilter=(&(objectClass\=posixAccount)(Uid\={0}*))  

 

Configuração para permissões baseado nas 'roles' retornadas do LDAP:

Conforme visto anteriormente as roles dentro do Pentaho serão os grupos do LDAP, então a role que será administradora no Pentaho será o grupo: GRUPO-TI. Vale lembra que sempre será em caixa alta o nome do grupo devido ao populator.convertToUpperCase=true.

 

 Permissões Descrição
NOTHINGNenhuma permissão
ADMINISTRATIONAdministrar
EXECUTEExecutar
EXECUTE_ADMINISTRATIONExecutar, administrar
SUBSCRIBESobre escrever
CREATECriar
UPDATEAtualizar
DELETEDeletar
SUBSCRIBE_ADMINISTRATIONSobre escrever, adminsitrar
EXECUTE_SUBSCRIBEExcutar e sobre escrever
ADMIN_ALLTodas as permissões anteriores.

 

Permissão de acessos aos relatórios e indicadores edite o arquivo pentaho-solutions/system/pentaho.xml:

                    ... outras configurações ...
                    <default-acls>   
                        <acl-entry role="Admin" acl="FULL_CONTROL" />                <!-- Admin users get all authorities --> 
                        <acl-entry role="cto" acl="FULL_CONTROL" />                <!-- CTO gets everything --> 
                        <acl-entry role="dev" acl="EXECUTE_SUBSCRIBE" />        <!-- Dev gets execute/subscribe --> 
                        <acl-entry role="Authenticated" acl="EXECUTE" />        <!-- Authenticated users get execute only --> 
                        <acl-entry role="GRUPO-TI" acl="ADMIN_FULL" /> 
                    </default-acls> 
  
                    <!-- 
                        These acls are overrides to specific file/folders.  The above default-acls will 
                        be applied and then these overrides.  This allows for specific access controls to 
                        be loaded when the repository if first populated.  Futher changes to acls can be 
                        made in the platform GUI tool.  Uncomment these and change add or delete to your hearts desire -->
 
                    <!-- Para liberar permissões padrões dentro de cara diretorio do 
                         pentaho-soluions que contém os indicadores e relatórios 
                         basta replicar o overrides, e modificar o local, grupos e 
                         permissões conforme tabela de permissões.
                    -->
                    <overrides> 
                        <file path="/pentaho-solutions/admin"> 
                            <acl-entry role="Admin" acl="FULL_CONTROL" />  
                            <acl-entry role="GRUPO-TI " acl="ADMIN_FULL" /> 
                        </file> 
                    </overrides> 
                    ... outras configurações ...

                </acl-publisher> 
  
                <acl-voter> 
                    <!-- Definição de quais roles, no nosso caso grupos que são Administradores do Pentaho --> 
                    <admin-role>Admin,GRUPO-TI</admin-role> 
                </acl-voter>  

Agora iremos configurar as permissões de acesso as urls do Pentaho para o grupo 'GRUPO-TI'.

Edite o arquivo pentaho-solutions/system/applicationContext-spring-security.xml:

\A/admin.*\Z=Admin,GRUPO-TI
  
\A/auditreport.*\Z=Admin,GRUPO-TI
  
\A/auditreportlist.*\Z=Admin,GRUPO-TI
  
\A/versioncontrol.*\Z=Admin,GRUPO-TI
  
\A/propertieseditor.*\Z=Admin,GRUPO-TI
  
\A/propertiespanel.*\Z=Admin,GRUPO-TI
  
\A/subscriptionadmin.*\Z=Admin,GRUPO-TI
  
\A/resetrepository.*\Z=Admin,GRUPO-TI
  
\A/viewaction.*solution.admin.*\Z=Admin,GRUPO-TI
  
\A/scheduleradmin.*\Z=Admin,GRUPO-TI
  
\A/publish.*\Z=Admin,GRUPO-TI

Um usuário para poder logar no Pentaho deverá ter a permissão da role "Authenticated", como não temos este grupo no LDAP iremos setar agora para todos os usuários do LDAP essa permissão. 

Edita o arquivo: pentaho-solutions/system/applicationContext-spring-security-ldap.xml:

        <bean id="populator" 
                class="org.springframework.security.ldap.populator.DefaultLdapAuthoritiesPopulator"> 
                <constructor-arg index="0"> 
                       <ref local="contextSource" /> 
                </constructor-arg> 

                <constructor-arg index="1" value="${populator.groupSearchBase}" /> 
                <property name="groupRoleAttribute" value="${populator.groupRoleAttribute}" /> 
                <!-- {0} will be replaced with user DN; {1} will be replaced with username --> 
                <property name="groupSearchFilter" value="${populator.groupSearchFilter}" /> 
                <property name="rolePrefix" value="${populator.rolePrefix}" /> 
  
                <property name="convertToUpperCase" value="${populator.convertToUpperCase}" />   
                <property name="searchSubtree" value="${populator.searchSubtree}" /> 
  
                <!-- LDAP -->                <property name="defaultRole" value="Authenticated" /> 
        </bean> 

Agora para que o grupo 'GRUPO-TI' possa adicionar e visualizar data bases do BI, é necessário que aquele grupo esteja configurado no arquivo: pentaho-solutions/system/data-access/settings.xml

    <!-- roles with data access permissions LDAP -->
    <data-access-roles>Admin,GRUPO-TI</data-access-roles>
    <!-- users with data access permissions -->
    <!--
    <data-access-users></data-access-users>
     -->
    <!-- roles with datasource view permissions LDAP -->
    <data-access-view-roles>Authenticated,Admin,GRUPO-TI</data-access-view-roles>

Após realizado todas as configurações reinicie o pentaho.

Referências:

http://cdom.wordpress.com/2011/05/02/pentaho-bi-server-autenticando-no-ldap/

http://infocenter.pentaho.com/help/index.jsp?topic=%2Fpdi_admin_guide%2Freference_ldap_properties.html

http://wiki.pentaho.com/display/ServerDoc2x/Domain+Object+Authorization

COMPARTILHE: Imagem de ComentarioTweetCompartilhe no facebookEnvie por email

Comentário desativado