(57)【要約】【課題】機密情報を秘匿し、保護するデータベース管理方法を提供する。【解決手段】データベース管理装置において、データベースに格納される機密情報に対するアクセスを管理するデータベース管理方法であって、データベース管理装置は、データベースに対するアクセス要求を受け付けるデータベース管理システムと、データベースの定義情報であるディクショナリとを格納し、ディクショナリは、データが格納される表を構成する列の属性に列に格納されるデータが機密情報であるか否かを示すための機密識別属性を含み、データベース管理装置は、データベースに格納されたデータの取得要求を受け付け、受け付けられたデータの取得要求を解析し、要求されたデータが格納される列の機密識別属性を参照し、要求されたデータが機密情報であるか否かを判定し、要求されたデータが格納される列に機密情報が含まれる場合には、列の射影を禁止する。【選択図】図４
2008134936.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、前記プロセッサに接続されるメモリと、データベースが格納される記憶装置とを備えるデータベース管理装置において、前記データベースに格納されるデータに含まれる機密情報に対するアクセスを管理するデータベース管理方法であって、
前記メモリは、前記データベースに対するアクセス要求を受け付けるデータベース管理システムを記憶し、
前記記憶装置は、前記データベースの定義情報であるディクショナリを格納し、
前記ディクショナリは、前記データが格納される表を構成する列の属性を含み、
前記列の属性は、当該列に格納されるデータが機密情報であるか否かを示すための機密識別属性を含み、
前記プロセッサは、前記データベース管理システムを実行することによって、
前記データベースに格納されたデータの取得要求を受け付け、
前記受け付けられたデータの取得要求を解析し、
前記要求されたデータが格納される列の機密識別属性を参照し、前記要求されたデータが機密情報であるか否かを判定し、
前記要求されたデータが格納される列に機密情報が含まれる場合には、前記列の射影を禁止することを特徴とするデータベース管理方法。
【請求項２】
前記プロセッサは、前記列の属性の変更を受け付けた場合には、前記列の属性の変更が前記機密情報属性の変更であるか否かを判定し、前記受け付けた属性の変更が機密情報属性の変更である場合には、前記列の属性を変更しないことを特徴とする請求項１に記載のデータベース管理方法。
【請求項３】
前記プロセッサは、前記機密情報格納列に格納された値を比較する条件を含むデータの取得要求を受け付けることを特徴とする請求項１に記載のデータベース管理方法。
【請求項４】
前記プロセッサは、
前記受け付けられたデータの取得要求に、前記機密情報格納列に格納された値を比較する条件が含まれるか否かを判定し、
前記機密情報格納列に格納された値を比較する条件が、前記受け付けられたデータの取得要求に含まれる場合には、前記機密情報格納列に格納された値が、前記受け付けられたデータの取得要求によって指定された値と直接比較されるか否かを判定し、
前記機密情報格納列に格納された値が、前記受け付けられたデータの取得要求によって指定された値と直接比較される場合には、前記受け付けられたデータの取得要求に基づいてデータを取得しないことを特徴とする請求項３に記載のデータベース管理方法。
【請求項５】
前記プロセッサは、
前記受け付けられたデータの取得要求に、前記機密情報格納列に格納された値を比較する条件が含まれるか否かを判定し、
前記機密情報格納列に格納された値を比較する条件が、前記受け付けられたデータの取得要求に含まれる場合には、前記機密情報格納列に格納された値が、前記機密情報格納列に格納された値を抽出する問合せを実行することによって得られる値と比較されるか否かを判定し、
前記機密情報格納列に格納された値が、前記機密情報格納列に格納された値を抽出する問合せを実行することによって得られる値と比較される場合には、前記受け付けられたデータの取得要求に基づいてデータを取得することを特徴とする請求項３に記載のデータベース管理方法。
【請求項６】
データベースに格納されるデータに含まれる機密情報に対するアクセスを管理するデータベース管理装置であって、
プロセッサと、前記プロセッサに接続されるメモリと、前記データベースが格納される記憶装置とを備え、
前記メモリは、前記データベースに対するアクセス要求を受け付けるデータベース管理システムを記憶し、
前記記憶装置は、前記データベースの定義情報であるディクショナリを格納し、
前記ディクショナリは、前記データが格納される表を構成する列の属性を含み、
前記列の属性は、当該列に格納されるデータが機密情報であるか否かを示すための機密識別属性を含み、
前記プロセッサは、
前記データベースに格納されたデータの取得要求を受け付け、
前記受け付けられたデータの取得要求を解析し、
前記要求されたデータが格納される列の機密識別属性を参照し、前記要求されたデータが機密情報であるか否かを判定し、
前記要求されたデータが格納される列に機密情報が含まれる場合には、前記列の射影を禁止することを特徴とするデータベース管理装置。
【請求項７】
前記メモリは、前記データベースにアクセスするユーザアプリケーションプログラムをさらに記憶し、
前記プロセッサは、前記ユーザアプリケーションプログラムを実行することによって、商品販売業務処理を実行し、
前記データベースは、前記商品販売業務において販売される商品の情報と、前記商品の特性及び他の商品との関連性に基づいて設定されるジャンルコードと、を格納し、
前記ジャンルコードは、機密情報として格納され、
前記プロセッサは、前記商品の購入指示を受け付けた場合には、前記ジャンルコードに基づいて、前記購入された商品と関連性の高い商品を検索することを特徴とする請求項６に記載のデータベース管理装置。
【請求項８】
前記メモリは、前記データベースにアクセスするユーザアプリケーションプログラムをさらに記憶し、
前記プロセッサは、前記ユーザアプリケーションプログラムを実行することによって、複数の会員のコミュニケーションを図るコミュニケーションシステムを稼働させ、
前記データベースは、前記コミュニケーションシステムの会員の個人情報を格納し、
前記会員の個人情報は、機密情報として格納され、
前記プロセッサは、所定の条件を満たす会員の検索要求を受け付け、前記個人情報に基づいて、所定の条件を満たす会員を検索することを特徴とする請求項６に記載のデータベース管理装置。
【請求項９】
データベースに格納された機密情報に対するアクセスを管理するプログラムであって、
前記データベースに格納されたデータの取得要求を受け付ける手順と、
前記受け付けられたデータの取得要求を解析する手順と、
前記要求されたデータが格納される列の属性に含まれ、格納されたデータが機密情報であるか否かを示すための機密識別属性を参照し、前記要求されたデータが機密情報であるか否かを判定する手順と、
前記要求されたデータが格納される列に機密情報が含まれる場合には、前記列の取得を禁止する手順と、を計算機に実行させることを特徴とするデータベース管理プログラム。
【請求項１０】
プロセッサと、前記プロセッサに接続されるメモリと、データベースが格納される記憶装置とを備えるデータベース管理装置において、前記データベースに格納されるデータに含まれる機密情報に対するアクセスを管理するデータベース管理方法であって、
前記メモリは、前記データベースに対するアクセス要求を受け付けるデータベース管理システムを記憶し、
前記記憶装置は、前記データベースの定義情報であるディクショナリを格納し、
前記ディクショナリは、前記データが格納される表を構成する列の属性を含み、
前記列の属性は、当該列に格納されるデータが機密情報であるか否かを示すための機密識別属性を含み、
前記プロセッサは、前記データベース管理システムを実行することによって、
前記データベースに格納されたデータの取得要求を受け付け、
前記受け付けられたデータの取得要求を解析し、
前記要求されたデータが格納される列の機密識別属性を参照し、前記要求されたデータが機密情報であるか否かを判定し、
前記要求されたデータが格納される列に機密情報が含まれる場合には、前記列に格納されたデータの取得を禁止することを特徴とするデータベース管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースを管理する技術に関し、機密情報の漏洩を防止する技術に関する。
【背景技術】
【０００２】
データベースに格納された機密情報の漏洩を防止する技術としては、データベース利用者に対してアクセス権限を付与することによって機密情報に対するアクセスを制限する技術と、機密情報自体を暗号化する技術が開示されている。
【０００３】
アクセス権限を付与する技術とは、アクセス対象のデータベースの表又は列などの資源に対して参照又は更新する権限を利用者に付与する方法である。そして、データベース管理システムは、アクセス権限を付与されていない利用者によるデータアクセスを禁止する。データベース管理システムは、事前に登録されたパスワードなどによって許可された利用者か否かを識別する。したがって、パスワードが漏洩しない限り、データベースに格納された機密情報の漏洩を防ぐことができる。特許文献１には、ユーザ認証処理によって認証されたユーザに対して機密情報を提供する情報処理システムが開示されている。
【０００４】
また、機密情報自体を暗号化する技術とは、利用者に指定された暗号鍵によって、第三者に認識されない形式に機密情報自体を変換（暗号化）する技術である。暗号化された機密情報は、暗号鍵を用いて元の情報に変換（復号化）することができる。このため、暗号鍵が漏洩しない限り、機密情報の漏洩を防ぐことができる。アクセス権限を付与する技術と組み合わせることによって、パスワードが盗まれて、機密情報をデータベース管理システムから読み出されたとしても、容易に復号化できないため、より強固に情報漏洩を防止できる。
【０００５】
特許文献２には、機密情報である個人情報のデータベースにおいて、各個人を識別する個人コードのみを暗号化して格納することによって、データの復号化による処理性能の劣化を抑制しながら情報漏洩を防ぐ技術が開示されている。
【特許文献１】特開２００６−１３４０１９号公報
【特許文献２】特開平１１−２７２６８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１に開示された技術では、ユーザ認証処理におけるパスワードが漏洩しない限り、機密情報の漏洩を防ぐことができる。一方、パスワードが漏洩してしまえば、機密情報に対するアクセスが可能となってしまう。
【０００７】
また、特許文献２に開示された技術では、暗号鍵が漏洩してしまった場合には、機密情報が漏洩してしまうおそれがある。さらに、個人コード自体を比較する場合、コードが暗号化されているため、直接比較することができず、特に、類似する情報に類似するコードを割り当てる場合など、暗号化されたコード自体に意味を有する場合には、必要なデータを抽出できない場合がある。また、比較するために随時復号化すると、処理性能が悪化してしまうおそれがある。
【０００８】
そこで、本発明は、前述した問題を鑑みてなされたものであり、設定されたアクセス権によらずに、機密情報を秘匿することを目的とする。また、機密情報の暗号化せずに利用可能とすることで、処理性能の悪化を防止することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の代表的な一形態では、プロセッサと、前記プロセッサに接続されるメモリと、データベースが格納される記憶装置とを備えるデータベース管理装置において、前記データベースに格納されるデータに含まれる機密情報に対するアクセスを管理するデータベース管理方法であって、前記メモリは、前記データベースに対するアクセス要求を受け付けるデータベース管理システムを記憶し、前記記憶装置は、前記データベースの定義情報であるディクショナリを格納し、前記ディクショナリは、前記データが格納される表を構成する列の属性を含み、前記列の属性は、当該列に格納されるデータが機密情報であるか否かを示すための機密識別属性を含み、前記プロセッサは、前記データベースに格納されたデータの取得要求を受け付け、前記受け付けられたデータの取得要求を解析し、前記要求されたデータが格納される列の機密識別属性を参照し、前記要求されたデータが機密情報であるか否かを判定し、前記要求されたデータが格納される列に機密情報が含まれる場合には、前記列の射影を禁止する。
【発明の効果】
【００１０】
本発明の一形態によれば、データベース管理システムに対して、機密情報が格納された列を機密情報属性に設定することによって、当該列の射影操作が禁止され、機密情報の情報漏洩を防止することができる。したがって、機密情報を暗号化して格納する必要がないため、復号化による性能低下を防止することができる。
【発明を実施するための最良の形態】
【００１１】
本発明は、データベースに格納された表に含まれる機密情報が格納された列（フィールド）を秘匿しながら利用可能とする技術である。以下に説明する実施形態として、第１の実施形態では、商品の分類情報を機密情報とする例を説明する。具体的には、書籍を販売するショッピングサイトの書籍検索システムについて説明する。
【００１２】
第２の実施形態では、コミュニティシステムにおける、同年代の同じ趣味をもった会員を探す機能を実現する仕組みについて説明する。このとき、個人情報に該当する情報を利用者に開示することなく、所期の目的を達成することができる。
【００１３】
（第１の実施形態）
第１の実施形態では、書籍検索システムに本発明を適用する。書籍検索システムは、顧客に対して、好みの書籍と類似するなど関連した書籍の情報を提供することによって、次の購買に繋げる。
【００１４】
書籍検索システムは、書籍の名称、値段、書籍のジャンルコードなどをデータベースによって管理する。書籍検索システムは、データベース管理システムに対し、任意の書籍名称に基づいて、類似又は関連する書籍名称を検索する。例えば、著者が「シェイクスピア」の書籍を購入した場合、「シェイクスピア」と同じイギリス文学者「アーサー・コナン・ドイル」の著書である「シャーロックホームズの冒険」を類似した書籍として検索し、顧客が好む書籍の候補として提供する。
【００１５】
ジャンルコードは、ジャンルコード自体に著者などの書籍の情報を含まなくても、類似又は関連するジャンルの書籍に対して、類似するジャンルコードを割り当てることによって、書籍間の類似性及び関連性を判定することができる。また、ジャンルコードは、著者などのデータとともに、書籍の内容などに基づいて定めることによって、より精度が向上する。第１の実施形態のジャンルコードは、サービスを提供する企業が世界中の書籍１つ１つを評価して設定するものとなっている。
【００１６】
第１の実施形態の書籍検索システムは、ジャンルコードに基づいて、利用者の好みに応じた書籍を選択することが可能となっている。したがって、各書籍の類似性及び関連性を的確に表したジャンルコードを定めることによって、顧客の好みに合致した書籍の情報を提供することができ、より充実したサービスを提供できる。特に、精度の高いジャンルコードは、サービス提供企業の機密情報に値する重要な情報となる。
【００１７】
また、書籍検索システムを開発する企業は、ジャンルコードを実際に設定するサービス提供企業と異なる場合がある。このとき、サービス提供企業は、書籍検索システムを開発するためにシステムを開発する企業にジャンルコードを提供する必要がある。システムを開発する企業には、機密保持義務が課されるが、ジャンルコードそのものが流出したり、システムの開発関係者によってジャンルコードに関するノウハウが流出するおそれがある。
【００１８】
そこで、第１の実施形態の書籍検索システムでは、データベース管理者であっても、機密情報であるジャンルコードを直接参照できないようにシステムを構成する。また、ジャンルコードそのものを取得することは禁止されるが、類似又は関連する書籍を検索するために、間接的にジャンルコードを利用する手段を提供する。
【００１９】
以下、書籍検索システムにおいて、本発明を実施するための最良の形態を、図面に基づいて詳細に説明する。
【００２０】
図１は、本発明の第１の実施形態のデータベース管理システムのハードウェア構成を示す図である。データベース管理システムは、データベース管理装置１００及び端末１５０を含む。データベース管理装置１００及び端末１５０は、ネットワーク１９０を介して接続される。
【００２１】
データベース管理装置１００は、データを格納し、端末１５０からの要求に応じた処理を実行する。端末１５０は、利用者からの入力を受け付けて、データベース管理装置１００に処理を要求する。
【００２２】
データベース管理装置１００は、ＣＰＵ１１０、メモリ１１５、ハードディスク装置（１６０、１７０）、及びインターフェース１８０を含む。ＣＰＵ１１０は、メモリ１１５に格納されたプログラムを実行する。
【００２３】
メモリ１１５は、ハードディスク装置（１６０、１７０）などに格納されたプログラム又はデータを格納する。メモリ１１５は、ユーザアプリケーション（Ｕｓｅｒ  ＡＰｐｌｉｃａｔｉｏｎ；以下、「ＵＡＰ」）１２０、データベース管理システム１３０、及びオペレーティングシステム１４０を格納する。
【００２４】
ＵＡＰ１２０は、業務処理が定義されたプログラムであって、ＣＰＵ１１０によって実行される。データベース管理システム１３０は、ハードディスク装置１７０に格納されたデータベースを管理する。データベース管理システム１３０が管理するデータベースは、必要に応じてＵＡＰ１２０にアクセスされる。ＵＡＰ１２０及びデータベース管理システム１３０は、オペレーティングシステム１４０上で実行される。
【００２５】
ハードディスク装置１７０は、データ及び当該データのインデックス情報などを含むデータベースを格納する。ハードディスク装置１６０は、ハードディスク装置１７０に格納されたデータベースのディクショナリを格納する。ディクショナリとは、データベースのテーブル構造、列定義、インデックス定義などを含むデータベース設計仕様である。ディクショナリは、データベースを参照又は更新する際に必要とされる。ディクショナリの詳細については、図２にて後述する。
【００２６】
第１の実施形態では、ハードディスク装置１６０及び１７０は、データベース管理装置１００に含まれる形態としているが、外部のストレージ装置にデータベース及びディクショナリを格納し、ネットワーク１９０を経由して接続してもよい。
【００２７】
また、データベースにアクセスする端末１５０は、データベース管理装置１００に含まれていてもよい。例えば、携帯端末のメモリにデータベース及びディクショナリを記録し、当該携帯端末の入力装置からＵＡＰ１２０を起動し、メモリに格納されたデータベースにアクセスしてもよい。
【００２８】
図２は、本発明の第１の実施形態の表定義文の一例と、ディクショナリを生成する手順を示す図である。
【００２９】
ディクショナリは、列を含む表名、列名、データ型などを含み、本発明の第１の実施形態のディクショナリでは、さらに、格納される情報が機密情報であるか否かを示す「機密情報格納有無」フィールドを含む。「機密情報格納有無」は、格納される情報が機密情報であれば、「Ｙ」が格納され、機密情報でなければ、「Ｎ」が格納される。また、機密情報格納列の列属性「機密情報格納有無」の値を「Ｙ」から「Ｎ」に変更することも禁止される。
【００３０】
続いて、ディクショナリを生成する手順を簡単に説明する。ディクショナリは、表を生成する定義系ＳＱＬを作成し、データベース管理システム１３０で実行することによって生成される。生成されたディクショナリは、ハードディスク装置１６０に格納される。
【００３１】
定義系ＳＱＬ２００は、列名及び当該列のデータ型などの一般的なオプションが指定されるとともに、当該列に機密情報格納有無を指定するパラメータが指定される。なお、機密情報格納有無が指定されない列は、機密情報としてではなく、通常の情報を格納する列として定義される。
【００３２】
表２１０は、定義されるパラメータの定義を示す表である。定義系ＳＱＬ２００において、ジャンルコードの列に指定されたパラメータ「Ｐ１」は、値として「Ｙ」又は「Ｎ」が格納されることが値２１２に定義される。また、パラメータ「Ｐ１」に設定される値の意味が、意味２１３に格納されている。
【００３３】
定義系ＳＱＬ２００が実行されることによって生成されたディクショナリは、ディクショナリ表２２０に示すように構成される。ディクショナリ表２２０は、表名２２１、列名２２２、データ型２２３、及び機密情報格納有無２２４などを含む。
【００３４】
ＳＱＬ２００に示す表１の表定義文では、「ジャンルコード」列の定義情報としてパラメータ名「Ｐ１」（２１１）に「Ｙ」を指定することによって、「ジャンルコード」列が機密情報格納列であることを示している。
【００３５】
したがって、ＳＱＬ２００によって定義された表１の列情報は、ディクショナリ表２２０の機密情報格納有無２２４の欄に「Ｙ」が格納される。すなわち、ＳＱＬ２００によって定義された表１には、「ジャンルコード」列には機密情報を格納し、「書籍ＩＤ」列と「書籍名」列、及び「著者名」列には機密情報でないデータを格納する。
【００３６】
図３は、本発明の第１の実施形態のデータベース管理システム１３０が表を定義する処理の手順を示す図である。
【００３７】
データベース管理システム１３０は、まず、ＵＡＰ１２０から定義系ＳＱＬ２００を受け付ける（５００）。続いて、データベース管理システム１３０は、受信したＳＱＬに基づいて、表定義処理を実行する（５１０）。
【００３８】
次に、データベース管理システム１３０は、表定義で指定された各列に対して、以下の処理を繰り返す（５２０）。まず、定義される表の各列が機密情報格納列に指定されているか否かを判定する（５２１）。列に機密情報文字列の指定がなされている場合には（５２１の結果が「Ｙ」）、図２に示した列データを管理するディクショナリ表２２０の該当列データに対して、機密情報格納有無２２４の値を「Ｙ」に設定する（５２２）。また、列に機密情報文字列の指定がなされていない場合には（５２１の結果が「Ｎ」）、機密情報格納有無２２４の値を「Ｎ」に設定する（５２３）。以上の処理によって、データ検索時に機密情報格納列であるか否かを判定することが可能となる。
【００３９】
図４は、本発明の第１の実施形態のデータベース管理システム１３０が表の定義を変更する処理の手順を示す図である。
【００４０】
データベース管理システム１３０は、まず、ＵＡＰ１２０から定義変更ＳＱＬ（ＡＬＴＥＲ  ＴＡＢＬＥ文）を受け付ける（６００）。
【００４１】
次に、データベース管理システム１３０は、表定義変更操作の種類を判定する（６２０）。データベース管理システム１３０が受け付けた処理が「列の追加」ならば、通常の変更処理を実行する（６２１）。なお、６２１の処理では、機密情報格納列を追加することも可能であり、改めて表定義からやり直すことなく、機密情報格納列を追加することができる。したがって、機密情報格納列を追加する場合であっても、変更に伴う影響を少なくすることができ、運用コストの増大を防ぐことができる。
【００４２】
データベース管理システム１３０は、受け付けた処理が「列属性の変更」ならば、機密情報格納有無２２４の属性を「Ｙ」から「Ｎ」に変更する処理であるか否かを判定する（６２２）。機密情報格納有無２２４の属性を「Ｙ」から「Ｎ」に変更する処理であるとき（６２２の結果が「Ｙ」）、変更を許可しない（６２４）。また、機密情報格納有無２２４の属性を「Ｙ」から「Ｎ」に変更する処理でなければ、受け付けた処理を実行する（６２５）。以上の処理によって、機密情報格納列に格納されているデータが機密情報格納列オプションを変更することによって、利用者に情報漏洩することを防ぐことができる。
【００４３】
なお、データベース管理システム１３０は、受け付けた処理が「列の追加」又は「列属性の変更」でなければ（６２０の結果が「その他」）、機密情報格納列に対する処理に影響しないため、受け付けた処理を実行する（６２３）。
【００４４】
図５Ａ及び図５Ｂは、本発明の第１の実施形態のデータベース管理システム１３０がデータを検索する処理の手順を示すフローチャートである。
【００４５】
図５Ａは、本発明の第１の実施形態のデータ検索処理に含まれるＳＱＬ構文解析処理の手順を示すフローチャートである。
【００４６】
データベース管理システム１３０は、まず、ＳＱＬ受信処理を実行し（３００）、ＵＡＰ１２０からデータを検索するＳＱＬを受け付ける（３０１）。
【００４７】
次に、データベース管理システム１３０は、３００の処理で受信したＳＱＬに対して、ＳＱＬ構文解析処理を実行する（３２０）。ＳＱＬ構文解析処理３２０では、まず、３００の処理で受信したＳＱＬを解析する（３２１）。具体的には、受信したＳＱＬに含まれるキーワード及び識別子を抽出し、文法的に正しいか否かを判定する。受信するＳＱＬの具体例は、図６にて後述する。
【００４８】
データベース管理システム１３０は、受信したＳＱＬの解析が終了すると、射影列に機密情報格納列が含まれているか否かを判定する（３２２）。具体的には、ディクショナリ表２２０の機密情報格納有無２２４の値を参照することによって判定する。
【００４９】
データベース管理システム１３０は、射影列に機密情報格納列が含まれている場合には（３２２の結果が「Ｙ」）、解析結果を異常と判定し（３２３）、構文エラー処理を実行する（３２４）。このように、射影列に機密情報格納列が含まれている場合には、構文エラーとして処理することによって、利用者が機密情報を参照することを防止できる。
【００５０】
データベース管理システム１３０は、射影列に機密情報格納列が含まれていない場合には（３２２の結果が「Ｎ」）、ＳＱＬ問合せの条件式に機密情報格納列が指定されているか否かを判定する（３２５）。ＳＱＬ問合せの条件式とは、射影するデータを抽出する検索条件である。具体的には、３２２の処理と同様に、ディクショナリ表２２０の機密情報格納有無２２４の値を参照することによって判定する。ＳＱＬ問合せの条件式に機密情報格納列が指定されていない場合には（３２５の結果が「Ｎ」）、解析結果を正常と判定する（３２７）。
【００５１】
データベース管理システム１３０は、ＳＱＬ問合せの条件式に機密情報格納列が指定されている場合には（３２５の結果が「Ｙ」）、さらに、機密情報格納列の値が直接指定されているか否かを判定する（３２６）。機密情報格納列の値が直接指定されている場合には（３２６の結果が「Ｙ」）、解析結果を異常と判定し（３２９）、構文エラー処理を実行する（３３０）。機密情報格納列の値の射影を禁止しても、条件式で直接指定することが可能であれば、機密情報格納列の値を推測することが可能であるからである。
【００５２】
データベース管理システム１３０は、機密情報格納列の値が直接指定されていない場合には（３２６の結果が「Ｎ」）、解析結果を正常と判定する（３２８）。機密情報格納列の値が直接指定されていない場合とは、例えば、副問合せの結果同士を比較する場合などである。ＳＱＬの条件式において、機密情報格納列同士を比較する場合には、検索結果から利用者が機密情報格納列の値を推測することは困難である。
【００５３】
図５Ｂは、本発明の第１の実施形態のデータ検索処理に含まれるデータの取得処理及び返却処理の手順を示す図である。
【００５４】
データベース管理システム１３０は、３２０のＳＱＬ構文解析処理が終了すると、次にデータの取得処理を実行する（３４０）。データベース管理システム１３０は、ＳＱＬ構文解析処理の結果を参照し（３４１）、結果が正常の場合には（３４１の結果が「正常」）、受信したＳＱＬに基づいて、データを取得する（３４２）。ＳＱＬ構文解析処理の結果が異常の場合には（３４１の結果が「異常」）、そのままデータの取得処理を終了する。
【００５５】
データベース管理システム１３０は、３４０のデータの取得処理が終了すると、ＵＡＰ１２０に抽出されたデータを応答する（３６０）。まず、データベース管理システム１３０は、ＳＱＬ構文解析処理の結果を参照し（３６１）、結果が正常の場合には（３６１の結果が「正常」）、ＵＡＰ１２０に検索結果として３４２の処理で取得したデータを送信する（３６２）。一方、ＳＱＬ構文解析処理の結果が異常の場合には（３６１の結果が「異常」）、ＵＡＰ１２０に検索結果として構文エラーである旨を通知する。
【００５６】
このようにして、本発明は、機密情報格納列のデータが利用者に漏洩することなく、安全に、かつ、柔軟な検索結果を利用者に提供できる。
【００５７】
図６は、本発明の第１の実施形態の書籍検索システムの動作を説明する図である。図５Ａ及び図５Ｂのフローチャートの処理と対比させながら、具体的に書籍検索システムの動作について説明する。
【００５８】
ＳＱＬ１からＳＱＬ４（４０１〜４０４）は、書籍情報が格納されたデータベースからデータを抽出する命令を含む。ＵＡＰ１２０は、データベース管理システム１３０にＳＱＬ１からＳＱＬ４を送信し、データの取得を要求する。データベース管理システム１３０は、受信したＳＱＬを処理し、ディクショナリ及びデータベースを参照して必要な情報を抽出する。このとき、ＳＱＬが不正である場合には、ＵＡＰ１２０にエラーが応答される。
【００５９】
ここで、第１の実施形態において、ＵＡＰ１２０がＳＱＬ１からＳＱＬ４（４０１〜４０４）をデータベース管理システム１３０に送信し、データを取得する処理について説明する。なお、ＵＡＰ１２０から直接ＳＱＬを送信せずに、予め定義されたストアドプロシージャを実行することによってデータを取得することも可能である。
【００６０】
まず、ＵＡＰ１２０がＳＱＬ１（４０１）をデータベース管理システム１３０に送信したときの処理について説明する。
【００６１】
データベース管理システム１３０は、ＳＱＬ１（４０１）を受信すると、まず、ＳＱＬ問合せの射影列に機密情報格納列が指定されているか否かを判定する（３２２）。ディクショナリ表（４２０）を参照すると、「ジャンルコード」列は、機密情報格納列であるため、３２２の判定結果は「Ｙ」となる。したがって、データベース管理システム１３０は、解析結果を「異常」と判定し（３２３）、構文エラー処理を実行し（３２４）。ＵＡＰ１２０に構文エラーを通知する（４１１）。
【００６２】
このように、ＳＱＬ問合せにおける機密情報格納列の射影を禁止し、機密情報であるジャンルコードの漏洩を防止することができる。
【００６３】
次に、ＵＡＰ１２０がＳＱＬ２（４０２）をデータベース管理システム１３０に送信したときの処理について説明する。
【００６４】
データベース管理システム１３０は、ＳＱＬ２（４０２）を受信すると、まず、ＳＱＬ問合せの射影列に機密情報格納列が指定されているか否かを判定する（３２２）。ディクショナリ表（４２０）を参照すると、「書籍名」列は、機密情報格納列ではないため、３２２の判定結果は「Ｎ」となる。
【００６５】
続いて、データベース管理システム１３０は、ＳＱＬ問合せの条件式（ＷＨＥＲＥ句）に機密情報格納列が指定されているか否かを判定する（３２５）。ディクショナリ表（４２０）を参照すると、「ジャンルコード」列は機密情報格納列であるため、３２５の判定結果は「Ｙ」となる。この場合、ＳＱＬ問合せの結果から機密情報格納列の値を推測される可能性があるため、さらに、ＳＱＬ問合せの条件式の比較対象の値が機密情報格納列の検索結果であるか否かを判定する（３２６）。換言すると、ＳＱＬ問合せの条件式の比較対象が、機密情報格納列を射影列としたＳＱＬ副問合せであるか否かを判定する。
【００６６】
ＳＱＬ２（４０２）は、ＳＱＬ問合せの条件式（ＷＨＥＲＥ句）の機密情報格納列「ジャンルコード」の比較対象として、「ジャンルコード」を射影列に指定したＳＱＬ副問合せが指定されている。「ジャンルコード」列は機密方法格納列であるが、副問合せで射影された列同士を直接比較しているため、３２６の判定結果は「Ｙ」となり、ＳＱＬ構文解析結果を「正常」となる（３２８）。そして、データベース管理システム１３０は、ＵＡＰ１２０に取得したデータ（４１２）を送信する（３６２）。
【００６７】
第１の実施形態のデータベース管理システム１３０では、機密情報格納列同士を比較するなどの機密情報格納列の値を直接使用しない場合に限って、ＳＱＬの条件式に指定することができる。したがって、機密情報格納列のデータの漏洩を防止しながら、機密情報格納列のデータを利用した検索を安全に行なうことができる。
【００６８】
次に、ＵＡＰ１２０がＳＱＬ３（４０３）をデータベース管理システム１３０に送信したときの処理について説明する。
【００６９】
データベース管理システム１３０は、ＳＱＬ３（４０３）を受信すると、まず、ＳＱＬ問合せの射影列に機密情報格納列が指定されているか否かを判定する（３２２）。ディクショナリ表（４２０）を参照すると、「書籍名」列は、機密情報格納列ではないため、３２２の判定結果は「Ｎ」となる。
【００７０】
続いて、データベース管理システム１３０は、ＳＱＬ問合せの条件式（ＷＨＥＲＥ句）に機密情報格納列が指定されているか否かを判定する（３２５）。ディクショナリ表（４２０）を参照すると、「ジャンルコード」列は機密情報格納列であり、ＳＱＬ３（４０３）には、ジャンルコードが条件式に含まれているため、３２５の判定結果は「Ｙ」となる。
【００７１】
さらに、ＳＱＬ問合せの条件式の比較対象の値が機密情報格納列の検索結果であるか否かを判定する（３２６）。換言すると、ＳＱＬ問合せの条件式の比較対象が、機密情報格納列を射影列としたＳＱＬ副問合せであるか否かを判定する。ＳＱＬ３（４０３）は、ＳＱＬ問合せの条件式（ＷＨＥＲＥ句）の機密情報格納列「ジャンルコード」の比較対象として、「１４００」という値を指定しているため、３２６の判定結果は「Ｎ」となる。ジャンルコードが直接指定されたＳＱＬの実行を許可すると、ＳＱＬ問合せの結果から機密情報格納列の値を推測される可能性があるため、ＳＱＬ３（４０３）の実行は禁止される。そして、データベース管理システム１３０は、ＳＱＬ構文解析結果を「異常」と判定し（３２９）、構文エラー処理を実行する（３３０）。
【００７２】
以上のように、第１の実施形態のデータベース管理システム１３０では、ＳＱＬ問合せの条件式において、機密情報格納列の値を直接指定することを禁止することによって、検索結果から利用者が機密情報格納列の値を推測することを防ぐことができる。
【００７３】
最後に、ＵＡＰ１２０がＳＱＬ４（４０４）をデータベース管理システム１３０に送信したときの処理について説明する。
【００７４】
データベース管理システム１３０は、ＳＱＬ４（４０４）を受信すると、まず、ＳＱＬ問合せの射影列に機密情報格納列が指定されているか否かを判定する（３２２）。ディクショナリ表（４２０）を参照すると、「書籍名」列は、機密情報格納列ではないため、３２２の判定結果は「Ｎ」となる。
【００７５】
続いて、データベース管理システム１３０は、ＳＱＬ問合せの条件式（ＷＨＥＲＥ句）に機密情報格納列が指定されているか否かを判定する（３２５）。ディクショナリ表（４２０）を参照すると、「著者名」列は機密情報格納列でないため、３２５の判定結果は「Ｎ」となり、ＳＱＬ構文解析結果を「正常」と判定する（３２７）。そして、データベース管理システム１３０は、ＵＡＰ１２０に取得したデータ（４１２）を送信する（３６２）。
【００７６】
以上のように、第１の実施形態のデータベース管理システム１３０では、機密情報格納列に関係しない検索は、従来どおり実行することができる。
【００７７】
第１の実施形態によれば、データベース管理システムに対して、ジャンルコード格納列のアクセス属性を機密情報属性に設定することで、当該列の射影操作が禁止され、ジャンルコードの情報漏洩を阻止できる。
【００７８】
また、第１の実施形態によれば、一度ジャンルコード格納列に設定した機密情報属性を、変更することができないため、仮にデータベース管理者のパスワードが盗まれたとしても、ジャンルコードの情報漏洩を阻止できる。
【００７９】
さらに、第１の実施形態によれば、上記機密情報属性であるジャンルコード格納列を、データベース問合せ（ＳＱＬのＳｅｌｅｃｔ文）の条件式（Ｗｈｅｒｅ句）に指定することで、ジャンルコードに間接的にアクセスできる。つまり、ある任意の書籍名称がもつジャンルコードに近い、別の書籍名称を検索できるようになる。
【００８０】
第１の実施形態によれば、条件式（Ｗｈｅｒｅ句）において、比較対象とする値が、機密情報列であるジャンルコード格納列の検索結果（射影列に機密情報列を指定した副問合せの結果）の場合のみ、アクセスできるようになる。つまり、任意のジャンルコードを条件式の比較対象とする値に指定して、書籍名称を検索することによってジャンルコードの情報が漏洩することを防ぐことができる。
【００８１】
第１の実施の形態のデータベース管理システムでは、書籍だけでなく音楽情報を格納するデータベースに対しても同様に適用することができる。音楽情報の場合には、ジャンルコードを、歌手又は作曲者、演奏者などの要素をさらに加味して設定することができる。
【００８２】
また、音楽再生機能を有するカーナビゲーションシステムなどに当該音楽情報のデータベースを組み込んでもよい。カーナビゲーションシステムが楽曲をダウンロードする機能を有している場合には、利用者の好みの楽曲を選曲し、提案する機能を実装することができる。
【００８３】
このとき、本発明を適用することによって、最初にシステムにデータを入力するときにジャンルコードの所有者が入力すれば、その後は、音楽情報のデータベースにアクセスするソフトウェアの開発者に対しても、機密情報を秘匿することができる。なお、機密情報を含むデータの入力は、ネットワークを介して行なうことも可能だが、この場合には、暗号化して通信する必要がある。
【００８４】
また、ジャンルコードを暗号化して格納する必要がないため、処理性能の劣化を抑えることができる。特に、迅速な応答を要求される組込みデータベースの検索には有効となる。なお、特に高速な応答が求められないアプリケーションであれば、暗号化した上で、本発明を適用することによって、さらに機密情報を強固に秘匿することができる。
【００８５】
（第２の実施形態）
第２の実施形態では、個人情報の保護に本発明を適用する。例えば、コミュニティシステムにおいて、対象の会員の個人情報を利用者に開示することなく、同年代かつ同じ趣味の会員、又は、さらに近くに住む会員を探す機能などを提供する。
【００８６】
図７Ａは、第２の実施形態のコミュニティシステムの会員情報テーブル７１０のデータの一例を示す図である。会員情報テーブル７１０は、名前、年代、住所、及び趣味に関する情報を含む。
【００８７】
会員情報テーブル７１０に格納される情報は、個人を特定する情報及びプライバシーに関する情報を含む。したがって、会員情報テーブル７１０の内容を、むやみに公開すべきでない。
【００８８】
図７Ｂは、第２の実施形態のコミュニティシステムの会員情報テーブル７１０のディクショナリ表７２０である。
【００８９】
第２の実施の形態では、図７Ｂを参照すると、年代及び趣味が機密情報に指定されている。会員情報テーブル７１０の年代及び趣味は、機密情報格納有無の値が「Ｙ」となっている。
【００９０】
また、名前及び住所は、機密情報に指定されていないが、これらの情報を機密情報としてもよい。また、名前の代わりに、ニックネームを別途登録し、名前を機密情報とすることもできる。住所は、詳細な情報ではなく、おおまかな地域を格納しているため、機密情報としていないが、詳細な情報を入力する場合には、機密情報とすればよい。
【００９１】
以上のように、会員情報テーブル７１０を構築することによって、例えば、年代及び趣味に基づいて検索することによって、利用者が自分と年代が近く、似た趣味をもつ会員を検索することができる。
【００９２】
具体的には、年代は、同年代又は前後の年代を近い年代とし、趣味は、画一的に判断することが困難であるため、あらかじめ似た趣味を特定できる手順を定義しておく。例えば、似た趣味をグループ分けして定義することによって、同じグループに属する趣味を似た趣味と定義することができる。
【００９３】
さらに、「Ｉ」さんが、自分と年代が近く、似た趣味をもつ友人を検索する場合には、「Ｉ」さんの年代が「３０代前半」であるため、「２０代後半」、「３０代前半」及び「３０代後半」の年代の会員が検索対象となる。さらに、趣味が「ビデオ鑑賞」であるため、似た趣味として「映画鑑賞」などが検索対象となる。そして、これらの条件を満たす会員を検索すると、年代が「３０代後半」であって、趣味が「映画鑑賞」である「Ｓ」さんが検索される。
【００９４】
第２の実施形態は、コミュニティシステム以外にも、結婚相手仲介業における紹介者検索システムに適用することが可能である。第２の実施形態を適用した紹介者検索システムでは、個人情報を保護しながら効率よく条件に合致した相手を顧客に紹介することができる。
【００９５】
第２の実施形態によれば、企業の資産である機密情報を秘匿するだけでなく、流出を防がなければならない個人情報を秘匿するために本発明を適用することができる。さらに、システム開発者に対しても、個人情報を秘匿することが可能となり、より強固に個人情報を保護することができる。
【図面の簡単な説明】
【００９６】
【図１】本発明の第１の実施形態のデータベース管理システムのハードウェア構成を示す図である。
【図２】本発明の第１の実施形態の表定義文の一例と、ディクショナリを生成する手順を示す図である。
【図３】本発明の第１の実施形態のデータベース管理システムが表を定義する処理の手順を示す図である。
【図４】本発明の第１の実施形態のデータベース管理システムが表の定義を変更する処理の手順を示す図である。
【図５Ａ】本発明の第１の実施形態の本発明の第１の実施形態の主にＳＱＬ構文解析処理の手順を示す図である。
【図５Ｂ】本発明の第１の実施形態の本発明の第１の実施形態のデータの取得処理及び返却処理の手順を示す図である。
【図６】本発明の第１の実施形態の書籍検索システムの動作を説明する図である。
【図７Ａ】本発明の第２の実施形態の個人情報を格納した表のデータの一例を示す図である。
【図７Ｂ】本発明の第２の実施形態の個人情報を格納した表のディクショナリの一例を示す図である。
【符号の説明】
【００９７】
１００    データベース管理装置
１１０    ＣＰＵ
１１５    メモリ
１２０    ユーザアプリケーション（ＵＡＰ）
１３０    データベース管理システム
１４０    オペレーティングシステム
１５０    端末
１６０、１７０    ハードディスク装置
【図１】
2008134936.tif 000003
【図２】
2008134936.tif 000004
【図３】
2008134936.tif 000005
【図４】
2008134936.tif 000006
【図５Ａ】
2008134936.tif 000007
【図５Ｂ】
2008134936.tif 000008
【図６】
2008134936.tif 000009
【図７Ａ】
2008134936.tif 000010
【図７Ｂ】
2008134936.tif 000011