ODBC ドライバ ここでは SLAPD-SQL の設定で ODBC ドライバとして unixodbc を利用する例を示す unixodbc は にあり Linux でも使える ここでは unixodbc ドライバがインストールされていることを前提に

Similar documents
WindowsでLDAP運用のこつ

OpenLDAPの最新動向

LDAP サーバと統合するための ISE の設定

HDE Controller X 1-9. LDAP

SLAMD導入手順

Microsoft Word - SQLServer_fra_Linux_v1.1.docx

VB実用Ⅲ⑩ フリーデータベースⅡ

連絡先

PostgreSQL Plus 管理者ガイド

Fedora Directory Server / Sun Java System Directory Server

LDAP - LDAP OpenLDAP - postfix qpopper - LDAP heartbeat mon

HeartCoreインストールマニュアル

CLUSTERPRO for Linux PostgreSQL HowTo

データベースアクセス

PowerPoint Presentation

RADIUS サーバを使用して NT のパスワード期限切れ機能をサポートするための Cisco VPN 3000 シリーズ コンセントレータの設定

1. 検証概要 目的及びテスト方法 1.1 検証概要 PostgreSQL はカルフォニア大学バークレー校で開発された POSTGRES, Version 4.2 をベースにしたオープンソースのリレーショナルデータベース管理システムです PostgreSQL はオープンソースでありながら 商用リレー

OSSTechプレゼンテーション

PowerPoint Presentation

MxLogonサーバサイドツールキット用UI

任意の間隔での FTP 画像送信イベントの設定方法 はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダにおいて任意の間隔で画像を FTP サー バーへ送信するイベントの設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページ

Sendmail AD連携モジュールキャンペーン

メール全文検索アプリケーション Sylph-Searcher のご紹介 SRA OSS, Inc. 日本支社技術部チーフエンジニア Sylpheed 開発者 山本博之 Copyright 2007 SRA OSS, Inc. Japan All right

OSSTech_JICS2017セッション資料

今さら聞けない!? Oracle入門 ~前編~

KDDI ホスティングサービス G120 KDDI ホスティングサービス G200 WordPress インストールガイド ( ご参考資料 ) rev.1.2 KDDI 株式会社 1

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

Samba/LDAPによる既存複数Windowsドメインの統合とその方式比較

VPN 接続の設定

Attain3 インストール説明書

Microsoft PowerPoint - 第5章補足-DB2組み込みSQL.ppt

別紙 : 検証環境の構築手順 ( 章 ) 1. サーバ設定 1.1 IP アドレス設定 サーバは以下の 6 台を用いる pgpool-ii サーバ 2 台 DB サーバ 3 台 上位サーバ 1 台 OS は全サーバで CentOS 6.4 x86_64 とする pgpool-ii のサー

目次 はじめに フリープラグインリスト マイグレーションツール Cobalt Migration Utility Web サーバーの帯域制御プラグイン データベースプラグイン

Oracle Universal Content Management ドキュメント管理 クイック・スタート・チュ-トリアル

Microsoft Word - CBESNet-It連携ガイドver8.1.doc

OSSTechドキュメント

intra-mart Accel Platform

Cuoreテンプレート

HeartCoreインストールマニュアル(PHP版)

Microsoft Word - CBSNet-It連携ガイドver8.2.doc

ADempiere (3.5)

— intra-mart Accel Platform セットアップガイド (WebSphere編)   第7版  

HeartCore(PHP 版 ) インストール手順について説明いたします なお 本資料は 例として下記内容を前提として説明しております 環境情報 対象 OS: Linux ( ディストリビューション : Red Hat Enterprise Linux Server) APサーバ : Apache

Upload path ファイル送信先ディレクトリのパスを指定します ホームディレクトリに画像を送信する場合は空白のまま サブディレクトリに画像を送信する場合はディレクトリ名を指定します さらに下位のディレクトリを指定する場合は \ マークを利用します 例 ) ホームディレクトリ以下の camera

スライド 1

mySQLの利用

PostgreSQLのセキュリティを極める

目次 1. 動作環境チェック 動作必要環境 Java のインストール Java のインストール Firebird のインストール Firebird のインストール Adobe Reader のインストール

Microsoft Word - tutorial3-dbreverse.docx

WEBシステムのセキュリティ技術

POSTGRESQL 9.2 /POSTGIS (WINDOWS 版 ) 導入 設定手順書 (VER. 1) June 20, 2014

Microsoft Word - XOOPS インストールマニュアルv12.doc

NAC(CCA): ACS 5.x 以降を使用した Clean Access Manager での認証の設定

Microsoft PowerPoint - db03-5.ppt

OpenAM 9.5 インストールガイド オープンソース ソリューション テクノロジ ( 株 ) 更新日 : 2013 年 7 月 19 日 リビジョン : 1.8

IBM Bluemix で WordPress 無料の WordPress 環境を構築する 1

内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft

アプリケーションサーバ JBoss超入門

Sharing the Development Database

PowerPoint プレゼンテーション


DrSumEA_ServerC_本文.indd

はじめに 本書は GridDB ODBC ドライバを利用して GridDB Advanced Edition のデータベースにアクセスするア プリケーション開発者を対象としています 本書を読むためには 以下の知識が必要になります GridDB Advanced Edition についての基礎知識 W

SOLIDWORKS Electrical SQL 接続の可否確認 SQL サーバーにアクセスできない場合 SQL サーバー ( のサービス ) が正常に起動しているか プロトコルが正常に動作しているか 使用するポートが開放されているか SQL ログインユーザーの情報に誤りは無いかなど その原因は多

薬剤在庫管理ソフト - インストール・バージョンアップ手順書

OSSTechドキュメント

システムパッケージリリース情報-Version5.0.0pre

R76/Gaia ブリッジ構成設定ガイド

Net'Attest EPS設定例

LEAP を使用して Cisco ワイヤレス クライアントを認証するための Funk RADIUS の設定

Office365 AL-Mail

Transcription:

OpenLDAP データの SQL 格納 OpenLDAP は デフォルトではデータをバークレー DB ファイルに格納するが データを SQL データベースに格納することができるが SQL データベースを使うためには OpenLDAP のデータの格納先に sql を指定して ODBC 経由でデータベースサーバにアクセスする必要がある ここでは ODBC ドライバを設定して OpenLDAP のデータを PostgreSQL に格納する方法を簡単なサンプルとともに紹介する OpenLDAP のサービスを提供するプログラムは slapd で その SQL インターフェースということで OpenLDAP で SQL データベースにデータを格納するための設定は SLAPD-SQL とも呼ばれる まず 最初にこの SLAPD-SQL の OpenLDAP のサーバーの設定について説明し 次に PostgreSQL データベースサーバに接続するための設定について説明する SLAPD-SQL では ODBC ドライバを介してデータベースサーバに接続する 具体的な設定例の説明にあたっては OpenLDAP の配布に含まれるサンプルを利用する SLAPD-SQL OpenLDAP の設定は slapd.conf に行う SQL データベースに格納するためには "database sql " を指定する この設定は 俗に SLAPD-SQL と記述され オンラインマニュアルも存在する ( たとえば http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=man&fname=/usr/share/catman/p_man/cat5/openldap/slapd-sql.z ) SLAPD-SQL で使う際の slapd.conf 内のデータベース定義部分の設定例を次に示す ####################################################################### # sql database definitions ####################################################################### database sql suffix "dc=example,dc=com" rootdn "cn=root,dc=example,dc=com" rootpw secret dbname PgLDAP dbuser ldap dbpasswd pass insentry_query "insert into ldap_entries (id,dn,oc_map_id,parent,keyval) \ values ((select max(id)+1 from ldap_entries),?,?,?,?)" upper_func "upper" strcast_func "text" concat_pattern "??" has_ldapinfo_dn_ru no lastmod off 上記の設定の主な意味を説明する "dbname PgLDAP" は ODBC ドライバのエントリー を示す "dbuser ldap" と "dbpasswd pass" はデータベースにアクセスするための ユーザ名とパスワードを指定する

ODBC ドライバ ここでは SLAPD-SQL の設定で ODBC ドライバとして unixodbc を利用する例を示す unixodbc は http://www.unixodbc.org/ にあり Linux でも使える ここでは unixodbc ドライバがインストールされていることを前提に説明を行う unixodbc ドライバの設定は ドライバマネージャの設定を odbcinst.ini ファイルに ドライバの設定を [.]odbc.ini ファイルに行う ([.] が付くのは Linux の各ユーザ毎にホームディレクトリに設定ファイルを設置する場合 ) 1. odbcinst.ini ODBC ドライバマネージャの設定は unixodbc のデフォルトでは /usr/etc/odbcinst.ini に行う このファイルでは ODBC ドライバ名とそのライブラリを定義する たとえば 次のように記述する [PostgreSQL] Description = PostgreSQL driver for Linux & Win32 Driver = /usr/lib/libodbcpsql.so Setup = /usr/lib/libodbcpsqls.so FileUsage = 1 UsageCount = 1 あるいは 上記内容のテンプレートファイルに作成しておけば 次のように odbcinst コマンドでシステム共通の所定の場所に設置することができる # odbcinst -i -d -f odbcinst.ini.template ( デフォルトの unixodbc では /usr/etc/odbcinst.ini) 上記のドライバマネージャの設定例では エントリのドライバ名は "PostgreSQL" になっている このエントリーが指定された際に "Driver = /usr/lib/libodbcpsql.so" に指定さ れたランタイムライブラリを参照するようになる 2. [.]odbc.ini ODBC ドライバエントリーの記述例として ここでは PostgreSQL ODBC ドライバを設定する例を示す [PgLDAP] Description = PostgreSQL LDAP DBC Driver = PostgreSQL Trace = Yes TraceFile = odbc-pgldap.log Database = pg_ldap Servername = localhost Username = ldap Password = pass Port = 5432 Protocol = 7.2.3 ReadOnly = No RowVersioning = No ShowSystemTables = No

ShowOidColumn = No FakeOidIndex = No ConnSettings = あるいは 上記内容のテンプレートファイルに作成して 次のように odbcinst コマンドで所定の場所に設置することができる $ odbcinst -i -s -f _odbc.ini.template ( デフォルトは $HOME/.odbc.ini) このドライバの設定ファイルでは エントリ名は "PgLDAP" で これが先に例示した slapd.conf の中では "dbname" に指定されている "Driver = PostgreSQL" で実際の ODBC ドライバのエントリを指定している 3. アクセステスト unixodbc に含まれる isql コマンドは unixodbc ドライバのコマンド行インターフェースプログラムで 指定したドライバエントリへの接続を行ない SQL 命令を発行できる この isql プログラムを使って簡単にデータベースへの接続テストが行える $ isql PgLDAP +---------------------------------------+ Connected! sql-statement help [tablename] quit +---------------------------------------+ SQL> quit $ 4.psqlodbc ドライバ ODBC ドライバとして PostgreSQL の最新の psqlodbc ドライバを利用する場合は http://www.postgresql.org/ftp/odbc/versions/src/ からダウンロードしてインストールを行う psqlodbc をインストールすることで UNICODE 対応の PostgreSQL 用 ODBC ドライバをインストールすることが可能である この psqlodbc の UNICODE 対応ドライバのファイル名は psqlodbcw.so で 次のように odbcinst.ini の "Driver" 行に指定する Driver = /opt/pgsql/lib/psqlodbcw.so

slapd-sql テストデータベースの作成 ここでは OpenLDAP の配布に含まれる slapd-sql のサンプルデータベースのテーブルを作成する手順を説明する テーブルの作成にあたり まず データベースとユーザを作成し 次に LDAP のための SQL バックエンドを作成する そして メタデータを作成し テストデータを登録する テーブルに slapd からのアクセス権を付与する 1. データベースとユーザを作成 PostgreSQL に slapd からアクセスするためのユーザを作成し データベースを作成する $ createuser --no-createdb --no-adduser --password ldap ( プロンプトに従ってパスワードを入力 ) $ createdb -O ldap -E UTF-8 pg_ldap 2. LDAP のための SQL バックエンドを作成 OpenLDAP の SQL バックエンドとして稼働させるために データベース構造と情報の登録が必要である OpenLDAP の配布に (openldap-2.3.x/servers/slapd/backsql/rdbms_depend/pgsql/ ディレクトリ ) 雛型が含まれているので それを使って作成する $ psql -U ldap pg_ldap < backsql_create.sql ここで登録したテーブルは OpenLDAP のオブジェクト間のすべてのリンクを維持するために使われる これが LDAP メタ構造 (meta-structure) である 3. テスト用のデータベーススキーマの作成 テスト用の LDAP オブジェクトを再現するテーブルのためのスキーマを作成する $ psql -U ldap -d pg_ldap < testdb_create.sql ここで作成したテーブルはテスト用の LDAP ディレクトリオブジェクトと属性 (attributes) をつくるために使われる 4. メタデータの作成 ここでは SQL バックエンドと格納されたオブジェクトの間のリンクをテストデータベースに生成する これらのメタ情報は LDAP クエリを SQL クエリに変換するために使われる また SQL バックエンドと格納されたオブジェクトの間のリンクを生成したり 全属性値を格納したりするために使われるメタデータの定義と SQL 関数のすべてをテストデータベースに生成する $ psql -U ldap -d pg_ldap < testdb_metadata.sql

5. テストのためのデータを挿入 ここで テスト用のデータをデータベースに挿入する $ psql -U ldap -d pg_ldap < testdb_data.sql 6. データベースオブジェクトのアクセス権付与 データベースのオーナーがアクセスするユーザと異なる場合は データベースへのアクセス権を与える必要がある $ psql -U ldap -d pg_ldap -c \ "GRANT ALL ON ldap_attr_mappings, ldap_entries, ldap_entry_objclasses, ldap_oc_mappings, ldap_referrals TO ldap;" $ psql -U ldap -d pg_ldap -c \ "GRANT ALL ON ldap_attr_mappings_id_seq, ldap_entries_id_seq, ldap_oc_mappings_id_seq TO ldap;" $ psql -U ldap -d pg_ldap -c \ "GRANT ALL ON authors_docs, documents, institutes, persons, phones TO ldap;" $ psql -U ldap -d pg_ldap -c \ "GRANT ALL ON TO ldap;" documents_id_seq, institutes_id_seq, persons_id_seq, phones_id_seq

SLAPD-SQL の実行とテストここでは 設定の終了した spapd を実行し LDAP クライアントあるいは LDAP ブラウザからアクセスをして LDAP サーバの動作を確認する OpenLDAP サーバの起動は slapd を実行する # /usr/libexec/slapd テストではデバグを出力させながら実行させるために -d オプションを指定する # /usr/libexec/slapd -d 5 OpenLDAP の slapd にアクセスするクライアントプログラムには ldapsearch, ldapadd, ldapmodify, ldapdelete などがある これらのコマンドを使って SLAPD-SQL で実際にサービスが提供されているテストを行う 1. 検索テスト ldapsearch コマンドで (objectclass=*) を指定して すべてのオブジェクトを検索する $ ldapsearch -x -b "dc=example,dc=com" "(objectclass=*)" # extended LDIF # # LDAPv3 # base with scope subtree # filter: (objectclass=*) # requesting: ALL # # book1, example.com dn: documenttitle=book1,dc=example,dc=com objectclass: document description: abstract1 documenttitle: book1 documentauthor: cn=mitya Kovalev,dc=example,dc=com documentauthor: cn=torvlobnor Puzdoy,dc=example,dc=com documentidentifier: document 1 # book2, example.com dn: documenttitle=book2,dc=example,dc=com objectclass: document description: abstract2 documenttitle: book2 documentauthor: cn=mitya Kovalev,dc=example,dc=com documentidentifier: document 2 # search reference ref: ldap://localhost:9012/dc=example,dc=com??sub # example.com dn: dc=example,dc=com objectclass: organization

objectclass: dcobject o: Example dc: example # Mitya Kovalev, example.com dn: cn=mitya Kovalev,dc=example,dc=com objectclass: inetorgperson cn: Mitya Kovalev sn: Kovalev seealso: documenttitle=book1,dc=example,dc=com seealso: documenttitle=book2,dc=example,dc=com givenname: Mitya userpassword:: bwl0 telephonenumber: 222-3234 telephonenumber: 332-2334 # Torvlobnor Puzdoy, example.com dn: cn=torvlobnor Puzdoy,dc=example,dc=com objectclass: inetorgperson cn: Torvlobnor Puzdoy sn: Puzdoy seealso: documenttitle=book1,dc=example,dc=com givenname: Torvlobnor telephonenumber: 545-4563 # Akakiy Zinberstein, example.com dn: cn=akakiy Zinberstein,dc=example,dc=com objectclass: inetorgperson cn: Akakiy Zinberstein sn: Zinberstein givenname: Akakiy # search result search: 2 result: 0 Success # numresponses: 8 # numentries: 6 # numreferences: 1 2. エントリの作成 ldapadd コマンドを使ってエントリの追加をする 追加するエントリは newentry.ldif ファイルに定義してある newentry.ldif の内容は次のとおり # begin objectclass: inetorgperson sn: First Test_Add_Entry user cn: User Test_Add_Entry # end このファイルを指定し ldapadd を実行する $ ldapadd -x -D "cn=root,dc=example,dc=com" -w secret -f newentry.ldif adding new entry "cn=user Test_Add_Entry,dc=example,dc=com"

追加したエントリを検索する $ ldapsearch -x -b "dc=example,dc=com" \ "(&(objectclass=inetorgperson) (cn=user*))" # extended LDIF # # LDAPv3 # base with scope subtree # filter: (&(objectclass=inetorgperson) (cn=user*)) # requesting: ALL # # User Test_Add_Entry, example.com objectclass: inetorgperson cn: User Test_Add_Entry sn: Test_Add_Entry givenname: User # search result search: 2 result: 0 Success 3. エントリ属性の設定 ldapmodify コマンドを使ってエントリ属性を設定する 属性設定をするエントリは setattrib.ldif ファイルに定義してある setattrib.ldif の内容は次のとおり # begin changetype: modify replace: sn sn: Test_Add_Entry user changetype: modify add: telephonenumber telephonenumber: 123-4567 telephonenumber: 765-4321 # end このファイルを指定し ldapmodify を実行する $ ldapmodify -x -D "cn=root,dc=example,dc=com" -w secret -f setattrib.ldif modifying entry "cn=user Test_Add_Entry,dc=example,dc=com" ldap_modify: Naming violation (64) additional info: value of naming attribute 'cn' is not present in entry 4. エントリ属性の削除 ldapmodify コマンドを使ってエントリ属性を削除する 属性の削除をするエントリは

deleteattrib.ldif ファイルに定義してある deleteattrib.ldif の内容は次のとおり # begin changetype: modify delete: telephonenumber telephonenumber: 332-2334 # end このファイルを指定して ldapmodify を実行する $ ldapmodify -x -D "cn=root,dc=example,dc=com" -w secret \ -f deleteattr.ldif modifying entry "cn=user Test_Add_Entry,dc=example,dc=com" 5. エントリの削除 ldapadd コマンドを使ってエントリを削除する 追加するエントリは delentry.ldif ファイルに定義してある delentry.ldif の内容は次のとおり # begin changetype: delete # end $ ldapadd -x -D "cn=root,dc=example,dc=com" -w secret -f delentry.ldif deleting entry "cn=user Test_Add_Entry,dc=example,dc=com"

参考文献 http://www.samse.fr/gpl/ldap_pg/howto/