ユーザ用ツール

サイト用ツール


pentaho:ldap

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
pentaho:ldap [2017/06/02 19:11] – 作成 Wiki Editorpentaho:ldap [2017/06/02 20:22] (現在) Wiki Editor
行 1: 行 1:
 ====== Pentaho LDAP(Active Directory)設定 ====== ====== Pentaho LDAP(Active Directory)設定 ======
  
 +Pentaho BIサーバの認証に組織のActive Directoryを利用する。
 +
 +公式のマニュアル
 +  * [[https://help.pentaho.com/Documentation/5.1/0P0/150/010/030]]
 +
 +===== LDAPの接続設定 =====
 +「=」記号はエスケープが必要
 +
 +ここではActiveDirectoryのLDAP機能を利用する。ディレクトリの構造を把握して、適宜対応する。
 +
 +${prefix}/pentaho-solutions/system/applicationContext-security-ldap.properties
 +  contextSource.providerUrl=ldap\://[LDAPサーバのアドレス]\:389
 +  contextSource.userDn=[バインド用のユーザ名]
 +  contextSource.password=[バインド用のパスワード]
 +  
 +  // 認証用にユーザを検索するベースツリー
 +  userSearch.searchBase=OU\=people,DC\=example,DC\=jp
 +  // 認証用のフィルタ{0}は入力されたユーザ名に置換される
 +  userSearch.searchFilter=(sAMAccountName\={0})
 +  
 +  populator.convertToUpperCase=false
 +  
 +  // グループの設定
 +  // グループのツリーをベースに検索し、member属性にユーザが含まれるものを検索する
 +  populator.groupRoleAttribute=cn
 +  populator.groupSearchBase=CN\=Users,DC\=example,DC\=jp
 +  populator.groupSearchFilter=(member\={0})
 +  populator.rolePrefix=
 +  // グループ検索は検索ベースツリーのサブツリーも検索する
 +  populator.searchSubtree=true
 +  
 +  // BIサーバ内のファイルやディレクトリの権限設定画面で表示するロール(役割)の一覧を取得する
 +  // 上記のグループ設定で用いたベースツリーでobjectClassがgroupのエントリを検索してリストにする
 +  // ここではサブツリーが検索されないので注意。グループはあまり問題にはならない
 +  allAuthoritiesSearch.roleAttribute=cn
 +  allAuthoritiesSearch.searchBase=CN\=Users,DC\=example,DC\=jp
 +  allAuthoritiesSearch.searchFilter=(objectClass\=group)
 +  
 +  // BIサーバ内のファイルやディレクトリの権限設定画面で表示するユーザの一覧を取得する
 +  // サブツリーが検索されないのでソースを一部修正(後述)
 +  allUsernamesSearch.usernameAttribute=sAMAccountName
 +  allUsernamesSearch.searchBase=OU\=people,DC\=example,DC\=jp
 +  // 複数のOUに所属するユーザを一覧にしたい場合、サブツリーまで検索するようにしたうえで、
 +  // グループの所属で必要なユーザをフィルタリングする。ここではmemberof属性を利用している
 +  allUsernamesSearch.searchFilter=(&(sAMAccountName\=*)(|(memberof\=CN\=teacher_grp,OU\=research,DC\=example,DC\=jp)(memberof\=CN\=office_grp,OU\=office,DC\=example,DC\=jp)))
 +  
 +  // 管理者のグループとユーザを設定
 +  // 管理者ユーザとグループに設定すると、権限設定の一覧には登場しなくなるようだ
 +  adminRole=CN\=abc_grp,CN\=Users,DC\=example,DC\=jp
 +  adminUser=sAMAccountName\=admin_user,OU\=research,DC\=example,DC\=jp
 +
 +
 +
 +
 +===== データアクセスの権限設定 =====
 +マニュアルには記載されているが、特に変更しなくても動作するようだ。細かく権限設定をする際には必要かもしれない。
 +
 +レポートデザイナー等からのパブリッシュなどもテストして、支障がないか確認する。
 +
 +  * ${prefix}/pentaho-solutions/system/data-access/settings.xml
 +
 +
 +
 +===== 認証基盤の切り替え =====
 +内部の認証サービスからLDAP認証に切り替える
 +
 +${prefix}/pentaho-solutions/system/securities.properties
 +  // providerをjackrabbitからldapに変更する
 +  provider=ldap
 +
 +
 +===== サブツリーを検索するようにソースを改変 =====
 +権限設定画面で表示するユーザの一覧を取得する設定「allUsernamesSearch」では検索ベースだけを検索し、サブツリーを検索しない。
 +
 +一般的には、Pentahoを利用するユーザを特定のOUに入れたりするので、サブツリーを検索しなくても問題がないかもしれないが、設定した環境では利用ユーザが複数のOUに含まれており、検索する必要があった。AD側で対応することも検討したが、同一ユーザを複数のOUに所属させることはできず、エイリアスのような機能も無いようなので、上位からサブツリーを検索して所属グループ等で絞り込みをかけるしかない。そのためには、サブツリーを検索するように設定変更をする必要がある。ログイン時のユーザ検索では、サブツリーを検索するかどうかの設定項目があるのに、ユーザ一覧の検索では設定項目がなく、しかもサブツリーを検索しないのは謎だ。。。
 +
 +以下のファイルに設定を加える。
 +
 +${prefix}/pentaho-solutions/system/applicationContext-pentaho-security-ldap.xml 
 +    <!-- be sure to escape ampersands -->
 +    <bean id="allUsernamesSearch"
 +          class="org.pentaho.platform.plugin.services.security.userrole.ldap.search.GenericLdapSearch">
 +      <constructor-arg index="0" ref="contextSource" />
 +      <constructor-arg index="1">
 +        <bean
 +            class="org.pentaho.platform.plugin.services.security.userrole.ldap.search.LdapSearchParamsFactoryImpl">
 +          <constructor-arg index="0" value="${ldap.allUsernamesSearch.searchBase}" />
 +          <constructor-arg index="1" value="${ldap.allUsernamesSearch.searchFilter}" />
 +  
 +          ////////////////////////////////////////////////////////////
 +          // この部分を追加
 +          <constructor-arg index="2">
 +            <bean class="javax.naming.directory.SearchControls">
 +              <!-- 2 comes from http://java.sun.com/javase/6/docs/api/javax/naming/directory/SearchControls.html#SUBTREE_SCOPE -->
 +              <property name="searchScope" value="2" />
 +            </bean>
 +          </constructor-arg>
 +          ////////////////////////////////////////////////////////////
 +  
 +        </bean>
 +      </constructor-arg>
 +      <constructor-arg index="2">
 +        <bean
 +            class="org.pentaho.platform.plugin.services.security.userrole.ldap.transform.SearchResultToAttrValueList">
 +          <constructor-arg index="0" value="${ldap.allUsernamesSearch.usernameAttribute}" />
 +        </bean>
 +      </constructor-arg>
 +    </bean>
 +
 +XMLの構造を慎重に確認しながら、constructor-arg要素を追加する。javaはよくわからないが、LDAPコネクションを作成する際のコンストラクタに適切なパラメータを渡すことで、検索のスコープを設定しているようだ。javaが理解できれば比較的容易に設定個所を特定できるのだろうが、かなり時間がかかった。一応、決め手のサイトは以下。
 +
 +  * [[http://wiki.pentaho.com/display/ServerDoc2x/LDAP+Troubleshooting+2.x-3.0.x?decorator=printable]]
pentaho/ldap.txt · 最終更新: 2017/06/02 20:22 by Wiki Editor

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki