(57)【要約】【課題】データベースベンダーが提供する管理ツール、またはミドルウェアからの操作に対して、データベースセキュリティを一定のレベルで維持するシステム及びその方法の提供にある。【解決手段】更新対象データベース３０に実装するデータベーストリガー５０が、ユーザが有する参照レベル１７と、対象データベースの公開レベル２２と、を比較し、参照レベル１７が公開レベル２２より低いとき、システム管理者に不許可アクセスの警告メールを送付し、参照レベル１７が前記公開レベル２２以上であるとき、アクセスを許可して、更新対象データベース３０に対する更新履歴情報を更新履歴データベース４０に採取する。【選択図】      図１
2005215795.tif 000002
【特許請求の範囲】
【請求項１】
データベースに対する不許可なユーザのアクセスを監視して、前記データベースのセキュリティを維持するシステムにあって、
データベースに実装するデータベーストリガーが、
データベースにアクセスするユーザが有する参照レベルと、前記ユーザがアクセスする更新対象データベースの公開レベルと、を比較し、前記参照レベルが前記公開レベルより低いとき、所定のメールアドレスに不許可アクセスの警告メールを送付し、前記参照レベルが前記公開レベル以上であるとき、前記更新対象データベースの表へのアクセスを前記ユーザに許可して、更新処理する行及び列の更新処理前の値と更新処理後の値とでなる更新履歴を採取する、ことを特徴とするデータベースのセキュリティ維持システム。
【請求項２】
前記データベーストリガーは、
前記データベースへのアクセスによって起動され、データベースの表に対する処理前に、前記参照レベルと公開レベルとを比較して、不許可アクセスに警告メールを発する文トリガー（前）手段と、
前記表の行に対して、挿入と、更新と、削除と、でなる処理のいずれか一つを実行するときに起動され、前記行の処理対象列の更新処理前の値及び更新処理後の値でなる履歴情報を前記処理対象列の終わりまで繰り返して更新履歴データベースに採取する行トリガー（前）手段と、
前記行トリガー（前）手段の実行を処理対象行の終わりまで繰り返させる行トリガー（後）手段と、
前記データベーストリガーを終了させる文トリガー（後）手段と、
を含むことを特徴とする請求項１記載のデータベースのセキュリティ維持システム。
【請求項３】
前記参照レベルは、
ユーザデータベースとグループデータベースとを結合してなるユーザ情報ビューに含まれるユーザＩＤ及びグループＩＤによって指定され、前記ユーザがアクセスできるデータベース対象を制限する指標であることを特徴とする請求項１記載のデータベースのセキュリティ維持システム。
【請求項４】
前記公開レベルは、
公開レベルデータベースに登録される各表名に対して、前記表の公開を制限する指標であることを特徴とする請求項１記載のデータベースのセキュリティ維持システム。
【請求項５】
前記更新履歴情報は、
更新対象データベースの表の行毎に、ユーザＩＤと、更新日と、更新した列名と、更新処理前の値と、更新処理後の値と、
を含むことを特徴とする請求項１記載のデータベースのセキュリティ維持システム。
【請求項６】
データベースに対する不許可なユーザのアクセスを監視して、前記データベースのセキュリティを維持する方法にあって、
データベースにアクセスしたときに起動されるデータベーストリガーがユーザ情報ビューを参照し、前記参照レベルと、更新対象データベースの表の公開レベルと、を比較し、前記アクセスが許可されるか否かを検査するステップと、
前記ユーザのアクセスが不許可であるとき、前記ユーザ情報ビューにあるメールアドレスに不許可アクセスの警告メールを送付するステップと、
前記アクセスが許可されているとき、前記更新対象データベースの表に対して、更新する行及び列の更新処理前の値と、更新処理後の値と、を更新情報データベースに採取するステップと、
更新する対象の行及び列の終わりまで前記採取するステップを繰り返し、前記データベーストリガーを終了するステップと、
を実行することを特徴とするデータベースのセキュリティ維持システムの方法。
【請求項７】
データベースにアクセスしたときに起動されるデータベーストリガーがユーザ情報ビューを参照し、前記参照レベルと、更新対象データベースの表の公開レベルと、を比較し、前記アクセスが許可されるか否かを検査するステップと、
前記ユーザのアクセスが不許可であるとき、前記ユーザ情報ビューにあるメールアドレスに不許可アクセスの警告メールを送付するステップと、
前記アクセスが許可されているとき、前記更新対象データベースの表に対して、更新する行及び列の更新処理前の値と、更新処理後の値と、を更新履歴データベースに採取するステップと、
更新する対象の行及び列の終わりまで前記採取するステップを繰り返し、前記データベーストリガーを終了するステップと、
を実行させるプログラム。
【請求項８】
前記ユーザは、
データベースに、端末からアクセスする利用者あるいは直接にデータ更新するＳＱＬ文またはデータ更新するミドルウェアを含むことを特徴とする請求項１乃至請求項７記載のデータベースのセキュリティ維持システム及びその方法及びそのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データベースのセキュリティに関し、特に、端末の利用者や直接データ更新するＱＬ文やミドルウェアなどのユーザに対して、データベースのアクセス制限や更新履歴の採取をデータベーストリガーに実行させて、セキュリティレベルを確保するデータベースのセキュリティ維持システム及びその方法及びそのプログラムに関する。
【背景技術】
【０００２】
従来、ユーザのデータベースアクセスに対して、データベースを保全するため、アクセス権によって操作を制限することが行われている。このアクセス権は、ユーザ個人に与えられる資格で、パスワードによって判定されて、データベース操作を制限する。しかし、ユーザが「なりすまし」をしている場合は、データ保全が万全でなくなる。その対策として、パスワード提示によってアクセス権を有するユーザにデータ提供する際に、所定の経過時間を置き、この所定時間の間に、システム管理者に該アクセスを通知することによって、不許可ユーザにデータ漏洩することを防止する例がある。この仕組みは、一つのアプリケーションプログラムとして作り込まれるため、市販のデータベースアクセスツールには適用できない。また、更新履歴を採取することができない（例えば、特許文献１）。
【０００３】
更に、アプリケーションプログラムとして組み込まれるのでなく、データベース自体に組み込まれているトリガーを利用して、データベースを保全する例がある。この例では、データベースアクセスによって自動的に実行されるトリガーが、データベースオブジェクトに列を追加する等の構成変更など新たに保全する対象が生じたとき、影響を受けるアクセス手続きを無効にすることに用いている。このデータベース保全の目的は、データベースの整合性を保つためのもので、ユーザからの不許可アクセスに対して保全するものではない（例えば、特許文献２）。
【０００４】
【特許文献１】特開平３−１２７１５０号公報（３ページの右下ブロック及び図１）
【特許文献２】特開平７−１９２０１９号公報（段落００１６乃至００１９）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来の更新履歴採取の仕方では、データベースに対して更新処理を行うタイミングで更新履歴を残す手段をアプリケーション側に実装しているため、以下のような場面については、想定されていなかった。
・直接、ＳＱＬ文でデータを変更する。
・ミドルウェアなどを利用してデータを変更する。
【０００６】
このような状況は、９０年代半ばよりミドルウェアが普及し、誰でも簡単にデータベースを操作できる環境が整備されたことが一因である。更に、ミドルウェアの登場をきっかけにデータが変更される過程が不明確になり、次第にアプリケーションバグの特定が困難になる状況が生じるようになった。
【０００７】
これらの問題について、従来の技術では、データベースを更新するに当たり、アプリケーションプログラムからデータベースを直接更新する運用だけしか想定されておらず、上述の問題への具体的な対策が施されていない。そこで、この発明では、データベースの一つ機能であるデータベーストリガーに着目し、以下の仕組みをデータベーストリガーに取り入れ、問題の解決を図ることにする。
（１）不許可アクセスを警告する仕組み。
（２）データ更新の過程を把握するため、データベーストリガーを利用して、自動的に更新履歴情報を収集する仕組み。
（３）データベースのデータベーストリガー機能を利用して、上記（１）及び（２）の機能を容易に実現する仕組み。
【０００８】
これらの機能をデータベーストリガーに実行させることにより、従来からの問題点を解消し、データベースに対するセキュリティ対策を強化することを図る。
【０００９】
この発明の目的は、ＳＱＬ文による直接のデータ操作、各データベースベンダが提供する管理ツール、またはミドルウェアからの操作に対して、一定のセキュリティレベルを実現する。
【００１０】
更に、他の目的は、アプリケーション側で意識することなく、データベースの更新履歴情報を自動採取する機能をデータベーストリガーによって実現する。
【００１１】
更に、他の目的は、データベースに対する不許可アクセスを検知し、特定のメールアドレスに警告メールを自動発信する機能をデータベーストリガによって実現する。
【課題を解決するための手段】
【００１２】
そのため、この発明の、データベースに対する不許可なユーザのアクセスを監視して、前記データベースのセキュリティを維持するシステムにあって、データベースに実装するデータベーストリガーが、データベースにアクセスするユーザが有する参照レベルと、前記ユーザがアクセスする更新対象データベースの公開レベルと、を比較し、前記参照レベルが前記公開レベルより低いとき、所定のメールアドレスに不許可アクセスの警告メールを送付し、前記参照レベルが前記公開レベル以上であるとき、前記更新対象データベースの表へのアクセスを前記ユーザに許可して、更新処理する行及び列の更新処理前の値と更新処理後の値とでなる更新履歴を採取する、ことを特徴とする。
【００１３】
更に、前記データベーストリガーは、前記データベースへのアクセスによって起動され、データベースの表に対する処理前に、前記参照レベルと公開レベルとを比較して、不許可アクセスに警告メールを発する文トリガー（前）手段と、前記表の行に対して、挿入と、更新と、削除と、でなる処理のいずれか一つを実行するときに起動され、前記行の処理対象列の更新処理前の値及び更新処理後の値でなる履歴情報を前記処理対象列の終わりまで繰り返して更新履歴データベースに採取する行トリガー（前）手段と、前記行トリガー（前）手段の実行を処理対象行の終わりまで繰り返させる行トリガー（後）手段と、前記データベーストリガーを終了させる文トリガー（後）手段と、を含むことを特徴とする。
【００１４】
更に、前記参照レベルは、ユーザデータベースとグループデータベースとを結合してなるユーザ情報ビューに含まれるユーザＩＤ及びグループＩＤによって指定され、前記ユーザがアクセスできるデータベース対象を制限する指標であることを特徴とする。
【００１５】
更に、前記公開レベルは、公開レベルデータベースに登録される各表名に対して、前記表の公開を制限する指標であることを特徴とする。
【００１６】
更に、前記更新履歴情報は、更新対象データベースの表の行毎に、ユーザＩＤと、更新日と、更新した列名と、更新処理前の値と、更新処理後の値と、を含むことを特徴とする。
【発明の効果】
【００１７】
この発明の効果は、データベースに対する不許可なユーザのアクセスを防止できることである。その理由は、ユーザの参照レベルと更新対象データベースの公開レベルとによって、不許可ユーザを検出できるからである。
【発明を実施するための最良の形態】
【００１８】
この発明を実施するための最良の形態について図面を参照して説明する。この発明のデータベースのセキュリティ維持システムは、更新対象データベースにデータが追加、更新、削除される前のタイミングでデータベーストリガーを起動し、ユーザチェック及びデータ更新履歴の採取する。この方法を実行するシステムを示す図１を参照すると、ユーザデータベース１１と、グループデータベース１２と、ユーザデータベース１１及びグループデータベース１２を結合してなるユーザ情報ビュー１３と、更新対象の表及びそれの公開レベルを登録する公開レベルデータベース２０と、更新対象データベース３０と、データベースに実装され、ユーザのアクセスによって起動されるデータベーストリガー５０と、データベーストリガー５０が採取する更新履歴を格納する更新履歴データベース４０と、を備える。
【００１９】
更に、上述の各部の細部を図２を参照して説明すると、ユーザデータベース１１には図示しない、ユーザＩＤ（ＵＩＤ）と、グループＩＤ（ＧＩＤ）と、メールアドレス（Ｅーｍａｉｌ）と、が登録されている。グループデータベース１２には図示しない、グループＩＤと、データベースアクセスの制限を示す指標である参照レベルと、を含む。
【００２０】
図２（ａ）を参照すると、ユーザデータベース１１とグループデータベース１２とを結合してなるユーザ情報ビュー１３には、ユーザＩＤ（ＵＩＤ）１４と、グループＩＤ（ＧＩＤ）１５と、メールアドレス（Ｅ−ｍａｉｌ）１６と、アクセス制限の指標である参照レベル１７と、を含む。参照レベル１７は、ユーザによって参照できるデータベースの制限を数値で表して設定される。
【００２１】
図２（ｂ）を参照すると、公開レベルデータベース２０には、表の名称である表名２１と、管理対象となる表の重要度を管理してアクセスを制限する指標である公開レベル２２と、を含む。公開レベル２２の指標は、重要データが含まれて公開を制限する場合は高い数値を、一般に公開できるデータの場合は低い数値が設定される。
【００２２】
図２（ｃ）を参照すると、更新履歴データベース４０には、管理対象となる行毎に更新履歴として、ユーザＩＤ（ＵＩＤ）４１と、更新日４２と、列名４３と、各列に対して、更新処理前の値であるデータ（ＢＥＦＯＲＥ）４４と、更新処理後の値であるデータ（ＡＦＴＥＲ）４５と、を含む項目が含まれる。
【００２３】
更新対象データベース３０は表を指し、それの行及び列に、追加（ＩＮＳＥＲＴ）、変更（ＵＰＤＡＴＥ）、削除（ＤＥＬＥＴＥ）のいずれかの操作をする対象であり、データベーストリガ手段が実装される全てのデータベースが含まれる。
【００２４】
データベーストリガー５０には、文トリガー（前）手段５１と、行トリガー（前）手段５２と、行トリガー（後）手段５３と、文トリガー（後）手段５４と、を備える。
【００２５】
文トリガー（前）手段５１は、１つのＳＱＬ文に対して１回起動される処理であり、更新対象データベースの表に対する追加（ＩＮＳＥＲＴ）、更新（ＵＰＤＡＴＥ）、削除（ＤＥＬＥＴＥ）が実行される直前のタイミングで動作する。
【００２６】
行トリガー（前）手段５２は、表の行に対して、列データ１件毎に１回起動される処理であり、更新内容が行に書き込まれる直前のタイミングで動作し、追加（ＩＮＳＥＲＴ）、更新（ＵＰＤＡＴＥ）、削除（ＤＥＬＥＴＥ）で処理が異なる。
【００２７】
行トリガー（後）手段５３は、行に対する処理を繰り返すための手段で、一行の処理完了毎に起動され、処理終了を判定する。
【００２８】
文トリガー（後）手段５４は、表に対するデータベーストリガー５０の完了を判定する。
【００２９】
この実施形態の動作について、図１を援用し、この方法のフローチャートである図３を参照して説明する。更新対象データベース３０に対して、ＳＱＬ文が１件実行されるタイミングで（図３のステップ１０１）、文トリガー（前）手段５１が１回起動され、アクセスするユーザが不許可であるか否かを検査する（ステップ１０２）。
【００３０】
不許可アクセスの検査は、定数として更新対象データベース３０の文トリガー（前）手段５１に対して表名を定義し、該表名をキーとして公開レベルデータベース２０より公開レベル２２を取得する（ステップ１０３）。ログインユーザのユーザＩＤをキーとして、ユーザ情報ビュー１３よりメールアドレス（Ｅ−ｍａｉｌ）１６及び参照レベルを取得する（ステップ１０４）。取得した公開レベル２２と参照レベル１７の指標の数値を比較し、公開レベル２２に対して参照レベル１７が低い場合は、不許可アクセスと判定し（ステップ１０５の公開レベル＞参照レベル）、メールアドレス１６の特定のユーザあるいは管理者に、不許可アクセスの警告メールを送信する（ステップ１２３）。ＳＱＬ文は実行されずに終了する（ステップ１２４）。
【００３１】
次に、公開レベル２２が参照レベル１７以下の場合（ステップ１０５の公開レベル＜＝参照レベル）、ＳＱＬ文の更新処理を実行する（ステップ１０６）。一つのＳＱＬ文が表の行に対して、複数件の列データを更新するような場合、１件毎に列に情報を書き込む直前のタイミングで行トリガー手段５２が起動する。この行トリガー手段５２を使用して、更新履歴が取得される。この更新履歴取得には、３つのパターンがあり、それぞれに異なる更新履歴が採取される。
【００３２】
（１）追加（ＩＮＳＥＲＴ）の場合（ステップ１０６の追加）、列データの追加情報の記録を取得するために、１件の追加処理に対して、１件のデータが作成され、更新履歴データベース４０に書き込む。該データは、ユーザＩＤ（ＵＩＤ）４１に「ログインユーザ名」を書き込み、更新日４２に「システム日付」を書き込み、列名４３に更新対象データベース３０の更新対象表の「主キー名」を書き込み、処理後（ＡＦＴＥＲ）４５に「ＳＱＬ文で指定された主キー値」を書き込む（ステップ１０８）。
【００３３】
（２）削除（ＤＥＬＥＴＥ）の場合（ステップ１０６の削除）、列データの削除情報の記録を取得するために、更新履歴データベース４０に対して、１件の削除処理に対して、１件のデータが作成される。書き込まれる履歴データは、ユーザＩＤ４１に「ログインユーザ名」を書き込み、更新日４２に「システム日付」を書き込み、列名４３に「更新対象データベース内の更新対象表の主キー名」を書き込み、処理前４４に「更新対象データベース内の更新対象表の主キー値」を書き込む（ステップ１１２）。
【００３４】
（３）更新（ＵＰＤＡＴＥ）の場合（ステップ１０６の更新）、データの更新情報の記録を取得するために、更新対象データベース３０の表に対して、各行の列について、更新前の値と更新後の値を比較し、差異のある場合（ステップ１１６，ステップ１１８）、更新履歴データベース４０に以下の情報が書き込まれる。１件の更新処理に対して、値に変更のあった列数分のデータが作成されるので、値に変更がなければゼロ件となることもある。更新履歴データベース４０に書き込まれるデータは、ユーザＩＤ４１に「ログインユーザ名」を書き込み、更新日４２に「システム日付」を書き込み、列名４３に「更新対象データベース内の該当する項目名」を書き込み、処理前（ＢＥＦＯＲＥ）４４に「更新対象データベースの内の該当する項目が持つ値」を書き込み、処理後（ＡＦＴＥＲ）４５に「ＳＱＬ文で指定された変更する値」を書き込む（ステップ１１７、ステップ１１９）。
【００３５】
以上の（１）、（２）、（３）の各処理は、更新対象の表における行及びその列に対して、所要の回数ループされる（ステップ１０７からステップ１０９、ステップ１１からステップ１１３，ステップ１１６からステップ１２０）。各ループの終了で、データベーストリガー５０が終了する（ステップ１１０，ステップ１１４，ステップ１２１）。
【００３６】
なお、更新履歴データベース４０は、更新対象データベース３０の表に対して、１対１で作成される。また、上記の（１）、（２）、（３）については、利用目的に応じて、全ての機能か、もしくはいずれかの一部機能かが実装される。
【産業上の利用可能性】
【００３７】
さまざまなツールやミドルウェアやアプリケーションなどのユーザによるデータベース更新に対して、特にリレーショナルデータベースに対して、それのセキュリティをユーザ側に負担をかけないで維持することが必要なデータベース分野に適用できる。
【図面の簡単な説明】
【００３８】
【図１】この発明のデータベースのセキュリティ維持システムの仕組みを示す図である。
【図２】分図（ａ）は、ユーザ情報ビュー、分図（ｂ）は公開レベルデータベース、分図（ｃ）は更新履歴データベース、の項目構成をそれぞれ示す図である。
【図３】このシステムの方法を実行するフローチャートを示す図である。
【符号の説明】
【００３９】
１１    ユーザデータベース
１２    グループデータベース
１３    ユーザ情報ビュー
２０    公開レベルデータベース
３０    更新対象データベース
４０    更新履歴データベース
５０    データベーストリガー
５１    文トリガー（前）手段
５２    行トリガー（前）手段
５３    行トリガー（後）手段
５４    文トリガー（後）手段
【図１】
2005215795.tif 000003
【図２】
2005215795.tif 000004
【図３】
2005215795.tif 000005