Empress 資料一覧

ODBCサーバセットアップ手順

2007/11/4更新

対応バージョン: 6.10

準備

導入に必要なもの

製品CD-ROM

導入OS

Tru64 UNIX 5.0A

サーバ起動パラメータの定義

サーバ側の起動ファイルには以下のパラメータの設定が必要になる(設定値はデフォルト値)。

 1. EMPODBC_NETINTERFACE = 0
 2. EMPODBC_SERVICENAME  = empodbc
 3. EMPODBC_SERVICEPORT  = 6322
 4. EMPODBC_LISTENQLEN   = 5
 5. EMPODBC_WORKINGDIR   = <接続ユーザの$HOME>
 6. EMPODBC_LOGFILE      = /tmp/.EmpODBC-unix/server.log
 7. EMPODBC_ACCOUNTFILE  = /tmp/.EmpODBC-unix/account
 8. EMPODBC_PASSWDFILE   = /etc/passwd
 9. EMPODBC_CLIENTNUMLIM = <サーバへの同時アクセス上限数>
10. EMPODBC_RCVBUFSIZE   = 52000
11. EMPODBC_SNDBUFSIZE   = 52000
12. EMPODBC_IDLETIMELIM  = 720
13. EMPODBC_BLOCKTIMELIM = 60

各パラメータの意味は以下のとおり。

1. EMPODBC_NETINTERFACE

このパラメータはサーバがゲートウェイとして動作している場合にどのネットワークインタフェースを使用するかをIPアドレスで指定する。

全てのインタフェースを使用する場合はデフォルトの0のままでよい。

この場合はempodbcコマンド出力結果の「Interface IP」には「*」が出力される。

2. EMPODBC_SERVICENAME

3. EMPODBC_SERVICEPORT

両パラメータのどちらかにODBCサーバが使用するポートのサービス名/ポート番号を指定する。

両方指定した場合は後から指定した設定が優先される。

但しEMPODBC_SERVICENAMEがシステム定義(/etc/services等)に見つからなかった場合はEMPODBC_SERVICEPORTが使用される。

もし両方の定義に設定値がなかったりEMPODBC_SERVICENAMEが無効な設定値であった場合は、まずデフォルト値であるサービス名empodbcがシステムから検索され、サービス名がシステム定義にない場合にはポート番号のデフォルト値である6322が使用される。

4. EMPODBC_LISTENQLEN

このパラメータはクライアントからの接続数の上限を指定する。

クライアントからの接続数が既にこの値に達している場合は新たな接続要求は拒否される。

5. EMPODBC_WORKINGDIR

このパラメータはパスワードファイルにホームディレクトリの指定がない場合に相対パス指定時の現在ディレクトリを設定する。

クライアントからのデータベース指定が相対パスであった場合、ログインユーザのホームディレクトリからの相対パスでデータベースが検索されるか、あるいはログインユーザにホームディレクトリの設定がない場合はODBCサーバ起動時の本項のパラメータに設定されたディレクトリからの相対パスでデータベースが検索される。

6. EMPODBC_LOGFILE

サーバが出力するログファイルを指定する。

デフォルトの設定を使用した場合、ファイルはパイプとして使用され、サーバが終了すると消去される。

さらにパイプはサイズが制限される(サイズはシステムによって異なる)。

ログファイルを通常のファイルとして扱いたい場合はデフォルト設定以外のファイルを指定する。

この場合はサーバが終了してもファイルは削除されない。

7. EMPODBC_ACCOUNTFILE

このパラメータは現在使用されていない。

8. EMPODBC_PASSWDFILE

このパラメータは必ず設定しなければならない。

システムで用意されている/etc/passwdファイルを使用することもできるがshadowファイルなどによりパスワードが別ファイルに格納されている場合は/etc/passwdファイルが使用できない場合がある。

また、/etc/passwdにはODBC接続とは関係ないユーザの情報も格納されているので別途専用のパスワードファイルを用意することを推奨する。

専用のパスワードファイルを使用する場合、まず「empoadm adduser <パスワードファイル>」コマンドを使用してパスワードファイルを作成し、本パラメータでその絶対パスを指定する。

ところでODBC接続時に使用するパスワードファイルをUNIXデフォルトではなくEmpress側で作成して利用する目的はもう一つある。

/etc/passwdを使用する場合、UNIXサーバに対しODBC接続の為に新たなユーザを登録するか、あるいは登録されているユーザで接続しなければならない。

Empress ODBCサーバで使用するパスワードファイルをEmpressで作成したものにすることによって接続ユーザをUNIXに対しては架空ユーザ(実在しないユーザ)でアクセスする事が可能になる。

詳しくは後述の「ODBCにおけるセキュリティ」の項を参照のこと。

9. EMPODBC_CLIENTNUMLIM

このパラメータはサーバへ同時に接続するクライアント数の上限を指定する。

デフォルト値はEmpressのライセンス数で、ライセンス数以上、あるいは1未満の設定は無視される。

10. EMPODBC_RCVBUFSIZE

このパラメータは接続時の受信バッファサイズを指定する。

設定可能な値は4096〜52000(バイト)。

11. EMPODBC_SNDBUFSIZE

このパラメータは接続時の送信バッファサイズを指定する。

設定可能な値は4096〜52000(バイト)。

12. EMPODBC_IDLETIMELIM

このパラメータはクライアントからサーバに対して何もアクションが無い場合の待ち時間の長さを指定する。

その時間が過ぎてクライアントからのアクションが無い場合にはサーバのセッションは強制的にクローズされ、セッションに対応するサーバプロセスは終了する。

このような状態になった場合、クライアントはアプリケーションを一度終了して再起動(クライアントとしてセッションを終了して再度セッションを開始)しなければならない。

待ち時間を無限にする為には設定値をInfにすれば良いが、クライアントが電源断あるいはハングアップなどで異常終了した場合はその検知ができず、セッション中のサーバはデータベースに対してアクセス中の状態のままシステムリミット(7200秒 = 2時間)がくるまでシステムに常駐する事になるので注意が必要である。

13. EMPODBC_BLOCKTIMELIM

このパラメータはサービスセッションが内部の送受信状態をどの程度の間ブロックできるかを指定する。

この値は無制限にはできない。

尚、この値の変更には細心の注意が必要であり、ベンダのサポートなしでは変更しないほうがよい。

サーバコンフィグレーションファイルの指定

環境変数MSODBCSRVCFGFILEにサーバコンフィグレーションファイルの絶対パスを設定する。

例)

export MSODBCSRVCFGFILE=/usr/users/ms32/ODBC/odbc.conf

ODBC経由でアクセスするユーザの登録(パスワードファイルの作成)

empoadmコマンドでユーザを登録する。

% empoadm adduser <専用パスワードファイル>

作成ユーザの仕様を以下に示す。

登録ユーザはシステム(OS)上で登録されていてもいなくても構わない。

但し、システム運用におけるユーザ管理を考えればシステム上と同一にしておくほうが管理の煩雑さがなくなる利点はある。

ただ、外部からのログインを許してしまう可能性のある入り口を増やしてしまう欠点もあり検討が必要である。

登録ユーザのパスワードは登録ユーザ名がシステムのユーザ名と同一の場合でもシステムと同一のパスワードである必要はない。

ここで設定されるパスワードはODBC接続の為にだけ利用される。

ホームディレクトリの設定はシステム設定(/etc/passwd)と同一にする必要はない。

もし設定がある場合、前述のとおり相対パス指定時の現在ディレクトリがここで定義するホームディレクトリになる。

また、ホームディレクトリの設定がない場合はODBCサーバの設定ファイルのWORKINGDIRで指定したディレクトリがカレントディレクトリになる。

サーバ起動

上記の設定がすべて済んだらempodbcコマンドでサーバの起動が可能になる。

サーバの起動ユーザがデータベースへの実アクセスユーザになるので、後述の「ODBCにおけるセキュリティ」の項を参照して起動ユーザの検討、およびデータベースへの特権付与を設計しておく必要がある。

# empodbc

ODBCにおけるセキュリティ

UNIXシステム上でEmpressデータベースをアクセスする際のセキュリティについてはここでは説明しない。

本項ではUNIX上でのセキュリティ、Empress管理上でのセキュリティに関しての知識があるものとして説明する。

ODBC接続を使用し、クライアントからサーバにあるデータベースにアクセスする時はUNIX上での実行ユーザはODBCサーバを起動したユーザになる。

従って、アクセスする種別(参照か更新か)によりデータベースのファイルにODBC起動ユーザに対するUNIXファイルシステム上のアクセス権がなければならない。

逆に変更禁止でODBC接続を実現させる場合、UNIX上での権限を落としておくことにより書き込みに関するプロテクトが強化されることになる。

データベースに対するEmpress管理上のセキュリティは他のインタフェース(例えば対話型SQL)と同様のセキュリティがログインされるユーザ名によって保たれる。

つまりCREATOR、DBA、PUBLIC、ユーザ名に対してアクセス権限がそれぞれ限定(設定)できる(これらの権限に関してはgrantコマンドを参照されたい)。

補足

ODBCサーバの起動ユーザをrootにした場合、データベースの各ファイルに対してUNIX上のアクセス権の保護は皆無に等しい事になる。

UNIX上におけるセキュリティはなくなり、Empress管理上のセキュリティのみになる。

従って、ODBCサーバ立ち上げユーザはroot以外のユーザである方が好ましいことになる。

例として、データベースのファイルにリードオンリーのファイルアクセス権を付与している場合を考える。

この場合、一般ユーザであれば書き込み権が無い場合はファイルアクセス時にエラーになり更新系の処理は一切できない。

しかしrootがアクセスした場合、例えリードオンリーの権限が付与されていたとしてもそれら権限を一切無視して書き込みが行われてしまう。