レベル: 中級 Hatif Samgita, IM Technical Support No.3 (BI & PM),WebSphere & IM Technical Support,System Technical Service Center,Yamato Laboratory, IBM Software Group, IBM
2009年 9月 11日 IBM Cognos 8 BIでは、外部認証プロバイダを利用した認証サービスをおこないますが、そこにあらかじめ定義されたユーザーやグループを利用してロール・ベースの情報アクセスのフィルタリング設定が可能です。この記事では、SUSE Linuxで利用されるOpenLDAPを使用して、IBM Cognos 8 BI認証およびセキュリティーの設定を行う方法を紹介します。 この記事はCognos 8 BIを構築・管理するシステム管理者の方を対象読者と想定しています。OpenLDAPの基本設定やIBM Cognos 8 BIのインストールが既に行われている環境を前提として書かれています。
はじめに
IBM Cognos 8は、全社規模の利用環境でレポート作成、分析、スコアカード作成、イベント通知を可能にするビジネス・インテリジェンス製品です。IBM Cognos 8は、単一の最新Webサービス・アーキテクチャ上に構築されており、企業内の組織のあらゆるレベルからウェブ・ブラウザで簡単にアクセスし、レポートの作成や情報の分析を行うことができます。
ロール・ベース・ダッシュボードにより、レポートに表せる企業情報の範囲は、ユーザーの職種や役割に合わせることが可能です。また、ロール・ベースのセキュリティーにより、職種や役割に基づく情報アクセスのフィルタリングの設定も可能です。
IBM Cognos 8では現在稼動中の認証システムをそのまま利用可能です。IBM Cognos 8のセキュリティー・アーキテクチャーでは、認証サービスは外部認証プロバイダで行います。アクセス管理については認証プロバイダで定義されたユーザーやグループに基づいて、ネームスペースを作成し、このネームスペースを使用してIBM Cognos8内で設定を行うことができます。現在使用可能な外部認証プロバイダは以下のとおりです。
- NTLM
- Active Directory
- IBM Cognos Series 7
- CA SiteMinder
- SAP
- カスタムJAVAプロバイダ
- LDAP
Linux環境では、ローカル認証やNISのほか、認証プロバイダとしてOpenLDAPを利用することができます。OpenLDAPソフトウェアはLDAPのオープン・ソース・インプリメンテーションのひとつです。現在では、OpenLDAPはBSDをはじめWindows、LinuxおよびUNIX系のOSに対応しています。
IBM Cognos 8ではOpenLDAPをLDAP V3 に準拠するディレクトリサーバーのひとつとして利用することが可能です。
2. IBM Cognos 8のセキュリティー・アーキテクチャー
図1に表すように、IBM Cognos 8のアーキテクチャーは3層構造でのWeb サーバー、アプリケーション、データから構成されます。IBM Cognos 8 でのWeb 通信は通常1つ以上のWeb サーバーにあるゲートウェイを通じて行われます。ゲートウェイは、Web サーバーから他のサーバーに情報を転送するWeb サーバー・プログラムの拡張機能です。
IBM Cognos 8にセキュリティーを配置することで情報の漏洩および改ざんを防ぐことができます。セキュリティー設定にて、データのアクセスが可能なユーザーを制限したり、権限のないユーザーがデータを変更できないように制御します。
上記目的を得るためには、Cognos 8のセキュリティー・アーキテクチャーに以下のコンポーネントが存在します。
- 認証および承認
- Web 要求およびコンテンツの検証
- セッション管理
- トランスポート・セキュリティー
- トランザクションの暗号化
- ログ記録と監視
- 管理
図1. IBM Cognos 8 アーキテクチャー (アーキテクチャーと実装ガイド、第2 章:複数層のアーキテクチャー、P.11より)
3. SUSE LinuxのYaSTによるOpenLDAPの初期設定
SUSE Linuxでは、YaSTを使用してOpenLDAPの初期設定を行うことができます。OpenLDAPの初期設定を行うには、root権限があるアカウントが必要です。
1. rootアカウントでYaSTを起動して、「ネットワーク・サービス」 の 「LDAPサーバー」を選択します
図2. YaSTコントロールセンター
2. 「LDAPサーバーの起動」は、システムブート時にLDAPを開始するように設定します。LDAPサーバーに、自己のサービスをSLP経由でアナウンスさせる場合は、「SLPデーモンに登録」を選択します。
図3. LDAPサーバーの設定
3. 「グローバル設定」及び「データベース」を設定するには「設定」を選択します。「dc=cognos-test, dc=org」のように、ドメイン・コンポーネント(dc)をLDAPデータベースに登録します。
図4. グローバル設定
SUSE LinuxにおけるOpenLDAPの設定については「SUSE Linux Enterprise Server - Installation and Administration」をご参照下さい。
4. OpenLDAPにIBM Cognos 8のユーザーの追加
LDAPディレクトリー・ツリーの最上位階層は基本識別名と呼ばれます。国(c)、ドメイン・コンポーネント(dc)、又は組織(o)のうち、いずれかを基本識別名として利用します。組織単位(ou)はユーザーを管理するグループとして利用します。一般的には、本社・支社・支店といった大きな分類の下に、経理・営業・総務・開発などのOUが作成されます。このOpenLDAPで作成した組織単位要素を利用してIBM Cognos 8のセキュリティーの設定で職種や役割に基づく個別のセキュリティー設定を行います。
図5に表すように、今回の例では、LDAPで管理されるユーザーは「sales」と「support」2つのグループに分けられ、ユーザーのエントリはそれぞれの所属するグループの属性Organizational Unit(ou)を持っています。認証情報として、Common Name (cn)にユーザーIDが、userPasswordにそのユーザーのパスワードが記録されています。セールス部に属したユーザーとサポート部に属したユーザーそれぞれに対して、オブジェクト(パッケージ、フォルダ、レポート、レポート表示など)毎に異なるアクセス権限を設定することが可能です。
図5. OpenLDAPのディレクトリー構造
OpenLDAPのユーザー・ディレクトリーのアクセスを制限するには、「slapd.conf」で設定を行います。
以下の例では、ユーザー自身及びOpenLDAP管理者は、パスワード属性に書き込みが可能です。
また、匿名バインドから認証の要求も可能ですが、その他はパスワード属性へのアクセスは禁止されます。
コード1:「slapd.conf」の設定項目
...
access to dn.base=""
by * read
access to dn.base="cn=Subschema"
by * read
access to attrs=userPassword,userPKCS12
by self write
by dn="cn=Administrator,dc=cognos-test, dc=org" write
by anonymous auth
by * none
access to attrs=shadowLastChange
by self write
by * read
access to *
by * read
...
|
5. IBM Cognos ConfigurationでOpenLDAPを参照するネームスペースの作成
IBM Cognos 8 では、すべてのユーザーに適用される、認証に関するプロパティーのグループをネームスペースに定義します。OpenLDAPのユーザー・ディレクトリー上のユーザー情報をIBM Cognos 8の認証ソースとして使用するには、LDAPネームスペースを作成します。
IBM Cognos Configurationにて、以下の手順でOpenLDAPを参照するネームスペースを作成します。
1. IBM Cognos Configurationを開き、「Explorer」パネルの「ローカル設定」>「セキュリティー」>「Cognos」デフォルトネームスペースを選択。
2.匿名アクセスを拒否するために、「Cognos – ネームスペース – リソース プロパティー」の「匿名アクセスを許可」の値を「無効」にします。
図6. IBM Cognos Configurationのネームスペース - リソース プロパティー
3.「セキュリティー」の「認証」を右クリックし、「リソースの新規作成」の「ネームスペース」を選択します。
図7. IBM Cognos Configurationのリソースの新規作成
4.「リソースを新規作成 – ネームスペース」にて、ネームスペースの名義及びタイプを設定します。
図8. IBM Cognos Configurationのネームスペース新規作成
5.「ネームスペース – リソースプロパティー」にて、作成したネームスペースの設定を行います。
図9. IBM Cognos ConfigurationのLDAPネームスペース – リソースプロパティ
- ネームスペースID: OpenLDAP
分かりやすいネームスペースIDを使用します。
- ホスト名とポート番号: 192.168.0.100:389
OpenLDAPサーバーのIPアドレス及びポート番号です。
- 基本識別名: dc=cognos-test, dc=org
OpenLDAPで設定した基本識別名です。
- ユーザー検索: (cn=${userID})
OpenLDAPの「cn」を使用して、認証情報を取得します。
- ユーザーのDNとパスワードをバインドします:
- ユーザーID:Administrator
- パスワード:cognos1234
OpenLDAPの設定に基づいて、パスワード属性(userPassword)にアクセス権限を持つユーザーIDを使用します。
- バインド認証情報を検索に使用しますか:有効
このネームスペース設定で提供されるバインド認証情報がLDAPディレクトリーサーバーでの検索に使用されるように「有効」に設定します。
6.OpenLDAPネームスペースを右クリックし、テストを行います。
図10. OpenLDAPへの接続テスト
このテストは、IBM Cognos 8は、LDAPサーバーに問題なく接続ができるかどうかを確認します。LDAPサーバーへの接続に問題がある場合、以下のようなエラーが発生します。
図11. OpenLDAPへの接続が失敗の場合のエラーメッセージ
LDAPサーバーへの接続に問題が無い場合、以下のように表示されます。但し、このテストでは、認証が正しく行われるかどうかまでの確認はおこないません。LDAPネームスペースのプロパティーの値に誤りがないか注意して確認してください。
図12. OpenLDAPへの接続は成功の場合のメッセージ
6. OpenLDAPに関連したパラメータ
OpenLDAPに関連したパラメータについては、IBM Cognos Configurationの情報表示用ウィンドウに表示されるコンテキストヘルプが参考になります(図13)。LDAPに関係する設定項目のコンテキストヘルプの内容を以下に示しました。
図13. IBM Cognos Configurationのコンテキストヘルプ
LDAPに関係する設定項目(IBM Cognos Configurationコンテキストヘルプより)
ネームスペースID
認証ネームスペースの一意の ID を指定します。ネームスペース ID は、複数のネームスペースを区別するために使用できます。各ネームスペースには、一意の ID が必要です。実行時の環境で認証に使用するネームスペースを選択すると、製品によりこのID が使用されます。サービスの起動後は、ネームスペース ID を変更しないようにします。変更するとポリシー違反が発生したり、Cognos グループや役割のメンバーシップに支障が出たりする可能性があります。ネームスペースID には、コロン を使用しないでください。
ホスト名とポート番号
ディレクトリー・サーバーのホスト名とポート番号を指定します。<ホスト名>:<ポート番号> の構文を使用して、ディレクトリー・サーバーのホスト名とポートを指定します。たとえば'localhost:389'などです。コンピューターの完全修飾名を使用する場合は、DNSが完全修飾名を解決するように設定されていることを確認します。また、IP アドレスを使用することもできます。
基本識別名
LDAP サーバーの基本識別名を指定します。この製品では、基本 DN を使用して、ディレクトリー・サーバー構造の最上位レベルが識別されます。階層状のディレクトリー構造のルートは、すべての検索の開始地点となります。基本DN を指定することで、検索を制限できます。
ユーザー検索
LDAP ディレクトリー・サーバーへのバインドに使用するユーザー検索を指定します。このプロパティーでは、認証用の完全修飾 DN の作成に使用する文字列を指定します。この文字列のすべての '${userID}' は、ログオン・プロンプトでユーザーが入力した値に置き換えられます。文字列がカッコで始まらない場合は、置換の結果が認証に使用するDN とみなされます。 たとえば、'uid=${userID},ou=people, <基本 DN>' などです。<基本 DN> には基本識別名パラメーターの値がはいります。値の始めに左丸カッコ '(' がある場合、置換を行った結果が検索フィルタとなります。バインドを行う前に、プロバイダでフィルタを使用して認証用の DN が取得されます。たとえば、'(userPrincipalName=${userID})' などです。階層状のディレクトリー構造がある場合は、フィルターを使用してください。
外部IDを使用
外部ソースから提供されたユーザーIDを認証に使用するかどうか指定します。このプロパティーを有効にすると、ユーザーは外部ソースによって認証され、ユーザーIDが外部ソースからIBM Cognos 8に提供されます。例えば、SSLがクライアント認証を使用するように設定されている場合、Webサーバーで、REMOTE_USER環境変数がユーザーIDに設定されます。このプロパティーを有効と指定する場合「外部IDマッピング」プロパティーも必ず指定下さい。このプロパティーは、「シングル・サインオン」を設定する場合に使われます。
外部IDマッピング
LDAP ディレクトリー・サーバーでのユーザー検索に使用するマッピングを指定します。このプロパティーは “外部 ID を使用” が有効となっている場合にのみ使用されます。このマッピングは、LDAP ディレクトリー・サーバーでのユーザーの検索に使用する、DNまたは検索フィルターの作成時に使用されます。この文字列のすべての '${environment("ENVIRONMENT_VARIABLE_NAME")' は、Webサーバーから提供される環境変数の値に置き換えられます。文字列がカッコで始まらない場合は、置換の結果がユーザーの DN とみなされます。 たとえば、'uid=${environment("REMOTE_USER")},ou=people, <基本 DN>' などです。<基本 DN> には基本識別名パラメータの値がはいります。値の始めに左丸カッコ '(' がある場合、置換を行った結果が検索フィルターとなります。たとえば、'(userPrincipalName=${environment("REMOTE_USER")})' などです。LDAP ディレクトリ サーバーに匿名アクセスが可能であるか、または ‘ユーザーの DN とパスワードをバインド' プロパティーが設定されている必要があります。
ユーザーのDNとパスワードをバインドします
ユーザー検索プロパティを使用して検索を行う際、または外部 ID マッピングを使用して処理を行う際に、LDAP サーバーへのバインドに使用する認証情報を指定します。この値は、LDAP ディレクトリー・サーバーのユーザー用の枝に対する読み取りと検索のアクセス権を持つ LDAP ユーザーに対応します。
バインド認証情報を検索に使用しますか
バインド認証情報を検索に使用するかどうかを指定します。このプロパティーは外部 ID マッピングを使用した処理を行なわないユーザーにのみ影響します。このプロパティーを有効と指定すると、ネームスペース設定で提供されるバインド認証情報が LDAP ディレクトリ サーバーでの検索に使用されます。このフラグが無効であるか、バインド認証情報がない場合、認証済みユーザーの認証情報が検索に使用されます。
7. IBM Cognos 8からOpenLDAPネームスペースへのログオン
IBM Cognos 8のポータルのURLをアクセスすると、ログオン画面が表示されます。複数ネームスペースを使用する設定の場合は、ここでログオンするネームスペースを選ぶことが可能です。このログオン画面で、OpenLDAPに既に登録済みのユーザーID及びパスワードを入力して下さい。
図14. IBM Cognos 8のログオン画面
ログオンが正しく行われると、「ようこそ」ページ又は設定したデフォルトページが表示されます。
図15. IBM Cognos 8のログオンの「ようこそ」ページ
8. IBM Cognos 8セキュリティーにユーザー、グループ、及び役割の設定
インストール後のデフォルトのセキュリティー・ポリシーでは、すべてのユーザーが匿名のユーザーアカウントを使用して、Content Store内のあらゆるオブジェクトに無制限にアクセスすることが可能となっています。
セキュリティ制御を行うためには、IBM Cognos 8をインストール後、セキュリティーの初期設定を変更する必要があります。
変更する内容としては、今まで説明してきたIBM Cognos Configurationを使ったセキュリティプロバイダに対するネームスペースの作成とともに、「IBM Cognos Administration」のセキュリティー設定上でのユーザー、グループ及び役割の設定が必要となります。
図16. IBM Cognos Administratorのセキュリティー
デフォルトでは、「すべてのユーザー」はCognosネームスペースの「システム管理者」のメンバーとして登録されています。ここでは、まず作成したOpenLDAPに含まれるすべてのユーザーにシステム管理者の権限を与えます。セキュリティー設定を開始する際、「すべてのユーザー」を削除する前には必ず、「システム管理者」の役割に特定のユーザーを追加しておくことを忘れないでください。
そのあと必要に応じてCognosネームスペースのグループや役割を使用してユーザーのアクセス権限の設定を行います。
図17. システム管理者のメンバー
9. シングル・サインオン
IBM Cognos 8 は、シングル・サインオンに対応するように設定できます。この設定を行うと、IBM Cognos 8 または他のプログラムで構成される環境に一度サインオンしておけば、プログラムを切り替えるたびのサインオンが不要になります。シングル・サインオンの実装方法は、環境と認証プロバイダーの設定によって異なります。
OpenLDAPを使う環境でシングル・サインオンを設定するには、IBM Cognos Configurationにて、OpenLDAPのネームスペースのプロパティーに以下のように設定します。
- 外部IDを使用
「外部IDを使用」の値を「有効」に設定します。
- 外部IDマッピング
「IBM Cognos ゲートウェイ」のWebサーバーの設定による、環境変数「REMOTE_USER」を提供することが可能です。
Microsoft IISの場合、「REMOTE_USER」の値は「DOMAIN\USERNAME」となりますので、この場合、外部IDマッピングは以下のように設定します。
(cn=$replace(${environment("REMOTE_USER")},"DOMAIN\\","")})
10. 終わりに
IBM Cognos 8のセキュリティー・アーキテクチャーでは、情報を保護するため、セキュリティー設定を使ってデータのアクセスが可能なユーザーを制限し、権限のないユーザーがデータを変更または閲覧表示できないように制御可能です。
ロール・ベースのセキュリティー設定が可能なため、職種や役割に基づく個別の情報アクセスのフィルタリングを行うことができます。
ロール・ベースのセキュリティーの適用では、認証プロバイダ内の定義が利用できます。認証プロバイダのネームスペースを作成し、ネームスペース内のユーザーやグループに対して許可設定を行うことで、OpenLDAP中で定義したグループなどをそのまま参照できます。
参考文献
著者について  | 
|  | Hatif Samgita is recognized as an IT Professional with experiences on several International Organizations. His multi language ability helps him to work with multicultural teams. As a certified MIMEsweeper Engineer, he experienced on supporting content security software. He is also interested in open source technology.
Hatif Samgita currently works as a customer support analyst for the COGNOS BI product line. |
記事の評価
|