セキュリティと認証

多くのSQLデータベースは,接続開始時にユーザ名とパスワードを要求するように設定できる.これは不要なアクセスを避けると同時に,特定のユーザが実行できる操作の範囲を制限するのにも有用である.データベースは通常サーバーベースであるため,このようなセキュリティに関する注意が重要になる.

DatabaseLink には,パスワードを取り扱う際に考えなければいけない問題が多数存在する.これらは必要とされるセキュリティレベル,およびセキュリティレベルと便利さのバランスによって異なる.もうひとつの問題として,Wolfram言語をスタンドアロンモードで使用するか,webMathematica のようにサーバ内で使用するかというのもある.

パスワードを使用する場合に最も簡単なのは,「データベースのリソース:接続設定」に記載のように,パスワードを接続設定ファイルに置くという方法である.しかし,パスワードはテキスト形式で保管されるため,侵入者によって設定ファイルが読まれ,パスワードが盗まれる可能性がある.これは危険であるため,「Database Explorer:New Connection Wizard」に記載のNew Connection Wizardはパスワードを保存しない.しかし,設定ファイルを編集してパスワードを加えることはできる.設定ファイルのアクセス許可をWolfram言語を実行する人のみに限定することで,さらに保護することができる.

GUIを使ってパスワードを入力するようにすると,よりセキュリティを高めることができる.この方法ではパスワードは保存されない.パスワード用のGUIは,パスワード設定に"$Prompt"を使った場合に開く.

パスワード入力用のダイアログボックスは以下のようなものである.

1.gif

OpenSQLConnectionコマンドでパスワードを入力することもできる.接続が開始したらすぐにWolfram言語入力を消去する.

GUIはWolfram言語のインタラクティブセッションに便利であるが,webMathematica のようにWolfram言語をWebサーバ内で実行する場合にはそれほど便利ではない.この場合,さまざまな方法が考えられる.パスワードを設定ファイルに保存し,Webサーバ内でWolfram言語処理を実行する人にだけ設定ファイルへのアクセスを許可することもできる.また,パスワードをWebサーバが提供している信頼できるメカニズムの中に保管することもできる.例えばTomcatサーバには,JDBC Realmに基づいたメカニズムがある.データベースパスワードはWebサーバから取り出し,Wolfram言語に渡してOpenSQLConnectionコマンドで使うことができる.侵入者はWolfram言語コードを見ても,Webサーバ認証メカニズムを破らない限りデータベースパスワードを見付けることはできない.

より堅牢なセキュリティを確立するためには,Wolfram言語とデータベースの間の通信をSSLで保護する.これについては「SSL (Secure Socket Layer)」を参照されたい.