A.実施例:
A−1:複合機の構成
次に、本明細書の技術の実施の形態を実施例に基づき説明する。図1は、本実施例の画像処理装置としての複合機100の構成を示すブロック図である。
複合機100は、複合機100のコントローラとしてのCPU110と、RAMなどの揮発性記憶装置120と、ハードディスクドライブやEEPROMなどの不揮発性記憶装置130と、所定の方式(例えば、インクジェット方式、レーザー方式)で画像を印刷する装置であるプリンタ部140と、イメージセンサを用いて、光学的に原稿を読み取ることによってスキャンデータを生成する装置であるスキャナ部150と、タッチパネルやボタンなどの操作部160と、タッチパネルと重畳された液晶パネルなどの表示部170と、ユーザの端末装置500などの外部装置とネットワークLNTを介して通信を行うためのネットワークインターフェース(IF)280と、ファクシミリの送受信に用いられる電話回線IF290と、を備えている。
不揮発性記憶装置130は、コンピュータプログラムPGとデータベースDBとを格納している。コンピュータプログラムPGは、例えば、複合機100の製造時に、予め不揮発性記憶装置130に記憶されている。これに代えて、コンピュータプログラムPGは、CD−ROMやDVD−ROMなどに格納された形態、または、ネットワークLNTを介して複合機100に接続されたサーバ(図示省略)からダウンロードされる形態で提供される。揮発性記憶装置120は、例えば、CPU110が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域として用いられる。
データベースDBは、複合機100の制御に利用される各種のデータをそれぞれ含む複数個のデータテーブルを格納している。データベースDBは、SQL(Structured Query Language)で記述されるクエリを用いてアクセスされる。データベースDBに含まれる各種のデータは、例えば、後述するアプリケーションが、特定の処理(PC印刷処理、FAX処理、スキャン処理など)を実行するために利用されるデータ、ユーザによって設定された設定情報、初回起動時や出荷時に予め格納されるデフォルトのデータなどを含む。
データベースDBに格納される複数個のデータテーブルは、システムテーブルと、一般テーブルと、を含む。図2は、システムテーブルの一例を示す図である。図3は、一般テーブルの一例を示す図である。各データテーブルは、1個以上の項目をそれぞれ含む1個以上のレコードを含んでいる。図2、図3に示す各テーブルの1行分のデータ、例えば、図2(A)の破線Ra1で示すデータは、1個のレコードを示している。
システムテーブルは、具体的には、図2(A)のユーザテーブルUTと、図2(B)のグループテーブルGTと、図2(C)のアクセス権限テーブルATと、を含む。
ユーザテーブルUTは、ユーザ情報をユーザごとに格納するテーブルである。ユーザテーブルUTの各レコードは、項目として、ユーザ名と、パスワードと、ユーザを識別するユーザIDと、グループIDと、を含んでいる。ユーザ名とパスワードとは、ユーザの認証情報である。グループIDは、1以上のユーザが属するグループを識別するIDである。ユーザテーブルUTは、デフォルトユーザDUのレコードと、一般ユーザAUのレコードと、を含んでいる。デフォルトユーザDUは、管理ユーザ(ユーザ名「admin」)と、パブリックユーザ(ユーザ名「public」)と、システムユーザ(ユーザ名「system1」など)と、を含む。
パブリックユーザは、ユーザテーブルUTに登録されていないユーザである。例えば、複合機100にログインしているユーザがいない状態で、操作部160を介して入力されたスキャン指示や印刷指示などの指示は、パブリックユーザによって入力された指示として扱われる。システムユーザは、ユーザの指示とは無関係に、OSなどのシステムコンポーネントによって用いられるユーザIDに対応するユーザ名である。
グループテーブルGTは、グループIDによって識別されるグループを定義するテーブルである。グループテーブルGTの各レコードは、グループ名と、グループIDと、を含んでいる。ユーザテーブルUTと、グループテーブルGTと、を参照すれば、例えば、ユーザ「Alice」と、ユーザ「Bob」とは、同じグループ「TEAM1」に属していることが解る。
アクセス権限テーブルATは、後述する一般テーブルのそれぞれについて、アクセス権限を定義する権限情報を含むレコードが記録されている。例えば、1行目のレコードRc1は、図3(A)の機能許容テーブルFTの権限情報を含むレコードであり、2行目のレコードRc2は、図3(B)の連絡先テーブルCITの権限情報を含むレコードである。
一般テーブルについて定義されるアクセス権限には、テーブル権限と、レコード権限と、の2種類がある。テーブル権限は、データテーブルごとに定義されるアクセス権限である。テーブル権限が定義されるデータテーブルに含まれる全てのレコードへのアクセス権限は、該データテーブルに対応付けられる1組の権限情報によって定義される。レコード権限は、データテーブルに含まれるレコードごとに定義されるアクセス権限である。レコード権限が定義されるデータテーブルに含まれる1個以上のレコードは、1個以上のレコードのそれぞれに1組ずつ対応付けられる権限情報に従って決定される。
アクセス権限テーブルATの各レコードは、対応するデータテーブルを示すテーブル名と、対応するデータテーブルについて定義されるアクセス権限の種類(レコード権限またはテーブル権限)を示す権限タイプ情報と、を含んでいる。
権限タイプ情報として、テーブル権限を示す情報を含むレコード、例えば、図2(C)の1行目のレコードRc1は、さらに、オーナーIDと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、を含む。オーナーIDは、対応するデータテーブルのオーナーであるユーザを示すユーザIDである。オーナー権限情報は、オーナーのアクセス権限を定義する情報である。グループ権限情報は、オーナーが所属するグループに所属するユーザ(オーナーを除く)のアクセス権限を定義する情報である。その他の権限情報は、その他のユーザ、すなわち、オーナーが所属するグループに所属するユーザ(オーナーを含む)を除いたユーザのアクセス権限を定義する情報である。
オーナー権限情報と、グループ権限情報と、その他の権限情報は、複数種類のアクセスの可否、具体的には、参照(SELECT)、更新(UPDATE)、追加(INSERT)、削除(DELETE)のそれぞれが許容されるか否かを示す情報である。図2に示すように、これらの情報の欄に記載された「S」「U」「I」「D」は、それぞれ、参照(SELECT)、更新(UPDATE)、追加(INSERT)、削除(DELETE)が、許容されることを示し、「不可」は、これらの4種類のアクセスのいずれも許容されないことを示す。
権限タイプ情報として、レコード権限を示す情報を含むレコード、例えば、図2(C)の2行目のレコードRc2は、権限情報として、権限タイプ情報のみを含み、オーナーIDと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、を含まない。これらの情報は、後述するように、対応するデータテーブル内に、レコードごとに記録されるからである。
これらのシステムテーブルUT、GT、ATに対しては、管理ユーザ(図1の例では、ユーザ名「admin」のユーザ)の指示に基づく、追加、更新、削除、参照のいずれのアクセスも許容されている。システムテーブルUT、GT、ATに対しては、管理ユーザ以外のユーザ(図1の例では、例えば、ユーザ名「alice」のユーザ)の指示に基づく、追加、更新、削除、参照のいずれのアクセスも許容されていない。これらのシステムテーブルは、後述するユーザ管理部UMやアクセス管理部ACMなどの限られたコンポーネントによる参照が許容されている。例えば、ユーザ管理部UMは、例えば、ログインの認証のために、ユーザテーブルUTを参照することができる。
図3(A)の機能許容テーブルFTは、複数のユーザと複合機100が実行可能な複数個の特定の処理とについて、実行が許容されているか否かを示す機能許容情報が、ユーザごと、かつ、特定の処理ごとに、記録されるテーブルである。
機能許容テーブルFTの各レコードは、ユーザ名と、コピー処理の機能許容情報と、スキャン処理の機能許容情報と、PC印刷処理の機能許容情報と、FAX処理の機能許容情報と、を含んでいる。これらの情報の欄に記載された「可」は、対応する処理の実行が許容されること示し、「不可」は、対応する処理の実行が許容されないこと示す。例えば、図3(A)の機能許容テーブルFTの3行目のレコードRd3には、ユーザ「Alice」について、コピー処理と、スキャン処理と、PC印刷処理と、の実行が許容されること、および、FAX処理の実行が許容されないこと、が記録されている。
なお、図3(A)の機能許容テーブルFTは、図2(B)のアクセス権限テーブルATに示すように、テーブル権限が定義されるテーブル(以下、テーブル権限テーブルとも呼ぶ)であるので、機能許容テーブルFTの各レコードは、後述する連絡先テーブルCITとは異なり、権限情報を含んでいない。
図3(B)の連絡先テーブルCITの各レコードは、連絡先の名称と、メールアドレスと、住所と、FAX番号と、を含んでいる。連絡先テーブルCITは、図2(B)のアクセス権限テーブルATに示すように、レコード権限が定義されるテーブル(レコード権限テーブルとも呼ぶ)であるので、連絡先テーブルCITの各レコードは、さらに、権限情報を含む。具体的には、連絡先テーブルCITの各レコードは、オーナーIDと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、を含む。オーナーIDは、対応するレコードのオーナーであるユーザを示すユーザIDである。オーナー権限情報と、グループ権限情報と、その他の権限情報は、上述したとおりである。ただし、オーナー権限情報と、グループ権限情報と、その他の権限情報は、参照(SELECT)、更新(UPDATE)、削除(DELETE)のそれぞれが許容されるか否かを示す情報を含み、追加(INSERT)について情報を含まない。これは、データテーブルと異なり、1個のレコードに対しては、追加の操作は発生しないからである。
CPU110は、コンピュータプログラムPGを実行することにより、複数個のソフトウェアコンポーネント(以下、単にコンポーネントとも呼ぶ)の機能を実現する。図4は、CPU110が実現する複数個のソフトウェアコンポーネントの構成を示すブロック図である。コンポーネントは、カプセル化されたソフトウェアの部品であり、例えば、CPU110が実現すべき複数個の機能のうちの一部の機能を実現する。
これらの複数個のコンポーネントは、ユーザの指示に基づいて複数個の特定の処理を実行するための複数個のアプリケーションと、ハードウェアを制御するための複数個の制御部CT1〜CT3と、を含んでいる。複数個のアプリケーションは、複数個の特定の処理のうちの対応する処理についてユーザからの指示をユーザインタフェースを介して取得する複数個のユーザインタフェース部(以下、UI部という)A11〜A14と、制御部CT1〜CT3を用いて、複数個の特定の処理のうちの対応する処理を実行する制御コア部(以下、コア部という)A21〜A24と、を含んでいる。
複数個の特定の処理は、複数個の画像処理、具体的には、ユーザが指定する画像データによって示される画像をプリンタ部140を用いて印刷するPC印刷処理と、スキャナ部150を用いて読み取った原稿を示す画像を、プリンタ部140を用いて印刷するコピー処理と、スキャナ部150を用いて原稿を読み取るスキャン処理と、電話回線IF290を介して画像データの送受信を行うFAX処理と、を含んでいる。
これらの処理に対応して複数個のUI部A11〜A14は、PC印刷処理のためのPC印刷UI部A11と、コピー処理のためのコピーUI部A12と、スキャン処理のためのスキャンUI部A13と、FAX処理のためのFAXUI部A14と、を含んでいる。
また、複数個のコア部A21〜A24は、PC印刷処理のためのPC印刷コア部A21と、コピー処理のためのコピーコア部A22と、スキャン処理のためのスキャンコア部A23と、FAX処理のためのFAXコア部A24と、を含んでいる。
なお、本実施例では、1個の特定の処理について、1個のUI部と1個のコア部と、が一対一で対応しているが、これに限られない。例えば、1個の特定の処理についてのアプリケーションは、操作部160を介して指示を取得するUI部と、ユーザの端末装置500のブラウザを介して指示を取得するUI部と、これらの2個のUI部が取得した指示に基づいて特定の処理を実行する1個のコア部と、を含んでもよい。
複数個の制御部CT1〜CT3は、プリンタ部140を制御する印刷制御部CT1と、スキャナ部150を制御する読取制御部CT2と、電話回線IF290を制御するFAX制御部CT3と、を備えている。印刷制御部CT1は、例えば、コピーコア部A22やPC印刷コア部A21から、印刷データを受け取ってプリンタ部140を制御して画像を印刷させる。読取制御部CT2は、例えば、コピーコア部A22や、スキャンコア部A23の指示に従って、スキャナ部150を制御してスキャンデータを生成させる。FAX制御部CT3は、FAXコア部A24の指示に従って、電話回線IF290を制御して画像データの送受信を実行させる。
複数個のコンポーネントは、さらに、アプリケーション管理部APMと、ユーザ管理部UMと、外部データ解析部JBRと、連絡先管理部CIMと、アクセス管理部ACMと、を含んでいる。
アプリケーション管理部APMは、複数個のUI部A11〜A14と、複数個のコア部A21〜A24と、の間のデータの遣り取りを仲介する。
ユーザ管理部UMは、認証処理部ATPと、ユーザ情報管理部UIMと、を含んでいる。認証処理部ATPは、表示部170にログイン画面(図示省略)を表示して、操作部160を介して入力される認証情報(具体的には、ユーザ名とパスワード)を受け取る。認証処理部ATPは、入力される認証情報に基づいて、ユーザの認証を行う、すなわち、認証情報を入力したユーザのログインを認めるか否かを判断する。認証処理部ATPは、現在、ログイン中のユーザ(カレントユーザとも呼ぶ)を管理している。
ユーザ情報管理部UIMは、データベースDBに格納されたユーザに関連する情報を管理する。例えば、ユーザ情報管理部UIMは、アクセス管理部ACMに対して後述するクエリを供給して、ユーザごとの機能許容情報を記録する機能許容テーブルFT(図3(A))の生成や、機能許容テーブルFTへのアクセスを実行する。
外部データ解析部JBRは、ネットワークIF280等を用いて、外部機器から受信されたデータを解析して、必要な処理を実行する。例えば、外部データ解析部JBRは、ユーザの端末装置500等から、ネットワークLNTを介して受信された印刷ジョブの解析を行う。
連絡先管理部CIMは、データベースDBに格納された連絡先テーブルCIT(図3(B))を管理する。例えば、連絡先管理部CIMは、アクセス管理部ACMに対して後述するクエリを供給して、連絡先テーブルCITの生成や、連絡先テーブルCITへのアクセスを実行する。
アクセス管理部ACMは、他のコンポーネントによるデータベースDBへのアクセスを仲介する。例えば、アクセス管理部ACMは、後述するように、他のコンポーネントから供給されるクエリに基づいて、データベースDB上でのデータテーブルの生成や、データベースDBに格納されたデータテーブルへのアクセスを仲介する。
A−2. 複合機100の動作
A−2−1.データベースDBへのアクセス
データベースDBのアクセスについて説明する。データベースDBへのアクセスは、アクセス管理部ACMが、上述したように、他のコンポーネントから供給されるクエリを取得したときに、アクセス管理部ACMによって実行される。換言すれば、アクセス管理部ACM以外のコンポーネントは、直接に、データベースDBへアクセスすることはできず、データベースDBへのアクセスは、アクセス管理部ACMによって一元的に管理されている。したがって、コア部A21〜A24などのコンポーネントのそれぞれは、データベースDBに格納されているデータにアクセスすべき際に、後述するクエリをアクセス管理部ACMに供給することによって、アクセス管理部ACMを介して、間接的に、データベースDBにアクセスする。
図5は、アクセス管理部ACMに供給されるクエリの一例を示す図である。これらのクエリ10A〜10Dは、ユーザIDを付加できるようにカスタマイズされた構造化問い合わせ言語(SQL(Structured Query Language))に従って記述される。換言すれば、これらのクエリは、一般的なSQLに従うSQL文と、ユーザIDと、を含んでいる。例えば、図5(A)〜(E)の全てのクエリは、ユーザID11を含んでいる。
先ず、データベースDBへのデータテーブルの生成を行うテーブル生成処理について説明する。テーブル生成処理は、特定のコンポーネント(例えば、連絡先管理部CIMや、ユーザ情報管理部UIM)が、アクセス管理部ACMに図5(A)、(B)のテーブル生成用のクエリを供給したときに、開始される。
図6は、テーブル生成処理のフローチャートである。S105では、アクセス管理部ACMは、特定のコンポーネントから供給されたテーブル生成用のクエリを取得する。テーブル生成用のクエリは、テーブル権限テーブル生成用のクエリ10A(図5(A))と、レコード権限テーブル生成用のクエリ10B(図5(B))と、の2種類がある。テーブル生成用のクエリは、生成するデータテーブルの名称(テーブル名)、生成するデータテーブルの各レコードが含むべき項目の名称(項目名)、および、当該項目のデータ型などの、一般的なSQLに従うクエリが含む情報に加えて、ユーザID11と、権限タイプ情報12と、を含んでいる。ユーザID11は、例えば、テーブルを生成する契機となった指示を入力したユーザを示し、例えば、現在、複合機100にログイン中のカレントユーザのユーザIDが用いられる。権限タイプ情報12は、生成するデータテーブルについてテーブル権限が定義されることを示す情報と、生成するデータテーブルについてレコード権限が定義されることを示す情報と、のいずれかである。換言すれば、権限タイプ情報12は、生成するデータテーブルが、テーブル権限テーブルであるか、レコード権限テーブルであるか、を示す情報である。
テーブル権限テーブル生成用のクエリ10A(図5(A))は、さらに、生成されるデータテーブルへのアクセス権限を定義する権限情報13を含む。この権限情報13は、図5(A)に示すように、オーナIDと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、を含む。レコード権限テーブル生成用のクエリ10B(図5(B))は、権限情報13を含まない。
S110では、アクセス管理部ACMは、取得したクエリから、当該クエリに付加されたユーザID11を取得する。S115では、アクセス管理部ACMは、ユーザテーブルUT(図2(A))を参照して、当該ユーザID11が、ユーザテーブルUTに存在するか否かを判断する。ユーザID11が、ユーザテーブルUTに存在しない場合には(S115:NO)、S125にて、アクセス管理部ACMは、クエリの供給元のコンポーネントに対して、エラーを通知して、テーブル生成処理を終了する。
ユーザID11が、ユーザテーブルUTに存在する場合には(S115:YES)、S120にて、アクセス管理部ACMは、クエリに従って、データベースDB上にデータテーブルを生成する。
S130では、アクセス管理部ACMは、S120にて生成したデータテーブルについて、権限情報をアクセス権限テーブルATに記録する。具体的には、アクセス管理部ACMは、生成用のクエリに従い、S120にて生成したデータテーブルのテーブル名と、権限タイプと、を含むレコードを、アクセス権限テーブルATに追加する。S120にて生成したデータテーブルが、テーブル権限テーブルである場合には、当該レコードには、さらに、クエリ10A(図5(A))に含まれる権限情報13、すなわち、オーナーIDと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、が含められる。S120にて生成したデータテーブルが、レコード権限テーブルである場合には、当該レコードには、オーナーIDと、オーナー権限情報と、グループ権限情報と、その他の権限情報とは含められない。
S135では、アクセス管理部ACMは、データテーブルの生成の結果を、クエリの供給元のコンポーネントに対して通知して、テーブル生成処理を終了する。通常は、データテーブルの生成が成功したことが、通知される。
次に、生成済のデータテーブルに対して、データを、レコードとして追加するレコード追加処理について説明する。レコード追加処理は、特定のコンポーネント(例えば、連絡先管理部CIMや、ユーザ情報管理部UIM)が、アクセス管理部ACMに図5(C)、(D)のレコード追加用のクエリを供給したときに、開始される。
図7は、レコード追加処理のフローチャートである。S205では、アクセス管理部ACMは、特定のコンポーネントから供給されたレコード追加用のクエリを取得する。
レコード追加用のクエリは、テーブル権限テーブルに対してレコードを追加するためのクエリ10C(図5(C))と、レコード権限テーブルに対してレコードを追加するためのクエリ10D(図5(D))と、の2種類がある。レコード追加用のクエリは、レコードを追加する対象となる生成済のデータテーブルの名称(テーブル名)、追加するレコードに含むべきデータの値などの、一般的なSQLに従うクエリが含む情報に加えて、ユーザID11を含んでいる。ユーザID11は、例えば、レコードを追加する契機となった指示を入力したユーザを示し、例えば、現在、複合機100にログイン中のカレントユーザのユーザIDが用いられる。以下、レコードの追加などのアクセスの対象となる生成済のデータテーブルを、対象データテーブルとも呼ぶ。
レコード権限テーブルに対してレコードを追加するためのクエリ10D(図5(D))は、さらに、追加されるレコードに対するアクセス権限を定義する権限情報14を含む。この権限情報14は、図5(D)に示すように、オーナIDと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、を含む。テーブル権限テーブルに対してレコードを追加するためのクエリ10C(図5(C))は、権限情報14を含まない。
S210では、アクセス管理部ACMは、取得したクエリから、当該クエリに付加されたユーザID11を取得する。S215では、アクセス管理部ACMは、ユーザテーブルUT(図2(A))を参照して、当該ユーザID11が、ユーザテーブルUTに存在するか否かを判断する。ユーザID11が、ユーザテーブルUTに存在しない場合には(S215:NO)、S218にて、アクセス管理部ACMは、クエリの供給元のコンポーネントに対して、エラーを通知して、レコード追加処理を終了する。
ユーザID11が、ユーザテーブルUTに存在する場合には(S215:YES)、S220にて、アクセス管理部ACMは、データベースDBのアクセス権限テーブルAT(図2(C))から、対象データテーブルの権限情報、すなわち、クエリに含まれるテーブル名を有する生成済のデータテーブルの権限情報を取得する。
対象データテーブルがテーブル権限テーブルである場合には、取得される権限情報は、テーブル権限を示す権限タイプ情報と、オーナIDと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、を含む。対象データテーブルがレコード権限テーブルである場合には、取得される権限情報は、レコード権限を示す権限タイプ情報のみを含み、オーナIDと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、を含まない。
S225では、アクセス管理部ACMは、取得された権限情報のうち、権限タイプ情報を参照して、対象データテーブルが、テーブル権限テーブルであるか否かを判断する。対象データテーブルが、テーブル権限テーブルである場合には(S225:YES)、S230にて、アクセス管理部ACMは、権限チェック処理を実行する。権限チェック処理は、クエリに付加されたユーザID11を有するユーザ(対象ユーザとも呼ぶ)が、クエリに従うアクセスを行う権限を有するか否かを判断する処理である。例えば、レコード追加処理中の権限チェック処理では、対象ユーザが、対象データテーブルに、レコードと追加(INSERT)する権限を有するか否かが判断される。権限チェック処理については、後述する。
S235では、アクセス管理部ACMは、権限チェック処理の結果、権限ありと判断されたか否かを判断する。権限チェック処理の結果、権限ありと判断された場合には(S235:YES)、S240にて、アクセス管理部ACMは、クエリに含まれるデータ(値)を含むレコードを、対象データテーブルに追加する。S245では、アクセス管理部ACMは、レコードの追加の結果を、クエリの供給元のコンポーネントに対して通知して、レコード追加処理を終了する。通常は、レコードの追加が成功したことが、通知される。
権限チェック処理の結果、権限なしと判断された場合には(S235:NO)、S218にて、アクセス管理部ACMは、クエリの供給元のコンポーネントに対して、エラーを通知して、レコード追加処理を終了する。
対象データテーブルが、レコード権限テーブルである場合には(S225:NO)、S250にて、アクセス管理部ACMは、権限チェック処理を行わずに、クエリに含まれるデータ(値)を含むレコードを、対象データテーブルに追加する。S255では、アクセス管理部ACMは、クエリ(例えば、図5(D)のクエリ10D)に含まれる権限情報14を、追加したレコードに記録する。S260では、アクセス管理部ACMは、レコードの追加の結果を、クエリの供給元のコンポーネントに対して通知して、レコード追加処理を終了する。通常は、レコードの追加が成功したことが、通知される。
以上の説明から解るように、例えば、対象データテーブルが、テーブル権限テーブルである場合には、図3(A)の機能許容テーブルFTのレコードRd3のように、通常のデータを含み、権限情報を含まないレコードが追加される。対象データテーブルが、レコード権限テーブルである場合には、図3(B)の連絡先テーブルCITのレコードRe2のように、通常のデータと、権限情報と、を含むレコードが追加される。
次に、生成済のデータテーブルに記録されたデータの参照(SELECT)、更新(UPDATE)、削除(DELETE)のいずれかを実行するデータアクセス処理について説明する。データアクセス処理は、特定のコンポーネント(例えば、連絡先管理部CIMや、ユーザ情報管理部UIM)が、アクセス管理部ACMに、参照、更新、削除用のクエリを供給したときに、開始される。
図8は、データアクセス処理のフローチャートである。S305では、アクセス管理部ACMは、特定のコンポーネントから供給されたデータアクセス用(参照用、更新用、削除用のいずれか)のクエリを取得する。
一例として、図5(E)には、参照用のクエリ10Eが示されている。このクエリ10Eは、対象データテーブルの名称(テーブル名)、参照すべきデータの検索条件式などの一般的なSQLに従うクエリが含む情報に加えて、ユーザID11を含んでいる。ユーザID11は、上述した他のクエリと同様に、例えば、アクセスを追加する契機となった指示を入力したユーザを示し、例えば、現在、複合機100にログイン中のカレントユーザのユーザIDが用いられる。参照すべきデータの検索条件式によって、アクセス対象のデータが特定されることから解るように、参照すべきデータの検索条件式は、アクセス対象のデータを示すデータ識別情報の例である。
S310では、アクセス管理部ACMは、データベースDBのアクセス権限テーブルAT(図2(C))から、対象データテーブルの権限情報を取得する。図7のS220と同様に、対象データテーブルがテーブル権限テーブルである場合には、取得される権限情報は、テーブル権限を示す権限タイプ情報と、オーナIDと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、を含む。対象データテーブルがレコード権限テーブルである場合には、取得される権限情報は、レコード権限を示す権限タイプ情報のみを含み、オーナIDと、オーナー権限情報と、グループ権限情報と、その他の権限情報と、を含まない。
S315では、アクセス管理部ACMは、取得された権限情報のうち、権限タイプ情報を参照して、対象データテーブルが、テーブル権限テーブルであるか否かを判断する。対象データテーブルが、テーブル権限テーブルである場合には(S315:YES)、S325にて、アクセス管理部ACMは、図7の230と同様に、権限チェック処理を実行する。この場合には、権限チェック処理に用いられる権限情報は、S310にてアクセス権限テーブルATから取得された権限情報である。
対象データテーブルが、レコード権限テーブルである場合には(S315:NO)、S320にて、クエリに従って、アクセス対象のレコード(以下、対象レコードとも呼ぶ)を検索し、当該対象レコードから権限情報を取得する。これは、レコード権限テーブルの権限情報は、権限タイプ情報を除いて、アクセス権限テーブルATには記録されておらず、レコード権限テーブルにレコードごとに記録されているからである(図3(B)参照)。続くS325にて、アクセス管理部ACMは、権限チェック処理を実行する。この場合には、権限チェック処理に用いられる権限情報は、S320にて対象レコードから取得された権限情報である。
S330では、アクセス管理部ACMは、権限チェック処理の結果、権限ありと判断されたか否かを判断する。権限チェック処理の結果、権限ありと判断された場合には(S330:YES)、S335にて、アクセス管理部ACMは、クエリに従ってアクセスを実行する。例えば、処理対象のクエリが、参照用のクエリである場合には、対象レコードを対象データテーブルから取得する。また、処理対象のクエリが、更新用のクエリである場合には、対象レコードを、クエリに含まれるデータに更新する。処理対象のクエリが、削除用のクエリである場合には、対象レコードを対象データテーブルから削除する。
S340では、アクセス管理部ACMは、S335でのアクセスの結果を、クエリの供給元のコンポーネントに対して通知して、データアクセス処理を終了する。例えば、処理対象のクエリが、参照用のクエリである場合には、S335にて取得した対象レコード内の対象のデータが、クエリの供給元のコンポーネントに供給される。処理対象のクエリが、更新用や削除用のクエリである場合には、更新や削除が成功したことが、通知される。
権限チェック処理の結果、権限なしと判断された場合には(S330:NO)、S345にて、アクセス管理部ACMは、クエリの供給元のコンポーネントに対して、エラーを通知して、データアクセス処理を終了する。
次に、図7のS230および図8のS325の権限チェック処理について説明する。図9は、権限チェック処理のフローチャートである。
S405では、アクセス管理部ACMは、対象ユーザを示すユーザID11が、権限のチェック対象のオーナーIDであるか否かを判断する。権限のチェック対象は、例えば、対象データテーブルが、テーブル権限テーブルである場合には、対象データテーブルであり、対象データテーブルが、レコード権限テーブルである場合には、対象レコードである。権限のチェック対象のオーナーIDは、権限チェック処理に用いられる権限情報として取得されたオーナーIDである。
対象ユーザを示すユーザID11が、権限のチェック対象のオーナーIDである場合には(S405:YES)、S410にて、アクセス管理部ACMは、権限のチェック対象について定義されたオーナー権限情報を、参照権限情報として決定する。
対象ユーザを示すユーザID11が、権限のチェック対象のオーナーIDでない場合には(S405:NO)、S415にて、アクセス管理部ACMは、対象ユーザを示すユーザID11が、権限のチェック対象のオーナーIDが属するグループ(対象グループとも呼ぶ)に属するか否かを判断する。この判断は、図2のユーザテーブルUT、グループテーブルGTを参照することによって、実行される。
対象ユーザを示すユーザID11が、対象グループに属する場合には(S415:YES)、S420にて、アクセス管理部ACMは、権限のチェック対象について定義されたグループ権限情報を、参照権限情報として決定する。
対象ユーザを示すユーザID11が、対象グループに属さない場合には(S415:NO:YES)、S425にて、アクセス管理部ACMは、権限のチェック対象について定義されたその他の権限情報を、参照権限情報として決定する。
S430では、アクセス管理部ACMは、決定された参照権限情報を参照して、対象ユーザが、クエリに従うアクセス(参照、追加、更新、削除のいずれか)を行う権限を有するか否かを判断して、権限チェック処理を終了する。
A−2−2.アクセス例
以上説明したデータベースDBへのアクセスが実際に実行されるアクセス例について説明する。代表的なアクセスは、ユーザの指示に基づいて、PC印刷処理やFAX処理などの特定の処理が実行される際に行われるアクセスである。例えば、実行が指示された特定の処理を実行するために、特定のコンポーネントが、特定の処理に利用するデータを取得する際に、特定のコンポーネントは、データベースDBへのアクセスを行う。
より具体的に説明する。図10は、UI画面の一例を示す図である。OSなどのシステムコンポーネント(図示省略)は、ユーザからの指示を待ち受ける状態では、表示部170に、初期ユーザインタフェース(UI)画面W1を表示する。図10(A)のUI画面W1は、複合機100が実行できる複数個の特定処理、例えば、FAX処理、コピー処理、スキャン処理、PC印刷処理のいずれかをユーザが選択するためのボタンB01〜B04を含んでいる。ユーザがボタンB01〜B04のいずれかを押下することによって、1個の特定の処理を選択すると、システムコンポーネントは、押下された特定の処理に対応するUI部を呼び出す。UI部は、対応する特定の処理を実行するために必要な指示をユーザから取得するためのUIを制御して、必要な指示を取得するアプリケーションである。例えば、FAX処理を選択するためのボタンB04が押下されると、FAX処理に対応するFAXUI部A14(図4)が呼び出される。FAXUI部A14は、表示部170に、FAX処理の指示をユーザから取得するためのUI画面W2(図10(B))を表示する。
このUI画面W2は、FAXの送信開始を指示するスタートボタンB05と、FAXの宛先をユーザが入力するためのフィールドIFと、を含んでいる。フィールドIFには、FAX番号を入力することもでき、連絡先テーブルCIT(図3(B))に記録済の名称を入力することもできる。
ここで、ユーザが、フィールドIFに、連絡先テーブルCITに記録済の名称を入力して、スタートボタンB05を押下すると、換言すれば、FAXUI部A14がユーザからFAX処理の実行指示を取得すると、FAXUI部A14は、ユーザ管理部UMから、認証処理部ATPが管理しているカレントユーザのユーザIDを取得する。FAXUI部A14は、当該ユーザIDと、FAX処理の実行指示(宛先の名称を含む)とを、アプリケーション管理部APMに供給する。アプリケーション管理部APMは、供給されたユーザIDと、FAX処理の実行指示を、FAX処理に対応するコア部であるFAXコア部A24に供給する。この際に、アプリケーション管理部APMは、供給されたユーザIDを有するユーザがFAX処理を実行することが許容されているか否かをチェックする処理等を行うが、ここでは、詳細を省略する。
ユーザIDと、FAX処理の実行指示と、を取得したFAXコア部A24は、FAX処理を実行するために必要なデータ、具体的には、FAX処理の実行指示に含まれる宛先の名称(例えば、図10の「Ken」)に対応するFAX番号を取得するための処理を含む一連の処理を実行する。この処理を、データベースDBへのアクセスの一例として説明する。
図11は、FAXコア部A24を含む複数個のコンポーネントの処理のシーケンス図である。S1では、FAXコア部A24は、FAX番号の取得要求を、FAX番号が記録された連絡先テーブルCIT(図3(B))を管理する連絡先管理部CIM(図4)に対して供給する。FAX番号の取得要求には、アプリケーション管理部APMから取得したユーザIDと、FAX実行指示に含まれる宛先の名称とが含められる。
連絡先管理部CIMは、FAXコア部A24からFAX番号の取得要求を取得すると、S2にて、宛先の名称に対応するFAX番号を取得するためのクエリを生成する。具体的には、宛先の名称に対応するFAX番号を検索する検索条件式を含む参照(SELECT)用のクエリ10E(図5(E))が生成される。このクエリは、上述したようにユーザID11と、SQL文と、を含む。この例では、ユーザID11は、連絡先管理部CIMが取得したFAX番号の取得要求に含まれるユーザIDである。すなわち、FAXコア部A24から供給されたユーザIDであり、例えば、現在のカレントユーザを示すユーザIDである。
S3では、連絡先管理部CIMは、生成したクエリを、アクセス管理部ACMに供給する。クエリがアクセス管理部ACMに供給されると、S4では、アクセス管理部ACMは、上述した図8のデータアクセス処理を実行する。
カレントユーザが、宛先の名称に対応するFAX番号を含むレコードを参照する権限を有していれば、アクセス管理部ACMは、データアクセス処理によって連絡先テーブルCITから当該FAX番号を取得し、S5にて、取得したFAX番号を連絡先管理部CIMに供給する。連絡先管理部CIMがFAX番号を取得すると、S6にて、連絡先管理部CIMは、FAX番号をFAXコア部A24に供給する。FAXコア部A24がFAX番号を取得すると、S7では、FAXコア部A24は、FAX制御部CT3を制御して、当該FAX番号を用いて、FAXを宛先に送信する。
ここで、カレントユーザが、宛先の名称に対応するFAX番号を含むレコードを参照する権限を有していなければ、アクセス管理部ACMは、データアクセス処理によって連絡先テーブルCITから当該FAX番号を取得せず、S5にて、FAX番号に代えて、エラー通知を連絡先管理部CIMに供給する。この場合には、S6にて、連絡先管理部CIMは、FAXコア部A24にエラー通知を供給する。FAXコア部A24がエラー通知を取得すると、S7では、FAXコア部A24は、所定のエラー処理、例えば、アプリケーション管理部APMを介してFAXUI部A14に、エラー表示を行わせるためのエラー通知を供給する処理を実行する。
なお、このようなユーザの指示に基づいて特定の処理が実行される際に、特定のコンポーネントがクエリを発行することによって、アクセス管理部ACMを介してデータベースDBにアクセスすることは、図11のようなデータ(レコード)の参照に限られない。例えば、スキャンUI部A13は、生成したスキャンデータをユーザごとに管理する指示をユーザから取得することができる。この場合に、スキャンUI部A13によってユーザから取得された生成指示に基づいて、スキャンコア部A23は、アクセス管理部ACMに対して、ユーザごとにスキャンデータを管理する管理テーブルを生成するためのテーブル生成用のクエリ(例えば、図5(A)、(B)の10A、10B)を供給する。この結果、図6のテーブル生成処理が、アクセス管理部ACMによって実行される。この結果、テーブル生成用のクエリに基づいて、データベースDB内に、新たなデータテーブルが生成される。そして、テーブル生成用のクエリに基づいて、当該管理テーブルの権限情報(すなわち、新たに生成されたデータテーブルに対するアクセス権限を定義する権限情報)が、アクセス権限テーブルATに記録される。このように、ユーザの指示に基づいて、任意のタイミングで、新たなデータテーブルが生成され得る。この結果、一般ユーザの指示に基づいて、容易に、データテーブルを生成でき、該データテーブルに対するアクセス権限を定義できる。したがって、一般ユーザの指示に基づいて、データの管理およびデータのアクセスの管理を柔軟に行うことができる。
次に、データベースDBへのアクセス例として、複合機100の初回の起動時に行われる処理について説明する。初回の起動時には、OSなどのシステムコンポーネントの起動時にタスクによって、図2のシステムテーブルUT、GT、ATが生成される。ただし、この時点では、一般テーブルである図3の機能許容テーブルFT、および、連絡先テーブルCITは、生成されていない。初回の起動時には、システムコンポーネントによって、ユーザ情報管理部UIMと、連絡先管理部CIMと、が自動的に起動される。これらのユーザ情報管理部UIMと、連絡先管理部CIMとは、初回の起動時のタスクとして、それぞれ、機能許容テーブルFT、連絡先テーブルCITを生成する処理を実行する。図12は、機能許容テーブルFT、連絡先テーブルCITを生成する処理のシーケンス図である。
S11では、ユーザ情報管理部UIMは、機能許容テーブルFTを生成するためのテーブル生成用のクエリ10A(図5(A))を生成する。S11の処理は、他のコンポーネントからの要求の有無に拘わらずに、ユーザ情報管理部UIMによって、初回起動時に自動的に行われる。なお、このように自動的に生成されるクエリには、ユーザID11として、システムユーザのユーザID(図2(A))が用いられる。S12では、生成されたテーブル生成用のクエリを、アクセス管理部ACMに供給する。テーブル生成用のクエリを取得したアクセス管理部ACMは、S13にて、図6のテーブル生成処理を実行する。この結果、データベースDBに機能許容テーブルFTが生成される。S14では、機能許容テーブルFTの生成が成功したことを示す通知が、アクセス管理部ACMからユーザ情報管理部UIMに供給される。
同様に、S21では、連絡先管理部CIMは、連絡先テーブルCITを生成するためのテーブル生成用のクエリ10B(図5(B))を生成する。S21の処理は、他のコンポーネントからの要求の有無に拘わらずに、連絡先管理部CIMによって、初回起動時に自動的に行われる。S22では、生成されたテーブル生成用のクエリを、アクセス管理部ACMに供給する。テーブル生成用のクエリを取得したアクセス管理部ACMは、S23にて、図6のテーブル生成処理を実行する。この結果、データベースDBに連絡先テーブルCITが生成される。S24では、連絡先テーブルCITの生成が成功したことを示す通知が、アクセス管理部ACMから連絡先管理部CIMに供給される。
ただし、この時点では、機能許容テーブルFTや連絡先テーブルCITには、レコードは記録されてはいない。機能許容テーブルFTテーブルのレコードは、例えば、管理ユーザの指示に基づいて記録され、連絡先テーブルCITのレコードは、例えば、一般のユーザの指示に基づいて記録される。
このように、複合機100の初回の起動時に、予め定められた特定種類のデータテーブル(具体的には、機能許容テーブルFTと連絡先テーブルCIT)が生成され、これらのデータテーブルについて、権限情報がアクセス権限テーブルATに記録される。そして、の2回目以降の起動時には、このようなデータテーブルの生成は、行われない。
この結果、特定種類のデータテーブルについては、ユーザの指示の有無に拘わらずに生成されるので、ユーザの負担を軽減できる。また、ユーザの指示に基づいて生成されるデータテーブルと、自動的に生成されるデータテーブルと、を、データベースDBとアクセス管理部ACMとを用いて、一元的に管理できる。
以上説明した本実施例によれば、コンポーネント(たとえば、連絡先管理部CIM)は、UI部A11〜A14のいずれかに対するユーザの指示(例えば、図11のFAX実行指示)に応じてデータベースDBに格納されている特定のデータ(例えば、FAX番号)にアクセスすべき際に、特定のユーザを示すユーザ識別情報(例えば、カレントユーザを示すユーザID)と、アクセスすべき特定のデータを含む特定のデータテーブルを示すテーブル識別情報(例えば、連絡先テーブルCITのテーブル名)と、特定のデータを示すデータ識別情報(例えば、FAX番号を検索する検索条件式)と、を含むクエリ(例えば、参照用のクエリ)を、アクセス管理部ACMに供給する(図11のS1〜S3)。アクセス管理部ACMは、図11のS4のデータアクセス処理にて、クエリを取得した場合に、クエリに含まれるユーザ識別情報とテーブル識別情報とを用いて、アクセス権限テーブルATを参照することによって、特定のデータに対するアクセス可否を判断する権限チェック処理(図8のS325)を実行する。アクセス管理部ACMは、アクセス可否の判断結果に基づく情報(具体的には、アクセスが許容される場合には当該特定のデータ、アクセスが許容されない場合にはエラー通知)が、クエリの供給元のコンポーネント(例えば、連絡先管理部CIM)に供給する(図11のS5)。
したがって、アクセス管理部ACMが、複数個のコンポーネントのそれぞれから、クエリを取得し、クエリの供給元のコンポーネントによるデータに対するアクセス可否を判断する。この結果、ユーザの指示に応じて行われる複数個のコンポーネントによるデータに対するアクセスを、アクセス管理部ACMによって一元的に管理できる。したがって、例えば、複数個のコンポーネントのそれぞれが、複数個のアプリケーションのために、アクセス管理を行う必要がないので、複数個のコンポーネントによるデータへのアクセスを容易に管理できる。例えば、管理のレベルのばらつきの低減や、コンポーネントの開発工数の低減を図ることができる。
より具体的に説明すると、例えば、新たな特定の処理を行うためのUI部やコア部を追加する場合に、これらのアプリケーションが利用するデータをデータベースDBから取得する処理や、利用するデータをデータベースDBに格納する処理を、これらのアプリケーションに実装する必要がない。これらのアプリケーションは、クエリをアクセス管理部ACMに供給する機能を持つか、クエリをアクセス管理部ACMに供給する他のコンポーネントを利用すれば良い。また、アプリケーションなどのコンポーネントごとに、データベースDBにアクセスする機能を持つと、アプリケーションごとに、アクセス権限の有無のチェックの仕組みやアクセス権限がない場合の扱いが異なり得る。この結果、データベースDBに格納されたデータのセキュリティの維持が困難になる。本実施例では、そのような不都合を抑制することができる。
データベースDBは、管理ユーザによるアクセスが許容され、管理ユーザとは異なる一般ユーザによるアクセスが許容されないシステムテーブルと、一般ユーザによるアクセスが許容され得る一般テーブルと、を含んでいる。そして、一般テーブルに記録されたデータに対するアクセス権限を定義するアクセス権限テーブルATは、システムテーブルに含まれる(図2)。この結果、一般テーブルに対するアクセス権限を、セキュリティが確保されたアクセス権限テーブルATを用いて一元的に管理することができる。
また、参照用のクエリ(図5(E))は、構造化問い合わせ言語(SQL)に従って記述され、テーブル識別情報としてのテーブル名と、データ識別情報としての検索条件式を含むSQL文と、SQL文に付加されたユーザID11と、を含む。この結果、連絡先管理部CIMなどのコンポーネントは、SQL文を利用して、容易にデータベースを利用することができる。この結果、例えば、コンポーネントの開発工数の低減を図ることができる。
さらに、上記実施例では、アクセス権限テーブルATは、データテーブルのそれぞれについて、データテーブルごとに定義されるテーブル権限が定義されることを示す情報と、データテーブルに含まれるデータ(レコード)ごとに定義されるレコード権限が定義されることを示す情報と、のいずれかを示す権限タイプ情報を含む(図2(C))。この結果、テーブル権限とレコード権限を容易に定義することができ、例えば、データの種類に応じて、アクセス権限を柔軟に管理できる。
さらに、上記実施例では、特定のコンポーネントが、データテーブルの生成を要求するテーブル生成用のクエリ(図5(A)、(B))をアクセス管理部ACMに供給する。テーブル生成用のクエリは、権限タイプ情報12を含む。これに応じて、図6のテーブル生成処理にて、アクセス管理部ACMは、テーブル生成用のクエリに基づいて、データテーブルを生成する(図6のS120)。テーブル生成用のクエリに、テーブル権限を示す権限タイプ情報12が含まれる場合に、生成されるデータテーブルについて、テーブル権限が定義されることを示す権限タイプ情報と、生成されるデータテーブルへのアクセス権限を定義する情報(オーナーIDと、オーナー権限情報と、グループ権限情報と、その他の権限情報)とが、テーブル生成用のクエリに含まれる権限情報13に従ってアクセス権限テーブルATに記録される(図6のS130)。そして、テーブル生成用のクエリに、レコード権限が定義されることを示す情報が含まれる場合には、生成されるデータテーブルについて、テーブル権限が定義されることを示す権限タイプ情報がアクセス権限テーブルATに記録される(図6のS130)。この結果、テーブル生成用のクエリに基づいて生成されるデータテーブル内のデータへのアクセスについて、テーブル権限とレコード権限とを容易に管理することができる。
さらに、上記実施例では、特定のコンポーネントが、生成済のデータテーブルへのデータ(レコード)の記録を要求するレコード追加用のクエリ(図5(C)、(D))をアクセス管理部ACMに供給する。レコード追加用のクエリは、対象データテーブルが、レコード権限が定義されるべきテーブルである場合には、権限情報14を含む(図5(D))。
これに応じて、図7のレコード追加処理にて、アクセス管理部ACMは、レコード追加用のクエリに基づいて、対象データテーブルに、記録対象のデータ(レコード)と、権限情報と、を記録する(図7の255)。この結果、データ(レコード)ごとにレコード権限を定義する情報がデータテーブルに記録されるので、レコード権限を容易に管理することができる。
B.変形例:
(1)上記実施例の複合機100に代えて、プリンタ部140を備えるが、スキャナ部150を備えないプリンタが採用されても良く、プリンタ部140を備えるが、スキャナ部150を備えないスキャナが採用されてもよい。すなわち、一般的に言えば、画像の印刷処理と、画像の読取処理と、の少なくとも一方を含む画像処理を実行する画像処理実行部を備える装置が、採用可能である。また、採用される装置の種類に応じて、複数個のコンポーネントは、当該画像処理を画像処理実行に実行させるための1個以上の画像処理アプリケーション(例えば、本実施例のUI部A11〜A14やコア部A21〜A24)を含むことが好ましい。さらに、複数個のコンポーネントは、画像処理アプリケーションに加えて、他の処理を行うアプリケーションを含んでもよい。例えば、複数個のコンポーネントは、管理ユーザに対して、管理対象のデータ(例えば、システムテーブルUT、GT、ATに格納されるデータ)の編集を行うためのWEBサービスを提供するWEBアプリケーションを含んでも良い。
(2)上記実施例のコア部A21〜A24のうちの少なくとも一部と、制御部CT1〜CT3とのうちの対応する一部と、は1個のソフトウェアコンポーネントとして、構成されても良い。例えば、PC印刷コア部A21と、印刷制御部CT1と、が1個のソフトウェアコンポーネントとして構成され、コピーコア部A22と、印刷制御部CT1および読取制御部CT2と、が1個のソフトウェアコンポーネントとして構成され、スキャンコア部A23と読取制御部CT2と、が1個のソフトウェアコンポーネントとして構成され、FAXコア部A24と、FAX制御部CT3と、が1個のソフトウェアコンポーネントとして構成されても良い。
(3)上記実施例では、複数個のコンポーネントは、連絡先テーブルCITへアクセスするためのクエリを生成する連絡先管理部CIMや、機能許容テーブルFTへのアクセスするためのクエリを生成するユーザ情報管理部UIMを、含んでいる。これによって、複数個のアプリケーションが、連絡先管理部CIMやユーザ情報管理部UIMを利用して、容易にデータベースDBへのアクセスを実行できるので、アプリケーションの開発工数を低減している。これに代えて、各アプリケーションが、クエリを生成して、アクセス管理部ACMに供給する機能を備えても良い。
(4)上記実施例では、テーブル権限テーブルと、レコード権限テーブルと、の2種類のデータテーブルを利用できるが、テーブル権限テーブルと、レコード権限テーブルと、のいずれか一方だけが利用できる構成であっても良い。例えば、テーブル権限テーブルだけが利用できる構成であれば、全ての権限情報は、常にアクセス権限テーブルATに記録され、データテーブルには記録されなくても良く、権限情報のうち、権限タイプ情報は、省略されて良い。
(5)なお、クエリは、SQLに従うクエリに限らず、他の言語(例えば、オリジナルの言語)に従うクエリであっても良い。また、クエリは、参照、追加、更新、削除、テーブル生成の全ての種類が無くても良く、少なくとも参照を含む必要な種類のアクセスのためのクエリだけが用いられても良い。いずれの場合であっても、クエリは、データベースDBのアクセスを定義付ける部分に加えて、ユーザIDを含むことが好ましい。これによって、アクセス管理部ACMは、ユーザIDを利用して、アクセス権限の有無を一元的に適切に判断することができる。
(6)上記実施例において、システムテーブルと、一般テーブルと、を区別することなく、全てのデータテーブルが、アクセス権限テーブルATを用いて、管理されても良い。
(7)上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。