UNIX® での ODBC データ・ソースの定義
外部アプリケーションから InterSystems データベースを ODBC データ・ソースとして使用することができます。この章では、UNIX® で InterSystems データベース用の DSN を作成する方法について説明します。これは、ODBC 初期化ファイルを編集することによって行います。
インターシステムズ・データベース用に DSN を作成するには、UNIX 向け Intersystems ODBC ドライバをインストールする必要があります。操作しているホストに InterSystems IRIS がインストールされている場合、このドライバは既にインストールされています。そうでない場合は、以下を実行します。
-
InterSystems IRIS ドライバのページOpens in a new tabから InterSystems ODBC ドライバをダウンロードします。
-
ドライバのインストール先のディレクトリ (例 : /usr/irisodbc) を作成し、ダウンロードした .tar ファイルをそのディレクトリでアンパックします。
-
ODBCinstall スクリプトを実行します。
ODBC 初期化ファイルの構造
ODBC 初期化ファイルの役割は以下のとおりです。
-
特定の接続に必要な ODBC クライアント・ドライバへのパスを含めて、情報を提供します。これによって、利用可能な DSN をドライバ・マネージャが確認して接続できます。
-
DSN を定義します (オプションで、それらのログイン資格情報も含まれます)。この情報は、ODBC クライアント・ドライバで使用されます。
以下は、InterSystems ODBC ドライバ用の初期化ファイルのサンプルです。
[ODBC Data Sources]
sampleodbc=sampleodbc
[sampleodbc]
Driver = /usr/irissys/bin/libirisodbc.so
Description = InterSystems IRIS ODBC driver
Host = localhost
Namespace = USER
UID = _SYSTEM
Password = SYS
Port = 51774
Protocol = TCP
Query Timeout = 1
Static Cursors = 0
Trace = off
TraceFile = iodbctrace.log
Authentication Method = 0
Security Level = 2
Service Principal Name = iris/localhost.domain.com
[Default]
Driver = /usr/irissys/bin/libirisodbc.so
このファイルには、以下の変数が含まれます。
-
ODBC Data Sources — このセクションには、ファイルで定義されているすべての DSN がリストされます。各エントリは DSNName=SectionHeading という形式で表します。DSNName はクライアント・アプリケーションが指定する名前で、SectionHeading はこのファイルの DSN 情報を表す見出しを指定します。
-
Driver — この DSN に使用するクライアント・ドライバ・ファイルの場所を指定します。この例では、libirisodbc.so ファイルです。
-
Description — DSN の説明を指定します (オプション)。
-
Host — DSN の IP アドレスを指定します。“127.0.0.1” のように、ドットで区切られた 10 進法の数字、あるいは 4 個の数字で表します。
-
Namespace — DSN のネームスペースを指定します。
-
UID — DSN にログインするためのユーザ名を指定します。既定では、これは _SYSTEM です (大文字と小文字は区別されません)。
-
Password — UID エントリにより指定されたアカウントのパスワードを指定します。既定のユーザ名 _SYSTEM の場合、パスワードは SYS です。UID と異なり、パスワードでは大文字と小文字が区別されます。
Note:ODBC 基準ではユーザ名とパスワードのクリア・テキストでの保存が許可されるため、サンプルの初期化ファイルには、サンプル DSN へのアクセスに必要なユーザ名とパスワードが含まれます。これは単なる例にすぎません。セキュリティで保護された ODBC プログラムでは、この情報の入力をユーザに要求するプロンプトが表示されるだけで保存はされません。この場合、入力された情報は初期化ファイル内に表示されません。
-
Port — DSN に接続するポートを指定します ("構成パラメータ・ファイル・リファレンス" の “DefaultPort” を参照)。
-
Protocol — DSN に接続するためのプロトコルを指定します。InterSystems の場合は、常に TCP です。
-
Query Timeout — 1 の場合は、ODBC クライアント・ドライバが ODBC クエリ・タイムアウトの設定値を無視します。
ODBC クエリ・タイムアウト設定は、特定の動作が完了するまでにクライアントが待機する時間を指定します。動作が指定時間内に完了しなかった場合、自動的にキャンセルされます。ODBC API には、このタイムアウト値をプログラムで設定する機能があります。ただし、一部の ODBC アプリケーションではこの値をハード・コーディングします。ご使用の ODBC アプリケーションでタイムアウト値を設定できず、そのタイムアウト値が小さすぎる場合、クエリ・タイムアウトを無効にするオプションにより、タイムアウト値を無効にできます。
-
Static Cursors — 1 の場合は、InterSystems ODBC クライアント・ドライバのスタティック・カーソル・サポートを有効にします。0 の場合は、ODBC カーソル・ライブラリのカーソル・サポートを使用します。通常、ODBC カーソル・ライブラリを使用しない特別な理由がない限り、このフラグはオフ (0) です。
-
Trace — ドライバ・マネージャでロギングを実行するかどうかを指定します。実行する場合は “オン”、実行しない場合は “オフ” を指定し、既定ではオフです (詳細は、“UNIX® の ODBC ログ” を参照)。
-
TraceFile — Trace エントリによりロギングが有効になっている場合、ドライバ・マネージャのログ・ファイルの場所を指定します。
-
Authentication Method — パスワード認証の場合は 0 を、Kerberos の場合は 1 を指定します。
-
Security Level — 認証に Kerberos を使用する場合に指定します。以下の値を指定できます。
-
1 = Kerberos
-
2 = Kerberos とパケット整合性
-
3 = Kerberos と暗号化
-
-
Service Principal Name — 認証に Kerberos を使用する場合に指定します。InterSystems を表すサービス・プリンシパルの名前を指定する必要があります。
Kerberos の詳細は、"Kerberos 認証" を参照してください。
odbcinst による DSN の設定
UNIX® の ODBC インストールには、プログラム odbcinst が含まれます。場所はインストールに依存しますが、例えば /usr/local/bin にある場合があります。
UNIX® インストールには、install-dir\dev\odbc\redist\unixodbc にテンプレート・ファイルが 2 つ含まれます。これらは、以下のとおりです。
-
odbc.ini_unixODBCtemplate — サンプル DSN エントリ・テンプレート
-
odbcinst.ini_unixODBCtemplate — インターシステムズ・ドライバ・テンプレート
これらのテンプレート・ファイルを構成に合うように編集します。これらを使用するには、以下の方法で odbcinst を呼び出すことができます。
-
ドライバを登録するには、フラグ -i -d -f と odbcinst.ini ファイルを指定します。以下に例を示します。
odbcinst -i -d -f odbcinst.ini_unixODBCtemplate
-
ローカル DSN を追加するには、フラグ -i -s -h -f と odbc.ini ファイルを指定します。以下に例を示します。
odbcinst -i -s -h -f odbc.ini_unixODBCtemplate
-
システム DSN を追加するには、フラグ -i -s -l -f と odbc.ini ファイルを指定します。以下に例を示します。
odbcinst -i -s -l -f odbc.ini_unixODBCtemplate
From: \dev\odbc\redist\unixodbc\odbcinst.ini_unixODBCtemplate
[InterSystems ODBC]
UsageCount=1
Driver=/home/iris/bin/libirisodbc.so
Setup=/home/iris/bin/libirisodbc.so
SQLLevel=1
FileUsage=0
DriverODBCVer=02.10
ConnectFunctions=YYN
APILevel=1
DEBUG=1
CPTimeout=<not pooled>
TLS 構成ファイルの設定
InterSystems IRIS では、TLS 構成用のテンプレート・ファイルが 2 つ提供されています。これらのファイルは install-dir\dev\odbc\redist\ssl にあります。このディレクトリには、詳細な情報が記載された readme.txt も含まれます。
-
irisodbc.ini.template — TLS 接続用に odbc.ini ファイルのエントリを構成する方法を示します。
-
odbcssl.ini.template — TLS 構成ファイルの例です。
これは、サンプルの odbc.ini ファイルで、TLS 接続を定義する [SampleSSL] というエントリが記述されています。機能するファイルは通常、install-dir/mgr/irisodbc.ini という名前です。
[ODBC Data Sources]
SamplesSSL = SampleTLS
[SampleTLS]
Driver = /home/guest/iris/bin/libirisodbc35.so
Description = IRIS ODBC driver
Host = localhost
Namespace = SAMPLES
UID = _SYSTEM
Password = SYS
Port = 51774
Protocol = TCP
Query Timeout = 1
Static Cursors = 0
Trace = off
TraceFile = iodbctrace.log
Service Principal Name = iris/localhost.domain.com
Authentication Method = 2
Security Level = 10
SSL Server Name = SampleSSLConfig
上の例では、最後の 3 行で TLS 接続が指定されています。以下のように値を定義する必要があります。
-
Authentication Method は 2 に設定する必要があります。
-
Security Level は 10 に設定する必要があります。
-
SSL Server Name は適切な名前の構成に設定する必要があります。この例では、SampleSSLConfig は、以下のサンプル・ファイル odbcssl.ini で定義されている SSL Server Name です。
これはサンプルの TLS 構成ファイルです。プロセスがこれらの値で TLS 接続を開始するには、以下を行う必要があります。
-
このファイルの名前 (<path>/odbcssl.ini) を環境変数 ISC_SSLconfigurations で指定する必要があります。
-
プロセスが、(前の例に示されているように) [SampleSSLConfig] を SSL Server Name として指定した DSN を使用している必要があります。
[SampleSSLConfig]
CAFile=./CA.cer
CertFile=./Client.cer
KeyFile=./Client.key
Password=MixOfAlphaNumericAndPuncChars!
KeyType=2
Protocols=28
CipherList=ALL:!aNULL:!eNULL:!EXP:!SSLv2
VerifyPeer=1
VerifyDepth=9
この例では、以下の値を定義します。
-
CAFile — サーバの証明書を検証するために使用する 1 つ以上の証明書が含まれるファイルを指定します。
-
CertFile — クライアントの証明書が含まれるファイルを指定します。
-
KeyFile — クライアントの秘密鍵ファイルが含まれるファイルを指定します。
-
Password — 該当する場合、クライアントの秘密鍵ファイルのパスワードです。
-
KeyType — クライアントが使用する秘密鍵のタイプを指定します。
-
1 — DSA
-
2 — RSA (既定)
-
-
Protocols — クライアントが実行できる TLS のバージョンを指定します。
-
1 — SSLv2
-
2 — SSLv3
-
4 — TLSv1.0
-
8 — TLSv1.1
-
16 — TLSv1.2
プロトコルの組み合わせは、個々の番号を加算することによって指定します。例えば、既定の設定は 28 (TLSv1 + TLSv1.1 + TLSv1.2) です。
-
-
CipherList — 有効な暗号スイートのリストを指定します。
-
VerifyPeer — 相手証明書認証レベルを指定します。
-
0 — なし (証明書の検証に失敗しても続行します。)
-
1 — 必要 (証明書の検証が成功する場合にのみ続行します。既定値です。)
-
-
VerifyDepth — 相手証明パスで許可された最大 CA 証明書数を指定します。
これらの値の詳細は、インターシステムズの "TLS ガイド" を参照してください。
初期化ファイルの名前と場所
初期化ファイルには任意の名前を使用できますが、一般に、ユーザ個人のディレクトリにある場合は .odbc.ini、ODBC 指定のディレクトリにある場合は odbc.ini と呼ばれます。InterSystems のサンプル・ファイルは irisodbc.ini と呼ばれ、install-dir/mgr ディレクトリに格納されています。
このファイルを見つけるため、InterSystems ODBC クライアント・ドライバは iODBC と同じ検索順を使用します。以下の順番どおりに、以下の場所を検索します。
-
ODBCINI 環境変数が定義されている場合、これに指定されているファイル。定義されている場合は、この変数は以下のようにパスとファイルを指定します。
ODBCINI=/usr/irissys/irisodbc.ini export ODBCINI
-
$HOME が定義されており .odbc.ini が存在する場合、ユーザの $HOME 変数に指定されたディレクトリの .odbc.ini ファイル。
-
$HOME が定義されていない場合、passwd ファイル内に指定された “home” ディレクトリの .odbc.ini ファイル。
-
システム全体に、SYSODBCINI 環境変数が定義されている場合、これに指定されているファイル。定義されている場合は、この変数は以下のようにパスとファイルを指定します。
SYSODBCINI=/usr/irissys/irisodbc.ini export SYSODBCINI
-
odbc.ini ファイルは、iODBC ドライバ・マネージャ (/etc/) を構築する既定のディレクトリにあるため、完全なパス、およびファイル名は /etc/odbc.ini です。
異なる odbc.ini ファイルを使用するには、InterSystems サンプル初期化ファイルを削除するか名前を変更して、ドライバ・マネージャが $HOME または /etc/odbc.ini のパスを検索できるようにします。例えば、install-dir/bin に移動して以下のコマンドを実行します。
mv libodbc.so libodbc.so.old
その後、ユーザ定義の odbc.ini をドライバ・マネージャが検索可能な etc/odbc に移動します。