ODBC データ・ソースとしての InterSystems データベースの使用法 (UNIX®)
外部アプリケーションから InterSystems データベースを ODBC データ・ソースとして使用することができます。この章では、UNIX® で InterSystems データベース用の DSN を作成する方法について説明します。これは、ODBC 初期化ファイルを編集することによって行います。
ODBC 初期化ファイルの構造
ODBC 初期化ファイルの役割は以下のとおりです。
-
特定の接続に必要な ODBC クライアント・ドライバへのパスを含めた情報を提供し、ドライバ・マネージャが利用可能な DSN の位置を確認して接続します。
-
DSN を定義します (オプションで、それらのログイン資格情報も含まれます)。この情報は、ODBC クライアント・ドライバで使用されます。
以下は、InterSystems ODBC ドライバ用の初期化ファイルのサンプルです。
[ODBC Data Sources]
sampleodbc=sampleodbc
[sampleodbc]
Driver = /usr/cachesys/bin/libcacheodbc.so
Description = Cache ODBC driver
Host = localhost
Namespace = SAMPLES
UID = _SYSTEM
Password = SYS
Port = 1972
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/cachesys/bin/libcacheodbc.so
このファイルには、以下の変数が含まれます。
-
ODBC Data Sources — ファイルに対するすべての DSN をリストします。各エントリは “DSNName=SectionHeading” という形式で表します。DSNName はクライアント・アプリケーションが指定する名前で、SectionHeading はこのファイルの DSN 情報を表す見出しを指定します。
-
Driver — この DSN に使用するクライアント・ドライバ・ファイルの場所を指定します。この例では、libcacheodbc.so ファイルです。
-
Description — DSN の説明を指定します (オプション)。
-
Host — DSN の IP アドレスを指定します。“127.0.0.1” のように、ドットで区切られた 10 進法の数字、あるいは 4 個の数字で表します。
-
Namespace — DSN のネームスペースを指定します。
-
UID — DSN にログインするためのユーザ名を指定します。既定では、これは “_SYSTEM” であり、大文字と小文字が区別されません。
-
Password — UID エントリにより指定されたアカウントのパスワードを指定します。SYSTEM のユーザ名に対するパスワードは “SYS” で、大文字と小文字が区別されます。
Note:ODBC 基準ではユーザ名とパスワードのクリア・テキストでの保存が許可されるため、サンプルの初期化ファイルには、サンプル DSN へのアクセスに必要なユーザ名とパスワードが含まれます。これは単なる例にすぎません。セキュリティで保護された ODBC プログラムでは、この情報の入力をユーザに要求するプロンプトが表示されるだけで保存はされません。この場合、入力された情報は初期化ファイル内に表示されません。
-
Port — DSN に接続するポートを指定します。InterSystems の既定値は 1972 です。
-
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 の詳細は、"セキュリティ管理ガイド" を参照してください。
odbcinst を使用した DSN の設定
UNIX® ODBC のインストールでは、odbcinst プログラムがインストールされます。場所はインストールに依存しますが、例えば /usr/local/bin の下に置かれます。
IRIS\dev\odbc\redist\unixodbc にある UNIX® インストールには、2 つのテンプレート・ファイルが含まれています。これらは、以下のとおりです。
-
odbc.ini_unixODBCtemplate — DSN エントリ・テンプレートのサンプル
-
odbcinst.ini_unixODBCtemplate — Intersystemsドライバ・テンプレート
構成に合わせてテンプレート・ファイルを編集します。これらを使用するには、次の方法で 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
呼び出し元:\iris\2018.2.x\dist\dev\odbc\redist\unixodbc\odbcinst.ini_unixODBCtemplate
[InterSystems ODBC]
UsageCount=1
Driver=/home/cache/bin/libirisodbc.so //or libcacheodbc.so
Setup=/home/cache/bin/libirisodbc.so //or libcacheodbc.so
SQLLevel=1
FileUsage=0
DriverODBCVer=02.10
ConnectFunctions=YYN
APILevel=1
DEBUG=1
CPTimeout=<not pooled>
SSL 構成ファイルの設定
InterSystems IRIS には、SSL 構成用の 2 つのテンプレート・ファイルが用意されています。これらのファイルは <Dir>\IRIS\dev\odbc\redist\ssl にあります。このディレクトリには、詳細情報が記載された readme.txt ファイルも含まれています。
-
irisodbc.ini.template — SSL 接続で使用するために odbc.ini ファイル・エントリを構成する方法を示しています。
-
odbcssl.ini.template — SSL 構成ファイルの例です。
これは、SSL 接続を定義する [SampleSSL] という名前のエントリを含むサンプル odbc.ini ファイルです。作業ファイルの名前は <irisinstalldir>/mgr/irisodbc.ini となります。
[ODBC Data Sources]
SamplesSSL = SampleSSL
[SampleSSL]
Driver = /home/guest/iris/bin/libirisodbc35.so
Description = IRIS ODBC driver
Host = localhost
Namespace = SAMPLES
UID = _SYSTEM
Password = SYS
Port = 1972
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 行が SSL 接続を指定しています。これらの値は、次のように定義する必要があります。
-
Authentication Method は 2 に設定します。
-
Security Level は 10 に設定します。
-
SSL Server Name は適切な名前付き構成に設定します。
この例で、SampleSSLConfig は、次のサンプル・ファイル、odbcssl.ini で定義された SSL Server Name です。
これは SSL 構成ファイルのサンプルです。プロセスでこれらの値を使用して SSL 接続を開始するには:
-
このファイルの名前 (<path>/odbcssl.ini) は、環境変数 ISC_SSLconfigurations で指定する必要があります。
-
このプロセスでは、SSL Server Name として [SampleSSLConfig] を指定した 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 — クライアントが実行できる SSL/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 証明書数を指定します。
これらの値の詳細は、“SSL/TLS の使用法” を参照してください。
初期化ファイルの名前と場所
初期化ファイルには任意の名前を使用できますが、一般に、ユーザ個人のディレクトリにある場合は .odbc.ini、ODBC 指定のディレクトリにある場合は odbc.ini と呼ばれます。InterSystems のサンプル・ファイルは cacheodbc.ini と呼ばれ、install-dir/mgr ディレクトリに格納されています。
このファイルを見つけるため、InterSystems ODBC クライアント・ドライバは iODBC と同じ検索順を使用します。以下の順番どおりに、以下の場所を検索します。
-
ODBCINI 環境変数が定義されている場合、これに指定されているファイル。定義されている場合は、この変数は以下のようにパスとファイルを指定します。
ODBCINI=/usr/cachesys/cacheodbc.ini export ODBCINI
-
$HOME が定義されており .odbc.ini が存在する場合、ユーザの $HOME 変数に指定されたディレクトリの .odbc.ini ファイル。
-
$HOME が定義されていない場合、passwd ファイル内に指定された “home” ディレクトリの .odbc.ini ファイル。
-
システム全体に、SYSODBCINI 環境変数が定義されている場合、これに指定されているファイル。定義されている場合は、この変数は以下のようにパスとファイルを指定します。
SYSODBCINI=/usr/cachesys/cacheodbc.ini export SYSODBCINI
-
odbc.ini ファイルは、iODBC ドライバ・マネージャ (/etc/) を構築する既定のディレクトリにあるため、完全なパス、およびファイル名は /etc/odbc.ini です。
異なる odbc.ini ファイルを使用するには、InterSystems サンプル初期化ファイルを削除するか名前を変更して、ドライバ・マネージャが $HOME または /etc/odbc.ini のパスを検索できるようにします。例えば、<cachesys>/bin に移動して以下のコマンドを実行します。
mv libodbc.so libodbc.so.old
その後、ユーザー定義の odbc.ini をドライバ・マネージャが検索可能な etc/odbc に移動します。