IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧

特開2023-1780データアクセス制御方法、データアクセス制御装置、データアクセス制御プログラム
<>
  • 特開-データアクセス制御方法、データアクセス制御装置、データアクセス制御プログラム 図1
  • 特開-データアクセス制御方法、データアクセス制御装置、データアクセス制御プログラム 図2
  • 特開-データアクセス制御方法、データアクセス制御装置、データアクセス制御プログラム 図3
  • 特開-データアクセス制御方法、データアクセス制御装置、データアクセス制御プログラム 図4
  • 特開-データアクセス制御方法、データアクセス制御装置、データアクセス制御プログラム 図5
  • 特開-データアクセス制御方法、データアクセス制御装置、データアクセス制御プログラム 図6
  • 特開-データアクセス制御方法、データアクセス制御装置、データアクセス制御プログラム 図7
  • 特開-データアクセス制御方法、データアクセス制御装置、データアクセス制御プログラム 図8
  • 特開-データアクセス制御方法、データアクセス制御装置、データアクセス制御プログラム 図9
  • 特開-データアクセス制御方法、データアクセス制御装置、データアクセス制御プログラム 図10
  • 特開-データアクセス制御方法、データアクセス制御装置、データアクセス制御プログラム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023001780
(43)【公開日】2023-01-06
(54)【発明の名称】データアクセス制御方法、データアクセス制御装置、データアクセス制御プログラム
(51)【国際特許分類】
   G06F 16/2457 20190101AFI20221226BHJP
   G06F 21/62 20130101ALI20221226BHJP
【FI】
G06F16/2457
G06F21/62 318
【審査請求】未請求
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2021102711
(22)【出願日】2021-06-21
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】特許業務法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】角井 健太郎
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175BA01
(57)【要約】
【課題】アクセス制御ポリシーの維持管理が容易なデータアクセス制御技術を提供する。
【解決手段】ポリシー判定部401は、予め設定されたアクセス制御ポリシー402に基づいて、データ501へのアクセス要求に対するルールを取得し、データ501が格納されたデータベース500の外部から、データ501の各レコードの属性に関する属性情報を取得するか否かを選択する。その結果、属性情報を取得すると選択した場合、属性情報を取得して属性情報に基づくルールの評価を行い、属性情報を取得しないと選択した場合、データベース500にルールに基づくデータ501のフィルタリングを実行させる。そして、ルールの評価結果またはフィルタリングの実行結果に基づいて、アクセス要求に対応するデータ501のレコードをデータベース500から取得する。
【選択図】図3
【特許請求の範囲】
【請求項1】
コンピュータによるデータアクセス制御方法であって、
前記コンピュータにより、予め設定されたアクセス制御ポリシーに基づいて、第1のデータへのアクセス要求に対するルールを取得し、
前記コンピュータにより、前記第1のデータが格納された第1のデータベースの外部から、前記第1のデータの各レコードの属性に関する属性情報を取得するか否かを選択し、
前記属性情報を取得すると選択した場合、前記コンピュータにより、前記属性情報を取得して前記属性情報に基づく前記ルールの評価を行い、
前記属性情報を取得しないと選択した場合、前記コンピュータにより、前記第1のデータベースに前記ルールに基づく前記第1のデータのフィルタリングを実行させる指示を行い、
前記コンピュータにより、前記ルールの評価結果または前記フィルタリングの実行結果に基づいて、前記アクセス要求に対応する前記第1のデータのレコードを前記第1のデータベースから取得する、
データアクセス制御方法。
【請求項2】
前記第1のデータベースに前記属性情報を含む第2のデータが格納されている場合、前記属性情報を取得しないと選択し、
前記第1のデータベースに前記第2のデータが格納されていない場合、前記属性情報を取得すると選択する、
請求項1に記載のデータアクセス制御方法。
【請求項3】
前記属性情報を取得しないと選択した場合、前記第1のデータと前記第2のデータを結合することで、前記第1のデータベースに前記フィルタリングを実行させる、
請求項2に記載のデータアクセス制御方法。
【請求項4】
前記第1のデータベースに前記第2のデータが格納されている場合であっても、前記第1のデータベースにおいて前記第1のデータと前記第2のデータを結合できない場合は、前記属性情報を取得すると選択する、
請求項3に記載のデータアクセス制御方法。
【請求項5】
前記コンピュータにより、前記アクセス要求に応じた第1のクエリを生成するクエリサービスと、前記アクセス要求に対して前記アクセス制御ポリシーに基づく認可処理を行う認可サービスと、を提供し、
前記認可サービスでは、
前記第1のデータベースの外部から前記属性情報を取得するか否かを選択し、
前記属性情報を取得すると選択した場合、前記属性情報の取得および前記ルールの評価を行い、
前記属性情報を取得しないと選択した場合、前記第1のデータベースに前記フィルタリングを実行させるための第2のクエリを前記クエリサービスから出力させる、
請求項1に記載のデータアクセス制御方法。
【請求項6】
前記クエリサービスでは、前記認可サービスからの指示に応じて、生成した前記第1のクエリを前記第2のクエリに変換して前記第1のデータベースに出力する、
請求項5に記載のデータアクセス制御方法。
【請求項7】
前記属性情報の配置場所とその機能を示す属性情報管理テーブルを参照して、前記第1のデータベースの外部から前記属性情報を取得するか否かを選択する、
請求項1に記載のデータアクセス制御方法。
【請求項8】
前記コンピュータにより、前記第1のデータが格納された前記第1のデータベースと、前記属性情報を含む第2のデータが格納された第2のデータベースと、に関するメタデータを取得し、取得した前記メタデータに基づいて前記属性情報管理テーブルを作成する、
請求項7に記載のデータアクセス制御方法。
【請求項9】
前記メタデータは、前記第1のデータベースおよび前記第2のデータベースがそれぞれサポートする機能の情報と、前記第1のデータおよび前記第2のデータの所属先のデータベースの情報と、を含む、
請求項8に記載のデータアクセス制御方法。
【請求項10】
前記第1のデータベースおよび前記第2のデータベースは、仮想化レイヤを介して、前記属性情報管理テーブルを作成する前記コンピュータとそれぞれ接続されており、
前記メタデータは、前記仮想化レイヤの情報をさらに含む、
請求項9に記載のデータアクセス制御方法。
【請求項11】
前記第1のデータと前記第2のデータを前記仮想化レイヤを介して結合することで、前記第1のデータベースに前記フィルタリングを実行させる、
請求項10に記載のデータアクセス制御方法。
【請求項12】
前記メタデータは、前記仮想化レイヤを介したデータ結合の有効性および優先度の情報をさらに含む、
請求項11に記載のデータアクセス制御方法。
【請求項13】
予め設定されたアクセス制御ポリシーに基づいて、第1のデータへのアクセス要求に対するルールを取得し、前記第1のデータが格納された第1のデータベースの外部から、前記第1のデータの各レコードの属性に関する属性情報を取得するか否かを選択するポリシー判定部と、
前記属性情報を取得する属性情報取得部と、
前記第1のデータベースに前記ルールに基づく前記第1のデータのフィルタリングを実行させるクエリ部と、
前記アクセス要求に対応する前記第1のデータのレコードを前記第1のデータベースから取得する通信部と、を備え、
前記属性情報取得部は、前記ポリシー判定部が前記属性情報を取得すると選択した場合に前記属性情報を取得し、
前記ポリシー判定部は、前記属性情報取得部が取得した前記属性情報に基づいて前記ルールの評価を行い、
前記クエリ部は、前記ポリシー判定部が前記属性情報を取得しないと選択した場合に前記第1のデータベースに前記フィルタリングを実行させ、
前記通信部は、前記ポリシー判定部による前記ルールの評価結果または前記第1のデータベースにおける前記フィルタリングの実行結果に基づいて、前記アクセス要求に対応する前記第1のデータのレコードを前記第1のデータベースから取得する、
データアクセス制御装置。
【請求項14】
コンピュータに、
予め設定されたアクセス制御ポリシーに基づいて、第1のデータへのアクセス要求に対するルールを取得する第1の処理と、
前記第1のデータが格納された第1のデータベースの外部から、前記第1のデータの各レコードの属性に関する属性情報を取得するか否かを選択する第2の処理と、
前記第2の処理で前記属性情報を取得すると選択された場合、前記属性情報を取得して前記属性情報に基づく前記ルールの評価を行う第3の処理と、
前記第2の処理で前記属性情報を取得しないと選択された場合、前記第1のデータベースに前記ルールに基づく前記第1のデータのフィルタリングを実行させる第4の処理と、
前記第3の処理による前記ルールの評価結果または前記第4の処理による前記フィルタリングの実行結果に基づいて、前記アクセス要求に対応する前記第1のデータのレコードを前記第1のデータベースから取得する第5の処理と、を実行させる、
データアクセス制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データアクセスを制御する方法、装置およびプログラムに関する。
【背景技術】
【0002】
本発明の背景技術を開示する文献として、下記の特許文献1が知られている。特許文献1には、外部のポリシーサービスによって定義されたポリシーに基づいて、特定のコンテクストに従った認証ルールを生成し、この認証ルールをアプリケーション内で評価することにより、各種データベース等のリソースへのアクセスの可否をユーザごとに判定する技術が記載されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願公開第2020/0358823号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来のデータアクセス制御では、ユーザからのアクセス対象となるデータベースの構造によっては、アクセス制御用のポリシーを定義する際に、アクセスを許可または拒否するユーザとデータの組み合わせをデータごとに列挙して記述する必要がある。このような場合、ポリシーの記述が肥大化するとともに、ポリシーに記述すべきユーザとデータの組み合わせがデータベースの更新に応じて日々更新されるため、ポリシーの維持管理が困難になるという問題が生じる。特許文献1に記載の技術では、こうした問題への対処が不十分である。
【0005】
そこで、本発明では、データアクセス制御におけるアクセス制御ポリシーの維持管理を容易とすることを目的とする。
【課題を解決するための手段】
【0006】
本発明によるデータアクセス制御方法は、コンピュータによるデータアクセス制御方法であって、前記コンピュータにより、予め設定されたアクセス制御ポリシーに基づいて、第1のデータへのアクセス要求に対するルールを取得し、前記コンピュータにより、前記第1のデータが格納された第1のデータベースの外部から、前記第1のデータの各レコードの属性に関する属性情報を取得するか否かを選択し、前記属性情報を取得すると選択した場合、前記コンピュータにより、前記属性情報を取得して前記属性情報に基づく前記ルールの評価を行い、前記属性情報を取得しないと選択した場合、前記コンピュータにより、前記第1のデータベースに前記ルールに基づく前記第1のデータのフィルタリングを実行させる指示を行い、前記コンピュータにより、前記ルールの評価結果または前記フィルタリングの実行結果に基づいて、前記アクセス要求に対応する前記第1のデータのレコードを出力する。
本発明によるデータアクセス制御装置は、予め設定されたアクセス制御ポリシーに基づいて、第1のデータへのアクセス要求に対するルールを取得し、前記第1のデータが格納された第1のデータベースの外部から、前記第1のデータの各レコードの属性に関する属性情報を取得するか否かを選択するポリシー判定部と、前記属性情報を取得する属性情報取得部と、前記第1のデータベースに前記ルールに基づく前記第1のデータのフィルタリングを実行させるクエリ部と、前記アクセス要求に対応する前記第1のデータのレコードを出力する通信部と、を備え、前記属性情報取得部は、前記ポリシー判定部が前記属性情報を取得すると選択した場合に前記属性情報を取得し、前記ポリシー判定部は、前記属性情報取得部が取得した前記属性情報に基づいて前記ルールの評価を行い、前記クエリ部は、前記ポリシー判定部が前記属性情報を取得しないと選択した場合に前記第1のデータベースに前記フィルタリングを実行させ、前記通信部は、前記ポリシー判定部による前記ルールの評価結果または前記第1のデータベースにおける前記フィルタリングの実行結果に基づいて、前記アクセス要求に対応する前記第1のデータのレコードを出力する。
本発明によるデータアクセス制御プログラムは、コンピュータに、予め設定されたアクセス制御ポリシーに基づいて、第1のデータへのアクセス要求に対するルールを取得する第1の処理と、前記第1のデータが格納された第1のデータベースの外部から、前記第1のデータの各レコードの属性に関する属性情報を取得するか否かを選択する第2の処理と前記第2の処理で前記属性情報を取得すると選択された場合、前記属性情報を取得して前記属性情報に基づく前記ルールの評価を行う第3の処理と、前記第2の処理で前記属性情報を取得しないと選択された場合、前記第1のデータベースに前記ルールに基づく前記第1のデータのフィルタリングを実行させる第4の処理と、前記第3の処理による前記ルールの評価結果または前記第4の処理による前記フィルタリングの実行結果に基づいて、前記アクセス要求に対応する前記第1のデータのレコードを出力する第5の処理と、を実行させる。
【発明の効果】
【0007】
本発明によれば、アクセス制御ポリシーの維持管理が容易なデータアクセス制御技術を提供することができる。
【図面の簡単な説明】
【0008】
図1】本発明の第1の実施形態に係るデータアクセス制御装置を含むサービス提供システムの構成を示すブロック図である。
図2】データアクセス制御装置のハードウェア構成の一例を示す図である。
図3】クエリサービスおよび認可サービスの機能構成を示す機能ブロック図である。
図4】データベースに格納されるデータの例を示す図である。
図5】本発明の第1の実施形態においてデータカタログに格納されるメタデータテーブルの例を示す図である。
図6】属性情報管理テーブル作成部により作成される属性情報管理テーブルの例を示す図である。
図7】クエリサービスによって実行される処理のフローチャートである。
図8】認可サービスによって実行される処理のフローチャートである。
図9】認可サービスにおいて属性情報管理テーブルを作成する際に実行する処理のフローチャートである。
図10】本発明の第2の実施形態に係るデータアクセス制御装置を含むサービス提供システムの構成を示すブロック図である。
図11】本発明の第2の実施形態においてデータカタログに格納されるメタデータテーブルの例を示す図である。
【発明を実施するための形態】
【0009】
以下、図面を参照して本発明の実施形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。本発明が本実施形態に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。特に限定しない限り、各構成要素は複数でも単数でも構わない。
【0010】
以下の説明では、例えば、「xxx表」や「xxxテーブル」の表現にて各種情報を説明することがあるが、各種情報は表やテーブル以外のデータ構造で表現されていてもよい。各種情報がデータ構造に依存しないことを示すために、「xxx表」や「xxxテーブル」を「xxx情報」と呼ぶことがある。
【0011】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号(又は参照符号における共通部分)を使用し、同種の要素を区別して説明する場合は、要素のID(又は要素の参照符号)を使用することがある。
【0012】
また、以下の説明では、「サービス提供システム」は、1以上の計算機を含むシステムである。このため、「サービス提供システム」は、1つの計算機であってもよいし、複数の計算機であってもよいし、計算機の他に計算機以外のデバイスを含んでいてもよい。その1以上の計算機は、典型的には、少なくとも1つの物理計算機を含む。
【0013】
その1以上の計算機は、少なくとも1つの仮想計算機を含んでもよい。
【0014】
また、以下の説明では、「データアクセス制御装置」や「クライアント」は、一以上の計算機で構成されてよい。
【0015】
以下の説明では、「プログラム」あるいはそのプロセスを主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えば、CPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えば、メモリ)及び/又は通信インタフェース装置(例えば、通信ポート)を用いながら行うため、処理の主語がプロセッサであってもよい。プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。プロセッサを含む装置及びシステムは、これらの機能部を含む装置及びシステムである。
【0016】
また、以下の説明では、「データベース」は、物理的な記憶デバイスを有する計算機を意味し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)を有する計算機でよい。補助記憶デバイスは、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)でよい。データベースに異なる種類の記憶デバイスが混在していてもよい。
【0017】
[第1の実施形態]
以下、本発明の第1の実施形態について説明する。
【0018】
図1は、本発明の第1の実施形態に係るデータアクセス制御装置を含むサービス提供システムの構成を示すブロック図である。図1に示すサービス提供システム1は、ユーザに対して様々なサービスを提供するシステムであり、データアクセス制御装置100、クライアント300、データベース500および510、データカタログ600を備える。サービス提供システム1において、これらの構成要素は、例えばインターネットやLAN(Local Area Network)、WAN(Wide Area Network)等のネットワークを介して互いに接続されている。
【0019】
データアクセス制御装置100は、クエリサービス200および認可サービス400を有する。クエリサービス200は、PC(Personal Computer)等により構成されるクライアント300をユーザが操作することでクライアント300から送信されるリクエストを受信し、そのリクエストの内容に応じたサービスを提供する。例えば、リクエストで指定されたデータ501の一部またはすべてをデータベース500から取得し、リクエストに対するレスポンスとしてクライアント300へ送信する。なお、クエリサービス200におけるリクエストおよびレスポンスは、典型的にはRESTful APIとして定義される。
【0020】
認可サービス400は、クライアント300からリクエストを送信するユーザの属性に応じて、クエリサービス200によるデータ501へのアクセスをユーザごとに制限するための認可処理を提供する。認可サービス400は、データカタログ600から取得するメタデータや、データベース510に格納されたデータ511に基づいて認可処理を実行し、その結果を提供することができる。
【0021】
データベース500は、データ501およびデータ502を格納している。データ501,502は、予め設定された複数のデータ項目からなるレコードを多数まとめてテーブル化した情報であり、それぞれ異なるデータ項目が設定されている。ただし、データ502は必ずしもデータベース500に格納されているとは限らず、サービス提供システム1を実現するためのアプリケーションの設計や運用上の理由により、データ502がデータベース500に格納されていない場合もある。そのため図1のブロック図では、データ502を破線で示している。
【0022】
データベース510は、データ511を格納している。データ511は、データベース500に格納されているデータ501,502と同様に、予め設定された複数のデータ項目からなるレコードを多数まとめてテーブル化した情報であり、データ502と共通のスキーマに基づいてテーブル化されている。典型的にはデータ511がマスターであり、データ502はその複製である。なお、前述のようにデータ502はデータベース500に格納されていない場合もあるが、その場合であっても、認可サービス400がデータベース510にリクエストを送信することで、データ502の代わりにデータ511をデータベース510から取得し、認可処理において利用することが可能である。
【0023】
サービス提供システム1においてデータベース500にデータ502を格納させるか否かは、例えば、データ502とデータ511の整合性を確保するために要するコストと、データベース510からデータ511を取得する際のオーバーヘッドとのトレードオフにより決定される。どちらの設定状態とするかは、サービス提供システム1を実現するためのアプリケーションの設計時または運用開始時に選択されてもよいし、運用中に変更可能としてもよい。
【0024】
データカタログ600は、データベース500,510とこれらに格納されているデータ501,502および511とに関する情報であるメタデータを収集・蓄積する。認可サービス400は、データカタログ600から取得したメタデータを参照することで、データベース510からデータ511を取得するか否かを決定することができる。
【0025】
図2は、データアクセス制御装置100のハードウェア構成の一例を示す図である。図2に示すように、データアクセス制御装置100は、例えばプロセッサ101、メモリ102、ストレージ103、ネットワークI/F(インタフェース)104、コンソール105を備えたコンピュータにより構成される。
【0026】
プロセッサ101は、メモリ102を作業領域に用いてストレージ103に格納された所定のプログラムやアプリケーションを実行することで、図1のクエリサービス200および認可サービス400を実現するための演算処理を行う。ネットワークI/F104は、ネットワーク106を介して図1のクライアント300やデータベース500および510、データカタログ600と接続されており、プロセッサ101の制御に応じて、これらとの間で情報通信を行う。コンソール105は、サービス提供システム1の管理を行う管理者によって使用される入出力装置であり、例えばディスプレイ、マウス、キーボード等により構成される。
【0027】
なお、図2の例では、クエリサービス200および認可サービス400を一つのデータアクセス制御装置100で実現する場合のハードウェア構成例を示したが、これらのサービスを別々のハードウェアにより実現してもよいし、複数のハードウェアを組み合わせてそれぞれ実現してもよい。任意のハードウェア構成により、クライアント300に対してクエリサービス200および認可サービス400を提供するデータアクセス制御装置100を実現可能である。
【0028】
図3は、クエリサービス200および認可サービス400の機能構成を示す機能ブロック図である。図3において、クエリサービス200は、API(Application Programming Interface)通信部201、認証部202、ポリシー実施部203、クエリ生成部204、クエリ変換部205、DB通信部206の各機能ブロックを備える。また、認可サービス400は、ポリシー判定部401、ポリシー管理部403、属性情報取得部404、属性情報管理テーブル作成部406の各機能ブロックを備える。これらの機能ブロックは、例えば図2のプロセッサ101が行う演算処理によってそれぞれ実現される。
【0029】
クエリサービス200において、API通信部201は、クライアント300から送信されるリクエストを受信する。認証部202は、API通信部201が受信したリクエストの認証を実施し、そのリクエストを行ったユーザを特定することで、リクエストの主体を特定する。ポリシー実施部203は、認可サービス400から提供される認可処理の結果に基づき、リクエストの主体に応じたデータ501へのアクセスを許可または拒否するとともに、クエリ変換が必要か否かを判断する。
【0030】
クエリ生成部204は、ポリシー実施部203によりデータ501へのアクセスが許可された場合に、データベース500に対してデータ501の取得を要求するクエリを生成する。クエリ変換部205は、ポリシー実施部203によりクエリ変換が必要と判断された場合に、クエリ生成部204により生成されたクエリの変換を実施する。DB通信部206は、クエリ生成部204により生成され、さらに必要に応じてクエリ変換部205により変換されたクエリをデータベース500に送信することで、リクエストに応じたデータ501のレコードをデータベース500から抽出して取得する。DB通信部206が取得したレコードは、API通信部201により、リクエストに対するレスポンスとしてクライアント300へ送信される。
【0031】
認可サービス400において、ポリシー管理部403は、ポリシー判定部401において実行される認可処理に用いられるアクセス制御ポリシー402の管理を行う。アクセス制御ポリシー402は、クライアント300を用いてデータ501にアクセスする様々なユーザ(主体)に対して、データ501に含まれる複数のレコードのうちどのレコードへのアクセスを許可するかを主体ごとに規定するためのルールを示す情報であり、例えばXACML(eXtensible Access Control Markup Language)等の所定のファイル形式により予め設定されたものがデータアクセス制御装置100に記憶されている。ポリシー管理部403は、例えば図2のストレージ103に記憶保持されているアクセス制御ポリシー402を取得し、ポリシー判定部401へ出力する。
【0032】
属性情報取得部404は、データベース510に格納されているデータ511から、データ501の各レコードの属性に関する属性情報を必要に応じて取得する。なお、データ511と共通のデータ502がデータベース500に格納されている場合、属性情報取得部404はデータ511から属性情報を取得しなくてもよい。
【0033】
属性情報管理テーブル作成部406は、データカタログ600に格納されているメタデータテーブル601を取得し、これに基づいて属性情報管理テーブル405を作成する。メタデータテーブル601は、前述のメタデータをテーブル化したものであり、データベース500,510を含む様々なデータベースがサポートする機能の情報や、各データベースが格納しているデータの情報を含んでいる。属性情報管理テーブル作成部406は、データ501,502,511に関する情報をメタデータテーブル601から抽出して取得することで、これらのデータの格納先を示す属性情報管理テーブル405を作成することができる。なお、属性情報管理テーブル405の詳細については後述する。
【0034】
ポリシー判定部401は、ポリシー管理部403から出力されるアクセス制御ポリシー402と、属性情報取得部404により取得される属性情報と、属性情報管理テーブル作成部406により作成される属性情報管理テーブル405とに基づき、クライアント300からのリクエストに対する認可処理を行う。この認可処理では、リクエストに対してデータ501のアクセスを許可するか否か、許可する場合にはデータ501のうちどのレコードへのアクセスを許可するかなどの判定を行う。ポリシー判定部401による認可処理の結果は、クエリサービス200のポリシー実施部203へ送信される。
【0035】
図4は、データベース500,510にそれぞれ格納されるデータ501,502,511の例を示す図である。データベース500には、例えば図4に示すデータ構造の受注伝票テーブルと顧客テーブルがデータ501,502としてそれぞれ格納され、データベース510には、データ502と同一構造の顧客テーブルがデータ511として格納される。これらのデータは複数のレコードによりそれぞれ構成されており、各レコードのフィールドには、当該フィールドに対応するカラムごとに設定されたデータ項目の値がそれぞれ格納される。例えばデータ501の受注伝票テーブルでは、各レコードを構成する複数のフィールドに対して、「伝票No.」、「受注先」、「受注日」等のデータ項目に対応する値がそれぞれ格納され、データ502,511の顧客テーブルでは、各レコードを構成する複数のフィールドに対して、「顧客No.」、「顧客名」、「担当者」等のデータ項目に対応する値がそれぞれ格納される。これらのデータ項目のうち、「受注先」と「顧客No.」は対応関係を有しており、この対応関係により、データ501の各レコードとデータ502,511の各レコードとが互いに紐付けられている。
【0036】
属性情報取得部404は、上記の紐付けにより、データ501の各レコードの属性に関する属性情報として、データ502から必要な情報を抽出して取得することができる。例えば、データ501において「受注先」の値が「CUS001」であるレコード521に対して、「顧客No.」の値が同じ「CUS001」であるレコード522をデータ502から抽出し、このレコード522の各フィールドの値をレコード521の属性情報として取得することができる。
【0037】
図5は、本発明の第1の実施形態においてデータカタログ600に格納されるメタデータテーブル601の例を示す図である。前述のとおり、データベース500,510にそれぞれ格納されるデータ502およびデータ511は、共通のスキーマに基づいてテーブル化されたものであるが、アプリケーションの設計や運用上の理由により、データ502がデータベース500に存在しない場合がある。そのため、メタデータをテーブル化したメタデータテーブル601の構成は、データ502が存在するか否かに応じて異なるものとなる。図5の例では、データ502が存在する場合のメタデータテーブル601の例をメタデータテーブル601Aとし、データ502が存在しない場合のメタデータテーブル601の例をメタデータテーブル601Bとして、それぞれ示している。
【0038】
メタデータテーブル601Aとメタデータテーブル601Bとの違いは、データ502の特徴や所属先を示すレコード611の有無である。すなわち、データ502が存在する場合のメタデータテーブル601Aは、データ502のメタデータを表すレコード611を含んで構成されているが、データ502が存在しない場合のメタデータテーブル601Bは、データ502のメタデータを表すレコード611を含んでいない。
【0039】
図6は、属性情報管理テーブル作成部406により作成される属性情報管理テーブル405の例を示す図である。図5で説明したように、メタデータテーブル601の構成は、データ502が存在するか否かに応じて異なるものとなる。そのため、メタデータテーブル601に基づいて作成される属性情報管理テーブル405の構成も同様に、データ502が存在するか否かに応じて異なるものとなる。図6の例では、データ502が存在する場合の属性情報管理テーブル405の例を属性情報管理テーブル405Aとし、データ502が存在しない場合の属性情報管理テーブル405の例を属性情報管理テーブル405Bとして、それぞれ示している。
【0040】
属性情報管理テーブル405Aと属性情報管理テーブル405Bでは、データ502とデータ511にそれぞれ対応するレコード411A,411Bの内容が異なる。すなわち、データ502が存在する場合の属性情報管理テーブル405Aでは、データ502に基づく属性情報の格納先や取得方法がレコード411Aに記録されており、データ502が存在しない場合の属性情報管理テーブル405Bでは、データ511に基づく属性情報の格納先や取得方法がレコード411Bに記録されている。
【0041】
具体的には、図6の属性情報管理テーブル405Aにおいて、レコード411Aの「配置場所」と「機能」にそれぞれ格納された「DB01」および「SQL」は、当該属性情報を含むデータ502がデータベース500に格納されており、当該属性情報をSQL命令により取得可能であることを表している。また、属性情報管理テーブル405Bにおいて、レコード411Bの「配置場所」と「機能」にそれぞれ格納された「SV02」および「REST」は、当該属性情報をRESTful APIで定義されるサービスにより取得可能であることを表している。
【0042】
さらに、属性情報管理テーブル405A,405Bにおいて、各レコードの「アクセスパス」には、データベース500,510の中で属性情報の取得先を一意に特定するための記述子がそれぞれ格納されている。具体的には、属性情報管理テーブル405Aの各レコードや、属性情報管理テーブル405Bにおいてレコード411Bを除く各レコードでは、データ501,502のテーブル名とカラム名を連結したものが「アクセスパス」に格納され、属性情報管理テーブル405Bのレコード411Bでは、RESTful APIのリクエストで指定されるパスパラメータが「アクセスパス」に格納されている。
【0043】
属性情報管理テーブル405Aは、例えばサービス提供システム1の管理者がメタデータテーブル601Aを参照し、データ502をアクセス主体の属性情報として選択することにより生成される。一方、属性情報管理テーブル405Bは、例えばサービス提供システム1の管理者がメタデータテーブル601Bを参照し、データ511をアクセス主体の属性情報として選択することにより生成される。
【0044】
続いて、データアクセス制御装置100が行う処理の詳細について、フローチャートを参照して以下に説明する。
【0045】
図7は、データアクセス制御装置100のクエリサービス200によって実行される処理のフローチャートである。クエリサービス200は、データ501へのアクセスを指示するリクエストがクライアント300から送信されると、図7のフローチャートに示す処理を開始する(ステップS700)。
【0046】
API通信部201は、クライアント300からリクエストを受信する(ステップS702)。このリクエストには、データ501を構成する複数のレコードのうちどのレコードを取得するかを表す情報が含まれている。例えば、データ501において「伝票No.」の値が「ORD001」であるレコードを取得するリクエストは、「GET /orders/ORD001 HTTP/1.1」のように記載される。
【0047】
認証部202は、ステップS702でAPI通信部201が受信したリクエストに含まれるクレデンシャルまたはトークンを取り出し、これを用いてリクエストの認証を行う(ステップS704)。例えば、受信したリクエストがHTTPに基づくAPIであれば、典型的には当該リクエストのヘッダフィールドにクレデンシャルまたはトークンが含まれている。ステップS704でリクエストの認証に成功すると、クエリサービス200は、そのリクエストを送信したユーザ(主体)を特定することができる。
【0048】
ステップS704で行われる認証には、例えばBasic認証やJWT認証などを用いることができる。具体的な認証の実行方法としては、例えばBasic認証であればクレデンシャルが含むパスワードのチェックであり、JWT認証であればトークンの署名の検証である。このように、認証方式によってステップS704の処理内容は異なり得るが、いずれの場合であっても、リクエストの主体を特定できれば認証は成功である。ステップS704でリクエストの主体を特定できた場合は、認証に成功したと判定し(ステップS706:Yes)、ステップS708に進む。一方、ステップS704でリクエストの主体を特定できなかった場合は、認証に失敗したと判定し(ステップS706:No)、ステップS710に進む。
【0049】
認証に成功した場合、ポリシー実施部203は、ステップS704で認証部202が特定した主体の情報と、受信したリクエストから取り出した操作および資源の情報とを、認可リクエストとしてポリシー判定部401に送信する(ステップS708)。一方、認証に失敗した場合、API通信部201は、認証が失敗したことをクライアント300に通知し(ステップS710)、図7のフローチャートに示す処理を終了する。
【0050】
ステップS708でポリシー実施部203から送信される認可リクエストを受信すると、ポリシー判定部401は認可処理を行い、その結果を認可レスポンスとしてポリシー実施部203に送信する。ポリシー実施部203は、ポリシー判定部401から送信される認可レスポンスを受信する(ステップS712)。
【0051】
ポリシー実施部203は、ステップS712でポリシー判定部401から受信した認可レスポンスの内容に基づき、ステップS702でAPI通信部201がクライアント300から受信したリクエストに対して、データ501へのアクセスを許可するか否かを判断する(ステップS714)。ポリシー判定部401においてデータ501へのアクセスを許可すると判定され、その判定結果を示す認可レスポンスをステップS714で受信した場合は、アクセスを許可すると判定し(ステップS714:Yes)、ステップS716に進む。一方、ポリシー判定部401においてデータ501へのアクセスを拒否すると判定され、その判定結果を示す認可レスポンスをステップS714で受信した場合は、アクセスを拒否すると判定し(ステップS714:No)、ステップS718に進む。
【0052】
データ501へのアクセスを許可する旨の認可レスポンスをポリシー判定部401から受信した場合、クエリ生成部204は、ステップS702でAPI通信部201がクライアント300から受信したリクエストに対して、データベース500に格納されているデータ501から所望のレコードを取得するためのクエリを生成する(ステップS716)。例えば、データベース500がクエリ言語としてSQLを使用するデータベースであり、データ501において「伝票No.」の値が「ORD001」であるレコードを取得するリクエストがクライアント300から送信された場合、これをデータベース500に対して指示するクエリは、「select * from orders where 伝票No = 'ORD001';」のように記載される。これにより、クエリサービス200において、クライアント300からのデータ501へのアクセス要求に応じたクエリが生成される。一方、データ501へのアクセスを拒否する旨の認可レスポンスをポリシー判定部401が受信した場合、API通信部201は、データ501へのアクセスが拒否されたことをクライアント300に通知し(ステップS718)、図7のフローチャートに示す処理を終了する。
【0053】
ステップS716でクエリ生成部204によりクエリが生成されると、クエリ変換部205は、クエリ変換が必要か否かを判定する(ステップS720)。ここでは、ステップS712でポリシー実施部203がポリシー判定部401から受信した認可レスポンスに基づき、クエリ変換の有無を判定する。すなわち、受信した認可レスポンスがクエリ変換指示を含む場合、クエリ変換部205はクエリ変換が必要と判定し(ステップS720:Yes)、ステップS722の処理を実行する。一方、受信した認可レスポンスがクエリ変換指示を含まない場合、クエリ変換部205はクエリ変換が不要と判定し(ステップS720:No)、ステップS722の処理を実行せずにステップS724へ進む。
【0054】
クエリ変換が必要と判定した場合、クエリ変換部205は、ステップS716でクエリ生成部204が生成したクエリを、データベース500に格納されているデータ501とデータ502を結合してフィルタリングさせるためのクエリに変換する(ステップS722)。例えば、ステップS704の認証で特定されたユーザ(主体)に対応する「担当者」の値が「1001」である場合、前述の例で示したSQLによるクエリを変換したクエリは、「select * from orders inner join customers on (orders.受注先 = customers.顧客No) where customers.担当者 = '1001’ and orders.伝票No = 'ORD001';」のように記載される。これにより、クエリサービス200において、ステップS716でリクエストに応じて生成したクエリから、アクセス対象のデータ501と、データ501の属性情報を含むデータ502とを結合し、アクセス制御ポリシー402に記載されたルールに基づくフィルタリングをデータベース500に実行させるためのクエリが生成される。
【0055】
DB通信部206は、ステップS716でクエリ生成部204が生成したクエリ(ステップS722の処理を実行していない場合)、または、クエリ生成部204が生成したクエリをステップS722でクエリ変換部205が変換することにより生成された変換後のクエリを、データベース500に送信する(ステップS724)。
【0056】
DB通信部206は、ステップS724で送信したクエリに応答してデータベース500が出力するデータ501のレコードを取得する(ステップS726)。API通信部201は、ステップS726でDB通信部206が取得したデータ501のレコードを、ステップS702で受信したリクエストに対するレスポンスとして出力し、クライアント300に送信する(ステップS728)。API通信部201がリクエストに対するレスポンスをクライアント300に送信したら、クエリサービス200は図7の処理フローを終了する。
【0057】
図8は、データアクセス制御装置100の認可サービス400によって実行される処理のフローチャートである。認可サービス400は、図7のステップS708でポリシー実施部203から認可リクエストが送信されると、図8のフローチャートに示す処理を開始する(ステップS800)。
【0058】
ポリシー判定部401は、クエリサービス200のポリシー実施部203から認可リクエストを受信する(ステップS802)。この認可リクエストには前述のように、クエリサービス200がクライアント300から受信したリクエストにおける主体、操作、資源の情報が含まれている。
【0059】
ポリシー判定部401は、ステップS802で受信した認可リクエストから、主体、操作、資源の各情報を取り出す。また、ポリシー管理部403からアクセス制御ポリシー402を取得し、アクセス制御ポリシー402に規定されているルールを抽出することで、クライアント300から行われたデータ501へのアクセス要求に対するルールを取得する(ステップS804)。
【0060】
ポリシー判定部401は、ステップS804で認可リクエストから取り出した主体、操作、資源の各情報と、ステップS804で抽出したルールとを比較し、当該操作に対するルールの評価に、当該資源に含まれている属性情報とは別の属性情報が必要であるか否かを判定する(ステップS806)。ここでは例えば以下のようにして、別の属性情報が必要か否かの判定が行われる。
【0061】
前述のように、データ501において「伝票No.」の値が「ORD001」であるレコードを取得するリクエストがクライアント300から送信され、このリクエストに対する認可リクエストをクエリサービス200から受信したとする。また、アクセス制御ポリシー402に規定されているルールが、当該リクエストで指定されたレコードの「受注先」の値と、クライアント300により当該リクエストを送信したユーザに割り当てられた担当者番号に対応する「顧客No.」の値との一致であるとする。このような場合、当該ルールを評価するためには、資源であるデータ501とは別のデータ502,511に含まれる属性情報である「担当者」の値を用いて、リクエストを送信したユーザの属性を判断する必要がある。そのため、このような場合はステップS806において別の属性情報が必要であると判定する。一方、別のデータ間でのレコードの比較がルールの評価において必要でない場合は、ステップS806において別の属性情報が不要であると判定し、ステップS820に進む。なお、上記の例はあくまで一例であり、様々なルールについて、その評価にあたって資源に含まれている属性情報とは別の属性情報が必要か否かを、ステップS806において判定することが可能である。
【0062】
ステップS806の判定の結果、別の属性情報が必要であると判定した場合(ステップS806:Yes)はステップS808に進み、不要であると判定した場合(ステップS806:No)はステップS820に進む。
【0063】
ステップS806で別の属性情報が必要であると判定した場合、ポリシー判定部401は、属性情報管理テーブル作成部406により作成された属性情報管理テーブル405を参照し、当該属性情報の配置場所とその機能の情報を属性情報管理テーブル405から取得する(ステップS808)。例えば前述の例では、属性情報管理テーブル405Aのレコード411A、または、属性情報管理テーブル405Bのレコード411Bを参照することで、ルールの評価に必要な属性情報の配置場所として、データベース500に格納されているデータ502を示す情報、または、データベース510に格納されているデータ511を示す情報を取得することができる。さらに、この属性情報の配置場所の機能として、データベース500がサポートする機能の情報、または、データベース510がサポートする機能の情報を取得することができる。
【0064】
ポリシー判定部401は、ステップS804で抽出したルールの条件部に示された内容が、属性と属性の比較であるか否かを判定する(ステップS810)。例えば前述のように、当該リクエストで指定されたレコードの「受注先」の値と、クライアント300により当該リクエストを送信したユーザに割り当てられた担当者番号に対応する「顧客No.」の値とが一致するというルールの場合、このルールの条件部には、データ501の「受注先」の値が示す属性と、データ502,511の「顧客No.」の値が示す属性とを比較することが記述される。したがってこの場合は、ルールの条件部に示された内容が属性と属性の比較であると判定し(ステップS810:Yes)、ステップS812に進む。一方、ルールの条件部に示された内容が属性と属性の比較ではないと判定した場合(ステップS810:No)は、ステップS818に進む。
【0065】
ポリシー判定部401は、ステップS808で属性情報管理テーブル405から取得した配置場所の情報に基づき、ルールの評価で比較する属性情報の配置場所が同一であるか否かを判定する(ステップS812)。例えば前述のように、属性情報管理テーブル405Aのレコード411Aを参照することで、ルールの評価に必要な属性情報の配置場所がデータ501の格納先と同一のデータベース500であるという情報を取得した場合は、配置場所が同一であると判定し(ステップS812:Yes)、ステップS814に進む。一方、配置場所が同一ではないと判定した場合(ステップS812:No)は、ステップS818に進む。
【0066】
ポリシー判定部401は、ステップS808で属性情報管理テーブル405から取得した配置場所の機能の情報に基づき、ルールの評価で比較する属性情報の配置場所の機能が複数のデータテーブルを結合する結合クエリをサポートしているか否かを判定する(ステップS814)。例えば前述のように、属性情報管理テーブル405Aのレコード411Aを参照することで、ルールの評価に必要な属性情報の配置場所であるデータベース500が、結合クエリを使用可能なSQLによって動作するという情報を取得した場合は、結合クエリをサポートしていると判定し(ステップS814:Yes)、ステップS816に進む。一方、結合クエリをサポートしていないと判定した場合(ステップS814:No)は、ステップS818に進む。
【0067】
ステップS810、S812、S814の全ての判定結果が肯定判定である場合、ポリシー判定部401は、ステップS804で抽出したルールから、クエリサービス200に対するクエリ変換指示を生成する(ステップS816)。ここでは、図7のステップS716でクエリ生成部204により生成されるクエリを、ルールに応じた結合クエリを含む前述のようなクエリへと変換するように、クエリ変換指示を生成する。これにより、データ501とデータ502を結合してルールに基づくフィルタリングをデータベース500に実行させるように、クエリサービス200に対する指示を行う。ステップS816でクエリ変換指示を生成したら、ステップS822に進む。
【0068】
ステップS810、S812、S814のいずれかの判定結果が否定判定である場合、ポリシー判定部401は、ステップS808で取得した情報に基づき、ルールの評価に必要な属性情報を取得する(ステップS818)。ここでは例えば、属性情報管理テーブル405Bのレコード411Bを参照して得られた情報に基づき、データベース510からデータ511を読み出して属性情報を取得する。
【0069】
ステップS818を実行した場合、またはステップS806の判定結果が否定判定である場合、ポリシー判定部401は、ステップS804で抽出したルールを評価する(ステップS820)。ここで、ステップS818を実行した場合は、ステップS804で認可リクエストから取得した主体、操作、資源の各情報とともに、ステップS818で取得した属性情報を用いて、ルールの評価を行う。一方、ステップS806で別の属性情報が不要であると判定した場合は、ステップS804で認可リクエストから取得した主体、操作、資源の各情報に基づき、ルールの評価を行う。これにより、クエリサービス200から受信した認可リクエストに対して、データ501へのアクセスを許可するか否かの判定を行う。ステップS820でルールを評価できたら、ステップS822に進む。
【0070】
ポリシー判定部401は、ステップS802で受信した認可リクエストに対する認可レスポンスをクエリサービス200に送信する(ステップS822)。この認可レスポンスには、ステップS816で生成したクエリ変換指示、またはステップS820で行ったルールの評価結果のいずれかが含まれる。ポリシー判定部401が認可レスポンスを送信したら、認可サービス400は図8の処理フローを終了する。
【0071】
なお、クエリサービス200において、ポリシー実施部203は、図8のステップS822でポリシー判定部401から送信される認可レスポンスを、図7のステップS712で受信する。これにより、クエリサービス200はステップS714以降の処理に進むことができる。
【0072】
図9は、データアクセス制御装置100の認可サービス400において、属性情報管理テーブル作成部406が属性情報管理テーブル405を作成する際に実行する処理のフローチャートである。属性情報管理テーブル作成部406は、認可サービス400において図8の処理が実行されるよりも前に、所定のタイミングで図9のフローチャートに示す処理を開始する(ステップS900)。
【0073】
属性情報管理テーブル作成部406は、データカタログ600からメタデータを取得する(ステップS902)。ここでは、図5に例示したメタデータテーブル601Aまたはメタデータテーブル601Bをデータカタログ600から読み出すことにより、メタデータを取得する。
【0074】
属性情報管理テーブル作成部406は、ステップS902で取得したメタデータのいずれかを選択する(ステップS904)。ここでは、メタデータテーブル601A,601Bのいずれかのレコードを選択することで、メタデータの選択を行う。
【0075】
属性情報管理テーブル作成部406は、ステップS904で選択したメタデータに含まれる属性情報の格納先および取得方法を特定する(ステップS906)。ここでは例えば、選択したレコードに含まれる各項目の内容から、当該メタデータが表す属性情報を含むデータの識別名や、そのデータが格納されているデータベースや、そのデータベースの機能などを特定することで、属性情報の格納先と取得方法を特定することができる。あるいは、サービス提供システム1の管理者によって入力された情報から、属性情報の格納先と取得方法を特定してもよいし、これらの特定方法を組み合わせてもよい。これ以外にも、任意の方法で属性情報の格納先および取得方法を特定することが可能である。
【0076】
属性情報管理テーブル作成部406は、ステップS906で取得した属性情報の格納先および取得方法に基づき、当該属性情報に関する情報を表すレコードである属性情報レコードを作成し、属性情報管理テーブル405Aまたは属性情報管理テーブル405Bに格納する(ステップS908)。
【0077】
ステップS908で属性情報レコードを属性情報管理テーブル405A,405Bに格納したら、属性情報管理テーブル作成部406は、ステップS904において全てのメタデータを選択済みであるか否かを判定する(ステップS910)。メタデータテーブル601A,601Bにおいて全てのレコードを選択済みである場合は、全てのメタデータを選択済みであると判定し(ステップS910:Yes)、図9の処理フローを終了する。一方、メタデータテーブル601A,601Bにおいて未選択のレコードが存在する場合は、全てのメタデータを選択済みではないと判定し(ステップS910:No)、ステップS904に戻ってメタデータの選択を継続する。
【0078】
属性情報管理テーブル作成部406は、以上説明した処理を実行することにより、メタデータテーブル601Aから属性情報管理テーブル405A、またはメタデータテーブル601Bから属性情報管理テーブル405Bを作成することができる。
【0079】
以上説明した本発明の第1の実施形態によれば、以下の作用効果を奏する。
【0080】
(1)データアクセス制御装置100は、予め設定されたアクセス制御ポリシー402に基づいて、データ501へのアクセス要求に対するルールを取得し(ステップS804)、データ501が格納されたデータベース500の外部から、データ501の各レコードの属性に関する属性情報を取得するか否かを選択する(ステップS810~S814)。その結果、属性情報を取得すると選択した場合(ステップS810:No、ステップS812:No、またはステップS814:No)、属性情報を取得して(ステップS818)属性情報に基づくルールの評価を行い(ステップS820)、属性情報を取得しないと選択した場合(ステップS810,S812,S814:Yes)、データベース500にルールに基づくデータ501のフィルタリングを実行させる(ステップS816,S722,S724)。そして、ステップS820で行ったルールの評価結果、またはデータベース500によるフィルタリングの実行結果に基づいて、アクセス要求に対応するデータ501のレコードをデータベース500から取得する(ステップS726)。このようにしたので、アクセス制御ポリシー402で規定されたルールの評価に必要な情報がデータベース500に格納されているか否かに関わらず、ルールの評価を確実に行うことができる。したがって、アクセス制御ポリシーの維持管理が容易なデータアクセス制御技術を提供することが可能となる。
【0081】
(2)データアクセス制御装置100は、データベース500に属性情報を含むデータ502が格納されている場合(ステップS812:Yes)、データベース500の外部から属性情報を取得しないと選択し、データベース500にデータ502が格納されていない場合(ステップS812:No)、データベース500の外部から属性情報を取得すると選択する。このようにしたので、データ502の有無に応じて、データベース500の外部から属性情報を取得するか否かを適切に選択することができる。
【0082】
(3)データアクセス制御装置100は、データベース500の外部から属性情報を取得しないと選択した場合、データ501とデータ502を結合することで、データベース500にフィルタリングを実行させる(ステップS816,S722,S724)。このようにしたので、データアクセス制御装置100においてルールの評価を行う必要がないため、データ501へのアクセス時のオーバーヘッドを低減し、高速なアクセス制御を実現することが可能となる。
【0083】
(4)ただし、データベース500にデータ502が格納されている場合であっても、データベース500においてデータ501とデータ502を結合できない場合(ステップS814:No)は、データベース500の外部から属性情報を取得すると選択する。このようにしたので、データベース500が複数のデータテーブルを結合する機能を有していない場合でも、ルールの評価を確実に行うことができる。
【0084】
(5)データアクセス制御装置100は、例えばコンピュータであるプロセッサ101により、アクセス要求に応じたクエリを生成するクエリサービス200と、アクセス要求に対してアクセス制御ポリシー402に基づく認可処理を行う認可サービス400とを提供する。認可サービス400では、ポリシー判定部401により、データベース500の外部から属性情報を取得するか否かを選択する(ステップS810~S814)。そして、属性情報を取得すると選択した場合、属性情報の取得およびルールの評価を行い(ステップS818,S820)、属性情報を取得しないと選択した場合、データベース500にフィルタリングを実行させるためのクエリをクエリサービス200から出力させるようにする(ステップS816,S722,S724)。このようにしたので、コンピュータを用いてデータアクセス制御装置100を実現することができる。
【0085】
(6)クエリサービス200では、クエリ変換部205により、認可サービス400からの指示に応じて、クエリ生成部204が生成したクエリをデータベース500にフィルタリングを実行させるためのクエリに変換する(ステップS722)。そして、DB通信部206により、データベース500に出力する(ステップS724)。このようにしたので、ルールに基づくデータ501のフィルタリングを、データベース500に確実に実行させることができる。
【0086】
(7)データアクセス制御装置100は、属性情報の配置場所とその機能を示す属性情報管理テーブル405を参照して(ステップS808)、データベース500の外部から属性情報を取得するか否かを選択する。このようにしたので、データベース500の外部から属性情報を取得するか否かの選択を、確実かつ容易に行うことができる。
【0087】
(8)データアクセス制御装置100は、属性情報管理テーブル作成部406により、データ501が格納されたデータベース500と、属性情報を含むデータ502,511が格納されたデータベース500,510とに関するメタデータを、メタデータテーブル601A,601Bから取得する(ステップS902,S904)。そして、取得したメタデータに基づいて属性情報管理テーブル405A,405Bを作成する(ステップS906,S908)。このようにしたので、属性情報の配置場所とその機能を示す属性情報管理テーブルを、確実かつ容易に作成することができる。
【0088】
(9)属性情報管理テーブル405A,405Bの作成に用いられるメタデータは、図5のメタデータテーブル601A,601Bの各レコードに例示するように、データベース500およびデータベース510がそれぞれサポートする機能の情報と、データ501およびデータ511の所属先のデータベースの情報とを含む。このようにしたので、属性情報管理テーブル405A,405Bを作成するのに必要な情報を、メタデータから確実に取得することができる。
【0089】
[第2の実施形態]
次に、本発明の第2の実施形態について説明する。以下では、第1の実施形態との相違点を主に説明し、第1の実施形態との共通点については、特に必要のない限りは、その説明を省略または簡略する。
【0090】
本実施形態では、データベース500とデータベース510が仮想化レイヤを介してデータアクセス制御装置100にそれぞれ接続されている例を説明する。
【0091】
図10は、本発明の第2の実施形態に係るデータアクセス制御装置を含むサービス提供システムの構成を示すブロック図である。図10に示すサービス提供システム1Aは、第1の実施形態で説明した図1のサービス提供システム1と同様に、データアクセス制御装置100、クライアント300、データベース500および510、データカタログ600を備える。本実施形態では、データベース500,510が仮想化レイヤ700を介してデータアクセス制御装置100にそれぞれ接続されている点と、データカタログ600にメタデータテーブル602が格納されている点が、第1の実施形態と異なっている。仮想化レイヤ700は、別々のデータベース500,510に格納されているデータ501,502,511が、あたかも単一のデータベースに格納されているかのように、データアクセス制御装置100がデータベース500,510に対してクエリを発行できるインタフェースを提供する。
【0092】
図11は、本発明の第2の実施形態においてデータカタログ600に格納されるメタデータテーブル602の例を示す図である。図11に示すメタデータテーブル602は、第1の実施形態で説明した図5のメタデータテーブル601A,601Bと比べて、仮想化レイヤ700の情報を示すレコード612が追加されている。また、メタデータテーブル602の各レコードのうち、データ501,502,511のレコードでは、接続先が仮想化レイヤ700であることを示す情報がカラム613に追加されている。
【0093】
本実施形態では、属性情報管理テーブル作成部406において、メタデータテーブル602に基づいて属性情報管理テーブル405を作成する。このとき、データ511に基づく属性情報の格納先や取得方法を示すレコードにおいて、仮想化レイヤ700の情報を含めるように、属性情報管理テーブル405が作成される。
【0094】
また本実施形態では、クエリサービス200は、図7のステップS722において、ステップS716でクエリ生成部204が生成したクエリを、データ501とデータ511を仮想化レイヤ700を介して結合することで、アクセス制御ポリシー402に記載されたルールに基づくフィルタリングをデータベース500に実行させるためのクエリに変換する。これにより、データ501とデータ511が異なるデータベース500,510に格納されていても、これらのデータを結合し、ルールに基づくフィルタリングを実行することが可能となる。
【0095】
以上説明したように、本実施形態のサービス提供システム1Aにおいて、データベース500およびデータベース510は、仮想化レイヤ700を介して、属性情報管理テーブル405を作成するコンピュータであるデータアクセス制御装置100とそれぞれ接続されている。また、データカタログ600に格納されたメタデータテーブル602は、仮想化レイヤ700の情報をさらに含む。データアクセス制御装置100は、データ501とデータ511を仮想化レイヤ700を介して結合することで、データベース500にフィルタリングを実行させる。このようにしたので、データ501とデータ511が異なるデータベース500,510に格納されていても、これらのデータを結合し、ルールに基づくフィルタリングを実行することができる。
【0096】
なお、メタデータテーブル602の各レコードにおいて、仮想化レイヤ700を介したデータ結合の有効性を示す情報や、データ結合の優先度の情報をさらに含めるようにしてもよい。このようにすれば、異なるデータベース間での仮想化レイヤ700を介したデータ結合によるフィルタリングを実行するか否かを、データごとにさらに適切に判断することが可能となる。
【0097】
本発明は上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲内で、任意の構成要素を用いて実施可能である。例えば、図3に示したクエリサービス200や認可サービス400の各機能ブロックを、それぞれ異なるハードウェアにより実現してもよい。あるいは、いずれかの機能ブロックをクライアント300に含めてもよいし、データベース500やデータベース510に含めてもよい。さらに、図3の各機能ブロックの一部または全部を、FPGA(Field-Programmable Gate Array)等のハードウェアにより実現してもよい。
【0098】
以上説明した実施形態や変形例はあくまで一例であり、発明の特徴が損なわれない限り、本発明はこれらの内容に限定されるものではない。また、上記では種々の実施形態や変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【符号の説明】
【0099】
1,1A…サービス提供システム、100…データアクセス制御装置、101…プロセッサ、102…メモリ、103…ストレージ、104…ネットワークI/F、105…コンソール、106…ネットワーク、200…クエリサービス、201…API通信部、202…認証部、203…ポリシー実施部、204…クエリ生成部、205…クエリ変換部、206…DB通信部、300…クライアント、400…認可サービス、401…ポリシー判定部、402…アクセス制御ポリシー、403…ポリシー管理部、404…属性情報取得部、405…属性情報管理テーブル、406…属性情報管理テーブル作成部、500…データベース、501,502…データ、510…データベース、511…データ、600…データカタログ、601,602…メタデータテーブル、700…仮想化レイヤ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11