(57)【要約】【課題】セキュリティを適切に維持しつつフレームワークの機能を拡張させることのできる装置、セキュリティ管理方法、セキュリティ管理プログラム及び記録媒体の提供を目的とする。【解決手段】インタフェースの少なくとも一部が公開されているフレームワークを有し、前記フレームワークに基づいて作成されたアプリケーションプログラムを実行可能な装置であって、前記アプリケーションプログラムに付与されたセキュリティレベルを判断し、前記セキュリティレベルに応じて当該アプリケーションプログラムによる前記フレームワークの利用を制限するセキュリティ管理手段と、前記セキュリティレベルごとに前記フレームワークの利用の権限を示す情報を管理する権限管理手段とを有し、前記セキュリティ管理手段は、前記権限管理手段に基づいて前記フレームワークの利用を制限することを特徴とする。【選択図】図８
2011165222.tif 000002
【特許請求の範囲】
【請求項１】
インタフェースの少なくとも一部が公開されているフレームワークを有し、前記フレームワークに基づいて作成されたアプリケーションプログラムを実行可能な装置であって、
前記アプリケーションプログラムに付与されたセキュリティレベルを判断し、前記セキュリティレベルに応じて当該アプリケーションプログラムによる前記フレームワークの利用を制限するセキュリティ管理手段と、
前記セキュリティレベルごとに前記フレームワークの利用の権限を示す情報を管理する権限管理手段とを有し、
前記セキュリティ管理手段は、前記権限管理手段に基づいて前記フレームワークの利用を制限することを特徴とする装置。
【請求項２】
前記セキュリティ管理手段は、前記フレームワークにおいて公開されていないインタフェースに対してアクセスが発生したときに、前記セキュリティレベルに応じて前記フレームワークの利用を制限することを特徴とする請求項１記載の装置。
【請求項３】
前記フレームワークは複数のクラスによって構成され、
前記セキュリティ管理手段は、前記アプリケーションプログラムが前記クラスを継承させたサブクラスを利用する際に、前記セキュリティレベルに応じて当該アプリケーションプログラムによる前記クラスの利用を制限することを特徴とする請求項１又は２記載の装置。
【請求項４】
前記複数のクラスの一つは列挙値を定義するクラスであり、
前記セキュリティ管理手段は、前記アプリケーションプログラムが前記列挙値を定義するクラスを継承させたサブクラスを利用する際に、前記セキュリティレベルに応じて当該アプリケーションプログラムによる前記列挙値を定義するクラスの利用を制限することを特徴とする請求項３記載の装置。
【請求項５】
インタフェースの少なくとも一部が公開されているフレームワークを有し、前記フレームワークに基づいて作成されたアプリケーションプログラムを実行可能な装置におけるセキュリティ管理方法であって、
前記アプリケーションプログラムに付与されたセキュリティレベルを判断するセキュリティレベル判断手順と、
前記セキュリティレベルに応じて当該アプリケーションプログラムによる前記フレームワークの利用を制限するセキュリティ管理手順とを有し、
前記セキュリティ管理手順は、前記セキュリティレベルごとに前記フレームワークの利用の権限を示す権限情報に基づいて前記フレームワークの利用を制限することを特徴とするセキュリティ管理方法。
【請求項６】
前記セキュリティ管理手順は、前記フレームワークにおいて公開されていないインタフェースに対してアクセスが発生したときに、前記セキュリティレベルに応じて前記フレームワークの利用を制限することを特徴とする請求項５記載のセキュリティ管理方法。
【請求項７】
前記フレームワークは複数のクラスによって構成され、
前記セキュリティ管理手順は、前記アプリケーションプログラムが前記クラスを継承させたサブクラスを利用する際に、前記セキュリティレベルに応じて当該アプリケーションプログラムによる前記クラスの利用を制限することを特徴とする請求項５又は６記載のセキュリティ管理方法。
【請求項８】
前記複数のクラスの一つは列挙値を定義するクラスであり、
前記セキュリティ管理手順は、前記アプリケーションプログラムが前記列挙値を定義するクラスを継承させたサブクラスを利用する際に、前記セキュリティレベルに応じて当該アプリケーションプログラムによる前記列挙値を定義するクラスの利用を制限することを特徴とする請求項７記載のセキュリティ管理方法。
【請求項９】
請求項５乃至８いずれか一項記載のセキュリティ管理方法をコンピュータに実行させるためのセキュリティ管理プログラム。
【請求項１０】
請求項９記載のセキュリティ管理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、装置、セキュリティ管理方法、セキュリティ管理プログラム及び記録媒体に関し、特にインタフェースの少なくとも一部が公開されているフレームワークを有し、前記フレームワークに基づいて作成されたアプリケーションを実行可能な装置、セキュリティ管理方法、セキュリティ管理プログラム及び記録媒体に関する。
【背景技術】
【０００２】
Ｊａｖａ（登録商標）言語にはＣ／Ｃ＋＋言語のように列挙型（enum型）が用意されていないため、ある変数の取り得る値をあらかじめ指定したい場合は、図１に示されるような定義によって、列挙型を擬似的に実現することが可能である。
【０００３】
図１は、Ｊａｖａ（登録商標）言語において列挙型を実現するための第一の方法を説明するための図である。
【０００４】
図１では、列挙値に相当する定数の宣言を「final static int」によって行う例を示している。すなわち、（Ａ）では、フォントの種類を表現する定数（PLAIN、BOLD）が、以下のように定義されている。
【０００５】
public final static int PLAIN = 1 ;
public final static int BOLD = 2 ;
これにより、（Ｂ）に示されるようなcreateFont()メソッドの呼び出し側では、第二引数（fontStyle）の値としてPLAIN、BOLDを指定することができる。
【０００６】
ただし、図１の方法は、新たな型が定義されるわけではなく、PLAIN、BOLD等は既存の型（ここでは、int型）として扱われるため、createFont()メソッドの第二引数には任意の値を指定することができてしまう。従って、createFont()メソッド内で第二引数の値の範囲チェックを行う必要がある。
【０００７】
また、定義された定数と同じ型であれば、他の引数（例えば、createFont()メソッドの第三引数であるint型のsize）に対しても、当該定数（PLAIN、BOLD等）を指定することができ、コンパイラではそのコーディングミスを検出することができず、実行時に予期せぬエラーを発生させる可能性がある。
【０００８】
そこで、一般的には図２に示されるような定義によって列挙型を実現することが多い。図２は、Ｊａｖａ（登録商標）言語において列挙型を実現するための第二の方法を説明するための図である。
【０００９】
図２では、列挙値をクラスのオブジェクトとして定義する例を示している。すなわち、（Ａ）では、フォントの種類を表現する定数（PLAIN、BOLD）が、以下のようにFontStyleクラスのインスタンスとして定義されている。
【００１０】
public final static int PLAIN = new FontStyle() ;
public final static int BOLD = new FontStyle() ;
これにより、（Ｂ）に示されるようなcreateFont()メソッドの第二引数の型を「FontStyle」型として定義することが可能となる。したがって、createFont()メソッドの第二引数にFontStyle型以外の値が指定されるとコンパイルエラーとなり、実行時のエラーを防ぐことが可能となる。また、図２の例では、FontStyleクラスの定義にfinal修飾子が付加されているため、FontSytleクラスのサブクラスが定義されるのを防止することができ、サブクラスの定義による想定外の定数の拡張を防止することができる。よって、定数が所定の範囲内であることが保証され、createFont()メソッド内部での値の範囲チェックを行う必要を無くすことができる。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、上記のようなクラス（enum型を実現するためのクラス）がいわゆるフレームワークにおいて定義されている場合、列挙値を拡張するためにはFontStyleクラスのサブクラス化が行えないため、FonsStyleクラスの定義自体を変更しなければならない。したがって、フレームワークの提供者は、当該フレームワークの利用者に対して、拡張部分のみならず、拡張後のフレームワーク全体を改めて提供しなければならず、場合によっては、当該フレームワークの利用者は、当該フレームワーク上に構築したアプリケーションの再コンパイル等を実行しなければならないという問題がある。
【００１２】
近年では、複写機や融合機等の画像形成装置においても、フレームワークが実装され、そのＡＰＩ（Application Program Interface）が公開されているものがある。そして、画像形成装置の利用者側で、そのＡＰＩに基づくアプリケーションを実装することで、利用者独自の機能を追加できるものがある。したがって、上記のような問題はかかる画像形成装置においても同様に発生し得る問題である。
【００１３】
本発明は、上記の点に鑑みてなされたものであって、セキュリティを適切に維持しつつフレームワークの機能を拡張させることのできる装置、セキュリティ管理方法、セキュリティ管理プログラム及び記録媒体の提供を目的とする。
【課題を解決するための手段】
【００１４】
そこで上記課題を解決するため、本発明は、インタフェースの少なくとも一部が公開されているフレームワークを有し、前記フレームワークに基づいて作成されたアプリケーションプログラムを実行可能な装置であって、前記アプリケーションプログラムに付与されたセキュリティレベルを判断し、前記セキュリティレベルに応じて当該アプリケーションプログラムによる前記フレームワークの利用を制限するセキュリティ管理手段と、前記セキュリティレベルごとに前記フレームワークの利用の権限を示す情報を管理する権限管理手段とを有し、前記セキュリティ管理手段は、前記権限管理手段に基づいて前記フレームワークの利用を制限することを特徴とする。
【００１５】
このような装置では、セキュリティを適切に維持しつつフレームワークの機能を拡張させることができる。
【００１６】
また、上記課題を解決するため、本発明は、上記装置におけるセキュリティ管理方法、前記セキュリティ管理方法をコンピュータに実行させるためのセキュリティ管理プログラム、又は前記セキュリティ管理プログラムを記録した記録媒体としてもよい。
【発明の効果】
【００１７】
本発明によれば、セキュリティを適切に維持しつつフレームワークの機能を拡張させることのできる装置、セキュリティ管理方法、セキュリティ管理プログラム及び記録媒体を提供することができる。
【図面の簡単な説明】
【００１８】
【図１】Ｊａｖａ（登録商標）言語において列挙型を実現するための第一の方法を説明するための図である。
【図２】Ｊａｖａ（登録商標）言語において列挙型を実現するための第二の方法を説明するための図である。
【図３】本発明の実施の形態における融合機を表す図である。
【図４】本発明の実施の形態における融合機のハードウェア構成図である。
【図５】本発明の実施の形態における融合機の外観図である。
【図６】オペレーションパネルを表す図である。
【図７】ＪＳＤＫアプリとＪＳＤＫプラットフォームのクラス図である。
【図８】セキュリティマネージャの機能を説明するための図である。
【図９】セキュリティポリシー設定ファイルの定義例を示す図である。
【図１０】レベル１のユーザアプリの動作を説明するための図である。
【図１１】本発明の実施の形態におけるＪＳＤＫプラットフォームにおいて列挙型の実現例を説明するための図である。
【図１２】本発明の実施の形態において列挙値を定義するためのクラスの継承関係を示す図である。
【発明を実施するための形態】
【００１９】
以下、図面に基づいて本発明の実施の形態を説明する。図３は、本発明の実施の形態における融合機を表す図である。図３の融合機１０１は、種々のハードウェア１１１と、種々のソフトウェア１１２と、融合機起動部１１３により構成される。
【００２０】
融合機１０１のハードウェア１１１としては、撮像部１２１と、印刷部１２２と、その他のハードウェア１２３が存在する。撮像部１２１は、読取原稿から画像（画像データ）を読み取るためのハードウェアである。印刷部１２２は、画像（画像データ）を印刷用紙に印刷するためのハードウェアである。
【００２１】
融合機１０１のソフトウェア１１２としては、種々のアプリケーション１３１と、種々のプラットフォーム１３２が存在する。これらのプログラムは、ＵＮＩＸ（登録商標）等のＯＳ（オペレーティングシステム）によりプロセス単位で並列的に実行される。
【００２２】
アプリケーション１３１としては、コピー用のアプリケーションであるコピーアプリ１４１、プリンタ用のアプリケーションであるプリンタアプリ１４２、スキャナ用のアプリケーションであるスキャナアプリ１４３、ファクシミリ用のアプリケーションであるファクシミリアプリ１４４、ネットワークファイル用のアプリケーションであるネットワークファイルアプリ１４５が存在する。そしてさらに、Ｗｅｂページの閲覧用のソフトウェアであるＷｅｂブラウザ１８１、Ｗｅｂページの配信用のソフトウェアであるＷｅｂサーバソフト１８２、ＣＳＤＫアプリ１４６やＪＳＤＫアプリ１４７の制御用のソフトウェアであるＳＤＫアプリケーションサービス（ＳＡＳ）１８３が存在する。
【００２３】
アプリケーション１３１は、専用のＳＤＫ（ソフトウェア開発キット）を使用して開発することができる。ＳＤＫを使用して開発したアプリケーション１３１をＳＤＫアプリと呼ぶ。専用のＳＤＫとしては、Ｃ言語でアプリケーション１３１を開発するための「ＣＳＤＫ」や、Ｊａｖａ（登録商標）言語でアプリケーション１３１を開発するための「ＪＳＤＫ」が提供される。ＣＳＤＫを使用して開発したアプリケーション１３１を「ＣＳＤＫアプリ」と呼び、ＪＳＤＫを使用して開発したアプリケーション１３１を「ＪＳＤＫアプリ」と呼ぶ。図３の融合機１０１にも、ＣＳＤＫアプリ１４６と、ＪＳＤＫアプリ１４７が存在する。図３の融合機１０１にはさらに、Ｊａｖａ（登録商標）言語で記述されたＪＳＤＫアプリ１４７とＣ言語で記述された他のソフトウェア１１２との仲介を行うソフトウェア１１２として、ＪＳＤＫプラットフォーム１４８が存在する。なお、ＪＳＤＫプラットフォーム１４８は、本発明の実施の形態においてフレームワークの具体例に相当する。
【００２４】
プラットフォーム１３２としては、種々のコントロールサービス１５１、システムリソースマネージャ１５２、種々のハンドラ１５３が存在する。コントロールサービス１５１としては、ネットワークコントロールサービス（ＮＣＳ）１６１、ファクシミリコントロールサービス（ＦＣＳ）１６２、デリバリコントロールサービス（ＤＣＳ）１６３、エンジンコントロールサービス（ＥＣＳ）１６４、メモリコントロールサービス（ＭＣＳ）１６５、オペレーションパネルコントロールサービス（ＯＣＳ）１６６、サーティフィケーションコントロールサービス（ＣＣＳ）１６７、ユーザディレクトリコントロールサービス（ＵＣＳ）１６８、システムコントロールサービス（ＳＣＳ）１６９が存在する。ハンドラ１５３としては、ファクシミリコントロールユニットハンドラ（ＦＣＵＨ）１７１、イメージメモリハンドラ（ＩＭＨ）１７２が存在する。
【００２５】
ＮＣＳ１６１のプロセスは、ネットワーク通信の仲介を行う。ＦＣＳ１６２のプロセスは、ファクシミリのＡＰＩを提供する。ＤＣＳ１６３のプロセスは、蓄積文書の配信処理に関する制御を行う。ＥＣＳ１６４のプロセスは、撮像部１２１や印刷部１２２に関する制御を行う。ＭＣＳ１６５のプロセスは、メモリやハードディスクドライブに関する制御を行う。ＯＣＳ１６６のプロセスは、オペレーションパネルに関する制御を行う。ＣＣＳ１６７のプロセスは、認証処理や課金処理に関する制御を行う。ＵＣＳ１６８のプロセスは、ユーザ情報の管理に関する制御を行う。ＳＣＳ１６９のプロセスは、システムの管理に関する制御を行う。
【００２６】
アプリケーション１３１とプラットフォーム１３２の仲介を行うソフトウェア１１２として、仮想アプリケーションサービス（ＶＡＳ）１３５が存在する。ＶＡＳ１３５は、アプリケーション１３１をクライアントとするサーバプロセスとして動作すると共に、プラットフォーム１３２をサーバとするクライアントプロセスとして動作する。ＶＡＳ１３５は、アプリケーション１３１から見てプラットフォーム１３２を隠蔽するラッピング機能を備え、プラットフォーム１３２のバージョンアップに伴うバージョン差を吸収する役割等を担う。
【００２７】
融合機起動部１１３は、融合機１０１の電源投入時に最初に実行される。これにより、ＵＮＩＸ（登録商標）等のＯＳが起動され、アプリケーション１３１やプラットフォーム１３２が起動される。これらのプログラムは、ハードディスクドライブやメモリカードに蓄積されており、ハードディスクドライブやメモリカードから再生されて、メモリに起動されることになる。
【００２８】
図４は、本発明の実施の形態における融合機のハードウェア構成図である。融合機１０１のハードウェア１１１としては、コントローラ２０１と、オペレーションパネル２０２と、ファクシミリコントロールユニット（ＦＣＵ）２０３と、撮像部１２１と、印刷部１２２が存在する。
【００２９】
コントローラ２０１は、ＣＰＵ２１１、ＡＳＩＣ２１２、ＮＢ２２１、ＳＢ２２２、ＭＥＭ−Ｐ２３１、ＭＥＭ−Ｃ２３２、ＨＤＤ（ハードディスクドライブ）２３３、メモリカードスロット２３４、ＮＩＣ（ネットワークインタフェースコントローラ）２４１、ＵＳＢデバイス２４２、ＩＥＥＥ１３９４デバイス２４３、セントロニクスデバイス２４４により構成される。
【００３０】
ＣＰＵ２１１は、種々の情報処理用のＩＣである。ＡＳＩＣ２１２は、種々の画像処理用のＩＣである。ＮＢ２２１は、コントローラ２０１のノースブリッジである。ＳＢ２２２は、コントローラ２０１のサウスブリッジである。ＭＥＭ−Ｐ２３１は、融合機１０１のシステムメモリである。ＭＥＭ−Ｃ２３２は、融合機１０１のローカルメモリである。ＨＤＤ２３３は、融合機１０１のストレージである。メモリカードスロット２３４は、メモリカード２３５をセットするためのスロットである。ＮＩＣ２４１は、ＭＡＣアドレスによるネットワーク通信用のコントローラである。ＵＳＢデバイス２４２は、ＵＳＢ規格の接続端子を提供するためのデバイスである。ＩＥＥＥ１３９４デバイス２４３は、ＩＥＥＥ１３９４規格の接続端子を提供するためのデバイスである。セントロニクスデバイス２４４は、セントロニクス仕様の接続端子を提供するためのデバイスである。
【００３１】
オペレーションパネル２０２は、オペレータが融合機１０１に入力を行うためのハードウェア（操作部）であると共に、オペレータが融合機１０１から出力を得るためのハードウェア（表示部）である。
【００３２】
図５は、本発明の実施の形態における融合機の外観図である。図５には、撮像部１２１の位置と、印刷部１２２の位置と、オペレーションパネル２０２の位置が図示されている。図５には更に、読取原稿のセット先となる原稿セット部３０１と、印刷用紙の給紙先となる給紙部３０２と、印刷用紙の排紙先となる排紙部３０３が図示されている。
【００３３】
オペレーションパネル２０２は、図６のように、タッチパネル３１１と、テンキー３１２と、スタートボタン３１３と、リセットボタン３１４と、機能キー３１５と、初期設定ボタン３１６により構成される。タッチパネル３１１は、タッチ操作で入力を行うためのハードウェア（タッチ操作部）であると共に、画面表示で出力を得るためのハードウェア（画面表示部）である。テンキー３１２は、キー（ボタン）操作で数字入力を行うためのハードウェアである。スタートボタン３１３は、ボタン操作でスタート操作を行うためのハードウェアである。リセットボタン３１４は、ボタン操作でリセット操作を行うためのハードウェアである。機能キー３１５は、キー（ボタン）操作でＣＳＤＫアプリ１４６やＪＳＤＫアプリ１４７による操作画面を表示させるためのハードウェアである。初期設定ボタン３１６は、ボタン操作で初期設定画面を表示させるためのハードウェアである。
【００３４】
原稿セット部３０１は、ＡＤＦ（自動原稿搬送装置）３２１と、フラットベッド３２２と、フラットベッドカバー３２３により構成される。給紙部３０２は、４個の給紙トレイにより構成される。排紙部３０３は、１個の排紙トレイにより構成される。ＡＤＦ３２１には、複数枚の読取原稿を重ねてセットすることができる。フラットベッド３２２には、読取原稿を下向きにセットする。
【００３５】
（ＪＳＤＫ）
図７は、ＪＳＤＫアプリとＪＳＤＫプラットフォームのクラス図である。ＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８は、全体で１プロセスとして、同一プロセス上で実行される。ＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８中の各ブロックは、それぞれこの１プロセス上のスレッドとして、スレッド単位で並列的に実行（マルチスレッド）される。ＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８は、Ｊａｖａ（登録商標）コンパイラによりソースコードからバイトコードに一括翻訳されており、Ｊａｖａ（登録商標）仮想マシンにより逐次実行される。ＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８は、Ｊａｖａ（登録商標）  ２  Ｍｉｃｒｏ  ＥｄｉｔｉｏｎのＰｅｒｓｏｎａｌ  Ｂａｓｉｓ  Ｐｒｏｆｉｌｅをベースとする実装となっている。
【００３６】
ＪＳＤＫアプリ１４７としては、ユーザアプリ７０１と、ＪＳＤＫ  ＧＵＩ  Ｍａｎａｇｅｒ７１１と、Ｔａｓｋ  Ｂａｒ  Ｍａｎａｇｅｒ７１２等が存在する。
【００３７】
ユーザアプリ７０１は、融合機１０１のユーザ（例えばベンダ）がＪＳＤＫを使用して開発したＪＳＤＫアプリである。ＪＳＤＫ  ＧＵＩ  Ｍａｎａｇｅｒ７１１は、他のＪＳＤＫアプリ（ユーザアプリ７０１等）を操作対象とする操作画面の表示等を行うＪＳＤＫアプリである。Ｔａｓｋ  Ｂａｒ  Ｍａｎａｇｅｒ７１２は、他のＪＳＤＫアプリ（ユーザアプリ７０１等）を操作対象とするタスクバーの表示等を行うＪＳＤＫアプリである。
【００３８】
ユーザアプリ７０１はここでは、スタンドアロンアプリケーションやアプレットと並ぶＪａｖａ（登録商標）アプリケーションであるＸｌｅｔである。ＪＳＤＫ  ＧＵＩ  Ｍａｎａｇｅｒ７１１とＴａｓｋ  Ｂａｒ  Ｍａｎａｇｅｒ７１２はここでは、独自の拡張を施したＸｌｅｔ（ＸｌｅｔＥｘ）である。
【００３９】
ＪＳＤＫプラットフォーム１４８には、ＪＳＤＫ  Ｍａｉｎ７２１と、ＪＳＤＫ  Ｅｎｖｉｒｏｎｍｅｎｔ７２２と、Ｌｏｃａｌｅ  Ｍａｎａｇｅｒ７２３と、Ｘｌｅｔ  Ｍａｎａｇｅｒ７３１と、Ｍｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ７３２と、ＪＳＤＫ  Ｍａｎａｇｅｒ７３３と、Ｓｅｎｄ  Ｍａｎａｇｅｒ７４１と、Ｅｖｅｎｔ  Ｍａｎａｇｅｒ７４２と、Ｓｙｓｔｅｍ  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ７４３と、Ｐａｎｅｌ  Ｍａｎａｇｅｒ７４４と、Ｉｎｓｔａｌｌ  Ｍａｎａｇｅｒ７４５と、Ｓｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ７４６と、Ｓｅｃｕｒｉｔｙ  Ｍａｎａｇｅｒ７４７等のクラスが存在する。
【００４０】
ＪＳＤＫ  Ｍａｉｎ７２１は、ＪＳＤＫシステムの起動設定を行うクラスである。ＪＳＤＫ  Ｅｎｖｉｒｏｎｍｅｎｔ７２２は、ＪＳＤＫシステムの起動環境設定を行うクラスである。Ｌｏｃａｌｅ  Ｍａｎａｇｅｒ７２３は、国際化対応（言語指定）を行うクラスである。
【００４１】
Ｘｌｅｔ  Ｍａｎａｇｅｒ７３１は、１対１でＸｌｅｔのライフサイクルを管理するクラスである。ここでは、５個のＸｌｅｔのライフサイクルが１対１で５個のＸｌｅｔ  Ｍａｎａｇｅｒ７３１によって管理される。Ｍｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ７３２は、全てのＸｌｅｔ  Ｍａｎａｇｅｒ７３１のライフサイクルを管理するクラスである。ここでは、５個のＸｌｅｔ  Ｍａｎａｇｅｒ７３１のライフサイクルが全て１個のＭｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ７３２によって管理される。ＪＳＤＫ  Ｍａｎａｇｅｒ７３３は、ＪＳＤＫシステム全体のライフサイクルを管理するクラスである。例えば、Ｍｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ７３２，Ｓｅｎｄ  Ｍａｎａｇｅｒ７４１，Ｅｖｅｎｔ  Ｍａｎａｇｅｒ７４２，Ｓｙｓｔｅｍ  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ７４３，Ｐａｎｅｌ  Ｍａｎａｇｅｒ７４４，Ｉｎｓｔａｌｌ  Ｍａｎａｇｅｒ７４５，Ｓｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ７４６，Ｓｅｃｕｒｉｔｙ  Ｍａｎａｇｅｒ７４７のライフサイクルが、ＪＳＤＫ  Ｍａｎａｇｅｒ７３３によって管理される。
【００４２】
Ｓｙｓｔｅｍ  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ７４３は、図３のプラットフォーム１３２からのシステムイベント（電力モード等）の管理を行うクラスである。Ｐａｎｅｌ  Ｍａｎａｇｅｒ７４４は、１個のＸｌｅｔがオペレーションパネル２０２の画面を占有する際の調停等を行うクラスである。Ｉｎｓｔａｌｌ  Ｍａｎａｇｅｒ７４５は、ＳＤｃａｒｄやＷｅｂからのインストールやアンインストールの管理を行うクラスである。
【００４３】
図７のＪＳＤＫシステムには、ＡＰＩとして、ＪＳＤＫ  ＡＰＩ７５１とＪＳＤＫ  ＡＰＩ７５２等が存在する。なお、ＸｌｅｔとＸｌｅｔＥｘの差異として、オブジェクトにアクセスするのにＪＳＤＫ  ＡＰＩ７５１の利用とＪＳＤＫプラットフォーム１４８へのアクセスが可能である点が挙げられる。図３の融合機１０１にはさらに、図７のＪＳＤＫシステムに係る要素として、Ｃ言語とＪａｖａ（登録商標）言語のインタフェースとなるＪＳＤＫ  Ｓｅｓｓｉｏｎ７５３とＮａｔｉｖｅ  ＪＳＤＫ  Ｓｅｓｓｉｏｎ７５４等が存在する。図３の融合機１０１にはさらに、図７のＪＳＤＫシステムに係る要素として、Ｊａｖａ（登録商標）コンパイラによりソースコードからバイトコードに一括翻訳されたＪａｖａ（登録商標）プログラムを逐次実行するためのＪａｖａ（登録商標）仮想マシンであるＣＶＭ（コンパクト仮想マシン）７５５等が存在する。
【００４４】
（Ｓｅｃｕｒｉｔｙ  Ｍａｎａｇｅｒ）
Ｓｅｃｕｒｉｔｙ  Ｍａｎａｇｅｒ（セキュリティマネージャ）７４７は、Ｊａｖａ（登録商標）で元々提供されているＳｅｃｕｒｉｔｙＭａｎａｇｅｒクラスを拡張したクラスであり、ＪＳＤＫプラットフォーム１４８上において不正なアプリケーションが実行されないよう、セキュリティ機構を実現する。すなわち、ユーザアプリ７０１は、ＪＳＤＫプラットフォーム１４８における各種のクラスのうち、ＪＳＤＫ公開クラスとＪａｖａ（登録商標）標準クラス（以下、単に「標準クラス」という。）に対するアクセスが許可されるが、そのアクセス時には、ユーザアプリ７０１からセキュリティマネージャ７４７に対してアクセス権限に関する問い合わせが行われる。
【００４５】
図８は、セキュリティマネージャの機能を説明するための図である。例えば、ユーザアプリ７０１が、ＪＳＤＫプラットフォーム１４８におけるＪＳＤＫ公開クラス１４８ａにアクセスすると（Ｓ１０１）、それに基づいてＪＳＤＫ非公開クラス１４８ｂ及び標準クラス１４８ｃが呼び出される（Ｓ１０２、Ｓ１０３）。Ｓ１０１〜Ｓ１０３は、例えば、或るＪＳＤＫ公開クラス１４８ａのコンストラクタがユーザアプリ７０１に呼び出され、当該ＪＳＤＫ公開クラス１４８ａのスーパークラスとしてのＪＳＤＫ非公開クラス１４８ｂ及び標準クラス１４８ｃのコンストラクタが連鎖的に呼び出されるような場合を想定するとよい。なお、ＪＳＤＫ公開クラスとは、そのインタフェースが公開されているクラスをいい、ＪＳＤＫ非公開クラスとは、そのインタフェースが非公開のクラスをいう。
【００４６】
続いて、標準クラス１４８ｃは、セキュリティマネージャ７４７に対して当該ユーザアプリ７０１の権限の問い合わせを行う（Ｓ１０４）。問い合わせに応じ、セキュリティマネージャ７４７は、Ｐｏｌｉｃｙオブジェクトより、ＪＳＤＫプラットフォーム１４８のセキュリティポリシーを読み出し、当該ユーザアプリ７０１の権限を判断する（Ｓ１０５）。なお、Ｐｏｌｉｃｙオブジェクトは、ＪＳＤＫプラットフォーム１４８の起動時等において、ＪＳＤＫプラットフォーム１４８のセキュリティポリシーが予め設定されたファイル（以下「セキュリティポリシー設定ファイル」という。）よりセキュリティポリシーを読み込んで保持しておくためのオブジェクトである（Ｓ１０６）。
【００４７】
セキュリティマネージャ１４８は、当該ユーザアプリ７０１が、当該ＪＳＤＫ非公開クラス１４８ｂに対するアクセス権を有していないと判断すると例外を発生させる（Ｓ１０７）。当該例外は、標準クラス１４８ｃ、ＪＳＤＫ非公開クラス１４８ｂ、ＪＳＤＫ公開クラス１４８ａを介してユーザアプリ７０１に通知される（Ｓ１０８、Ｓ１０９、Ｓ１１０）。
【００４８】
本実施の形態におけるＪＳＤＫプラットフォーム１４８のセキュリティポリシーは、セキュリティレベルに基づいて定義されている。ここで、セキュリティレベルとは、各ユーザアプリ７０１の権限を分類するための情報をいい、例えば、３段階のレベルを有する。すなわち、セキュリティポリシー設定ファイルには、セキュリティレベルごとに融合機１０１の各種のリソースに対するアクセス権限が設定されている。
【００４９】
図９は、セキュリティポリシー設定ファイルの定義例を示す図である。図９では、便宜上、アクセス権限の内容の具定例は記載されていないが、例えば、レベル１のアプリケーションは、ＪＳＤＫプラットフォーム１４８と同じ権限（非公開クラス１４８ｂも含めて全てのリソースへのアクセスが可能な権限）を有し、レベル２のアプリケーションは、レベル１に比べてリソースへのアクセスが制限され、レベル３のアプリケーションは、リソースへのアクセスが更に制限されるといったような内容が定義される。
【００５０】
一方、各ユーザアプリ７０１には、予めセキュリティレベルが付与されている。したがって、図８においてセキュリティマネージャ７４７は、当該ユーザアプリ７０１のセキュリティレベルとセキュリティレベル設定ファイルの設定内容とを照合することにより、当該ユーザアプリ７０１の権限を判断する。
【００５１】
なお、セキュリティレベルの付与及び変更は、例えば融合機１０１のベンダに対する申請によって行うようにしてもよい。そうすることで、各ユーザアプリ７０１の権限の管理を融合機１０１のベンダが厳格に行うことができる。また、各ユーザアプリ７０１に対するセキュリティレベルの値は、所定のファイル内に定義しておき、そのファイルに基づいてセキュリティマネージャ７４７が判断してもよいし、ユーザアプリ７０１がセキュリティマネージャ７４７に通知するようにしてもよい。
【００５２】
例えば、レベル１が付与されたユーザアプリ７０１の動作は、図１０のようになる。図１０は、レベル１のユーザアプリの動作を説明するための図である。
【００５３】
レベル１のユーザアプリ７０１は、ＪＳＤＫ公開クラス１４８ａのみならず、ＪＳＤＫ非公開クラス１４８ｂに対するアクセスも認められる。したがって、いずれかに対する呼び出しに基づき（Ｓ２０１、Ｓ２０２）、標準クラス１４８ｃが呼び出される（Ｓ２０３、Ｓ２０４）。標準クラス１４８ｃは、セキュリティマネージャ７４７に対して当該ユーザアプリ７０１の権限の問い合わせを行う。セキュリティマネージャ７４７は、当該ユーザアプリ７０１のセキュリティレベル（レベル１）とセキュリティポリシー設定ファイルの設定内容とを照合することにより、当該ユーザアプリ７０１の当該非公開クラス１４８ｂに対するアクセスを許可する。
【００５４】
（列挙型）
以下、上記のような仕組みを有するＪＳＤＫプラットフォーム１４８において、Ｊａｖａ（登録商標）言語で列挙型を実現する例について説明する。
【００５５】
図１１は、本発明の実施の形態におけるＪＳＤＫプラットフォームにおいて列挙型の実現例を説明するための図である。
【００５６】
図１１では、列挙値をクラスのオブジェクトとして定義する例を示している。すなわち、定義８００は、当該クラスとしてＪＳＤＫプラットフォーム１４８に予め実装されるFontStyleクラスの定義例を示す。記述８０１に示されるように、FontStyleクラスの定義にはfinal修飾子が付加されている。これによって、FontStyleクラスの継承が禁止される。また、FontStyleクラスはCoreFontクラスを継承している。ここで、CoreFontクラスはＪＳＤＫ非公開クラスの一つとして定義されているクラスである。更に、記述８０４に示されるように、FontStyleクラスのコンストラクタには、public修飾子及びprotected修飾子が付加されていない。これによって、同一のパッケージ内及びサブクラスに対してのみFontStyleクラスのオブジェクトの生成が許可される。また、記述８０５に示されるように、コンストラクタの中では、親クラス（ここではCoreFontクラス）のコンストラクタを呼び出すようにしておく。
【００５７】
記述８０２及び記述８０３では、列挙値としてFontSytleクラスのオブジェクトであるPLAINとBOLDとがインスタンス化されている。なお、FontStyleクラスは、ＪＳＤＫ公開クラスとして実装されている。
【００５８】
FontStyleクラスを上記のように定義することで、列挙値の拡張が必要となった場合（例えば、新たな列挙値としてITALICの追加が必要となった場合）、定義９００に示されるような実装をオプションライブラリとして追加的に行うことができる。ここで、追加的にとは、ＪＳＤＫプラットフォーム１４８のソースコード（ここでは、FontStyleクラスの定義）を変更する必要がないことを意味する。すなわち、当該オプションライブラリを配布されたユーザは、当該オプションライブラリを融合機１０１にインストールすれば列挙値の拡張を行うことができる。
【００５９】
定義９００では、記述９０１に示されるようにFontStyleクラスのサブクラスとしてFontStyleSubクラスを定義している。なお、FontStyleSubクラスについてもfinal修飾子を付加することで継承を禁止しておくとよい。ところで、上記においてFontStyleクラスの継承は禁止される旨を説明したが、厳密には、同一パッケージ内であればFontStyleクラスの継承は許可される。したがって、FontStyleSubクラスをFontStyleクラスと同一パッケージとすることでFontStyleクラスの継承が可能となる。図１１では、FontStyleクラスのパッケージは、記述８０６に示されるように「ja.co.rrr.function.font」であるため、FontStyleSubクラスのパッケージも「ja.co.rrr.function.font」（記述９０５）としておく。
【００６０】
記述９０２は、新たな列挙値のITALICがFontStyleSubクラスのインスタンスとして定義されている。但し、FontStyleSubクラスは、FontStyleクラスのサブクラスであるため、ITALICはFontStyle型として扱うことができる。
【００６１】
なお、記述９０３に示されるように、FontStyleSubクラスのコンストラクタは、FontStyleクラスと同様にpublic修飾子及びpretected修飾子を付加しない。また、記述９０４に示されるように親クラス（ここではFontStyleクラス）のコンストラクタを呼び出すようにしておく。
【００６２】
図１１の継承関係をクラス図に示すと図１２のようになる。図１２は、本発明の実施の形態において列挙値を定義するためのクラスの継承関係を示す図である。
【００６３】
図１１で既に説明したとおり、FontStyleクラス５０２は、CoreFontクラス５０１を継承する。ここで、CoreFontクラスはＪＳＤＫ非公開クラスであり、セキュリティレベルがレベル１のアプリケーションでないとアクセスは許可されない。一方、FontStyleクラス５０２は、ＪＳＤＫ公開クラスである。なお、CoreFontクラス５０１及びFontStyleクラス５０２は、ＪＳＤＫプラットフォーム１４８に予め実装されているクラスである。
【００６４】
フォントの種類を表す列挙値について新たな拡張が必要となった場合、FontStyleクラス５０２を継承して、FontStyleSubクラス５０３が定義される。ここで、ユーザアプリ７０１において、FontStyleSubクラス５０３を継承したユーザ拡張クラス５０４をパッケージ「ja.co.rrr.function.font」内に定義しようとしても、当該ユーザアプリ７０１に対してレベル１のセキュリティレベルが付与されなければ、ユーザ拡張クラス５０４を利用することはできない。
【００６５】
すなわち、図８において説明したように、ユーザ拡張クラス５０４をインスタンス化しようとすると、FontStyleSubクラス５０３、FontStyleクラス５０２及びCoreFontクラス５０１のコンストラクタが呼び出され、CoreFontクラス５０１からのセキュリティマネージャ７４７への問い合わせによって、セキュリティマネージャ７４７は、当該ユーザアプリ７０１の権限（セキュリティレベル）を判断する。その結果当該ユーザアプリ７０１のセキュリティレベルがレベル１でなければ、セキュリティマネージャ７４７は例外を発生させる。これによって、ユーザ拡張クラス５０４の利用を禁止し、予期せぬ列挙値の拡張を防止することができる。
【００６６】
なお、ユーザ拡張クラス５０４をFontStyleSubクラス５０３と異なるパッケージにおいて定義した場合は、FontStyleSubクラス５０３の定義におけるfinal修飾子によって、異なるパッケージにおける継承は禁止されているため、やはりセキュリティマネージャ７４７によって例外が発生させられる。
【００６７】
なお、上記においては、列挙値の拡張例を説明したが、本発明は、列挙値の拡張に限定されず、ＪＳＤＫプラットフォーム１４８のようなフレームワークに対するサブクラス化等による様々な機能拡張を行う際のセキュリティの確保に対して有効である。
【００６８】
以上、本発明の実施例について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００６９】
１０１  融合機
１１１  ハードウェア
１１２  ソフトウェア
１１３  融合機起動部
１２１  撮像部
１２２  印刷部
１２３  その他のハードウェア
１３１  アプリケーション
１３２  プラットフォーム
１３３  アプリケーションプログラムインタフェース
１３４  エンジンインタフェース
１３５  仮想アプリケーションサービス
１４１  コピーアプリ
１４２  プリンタアプリ
１４３  スキャナアプリ
１４４  ファクシミリアプリ
１４５  ネットワークファイルアプリ
１４６  ＣＳＤＫアプリ
１４７  ＪＳＤＫアプリ
１４８  ＪＳＤＫプラットフォーム
１５１  コントロールサービス
１５２  システムリソースマネージャ
１５３  ハンドラ
１６１  ネットワークコントロールサービス
１６２  ファクシミリコントロールサービス
１６３  デリバリコントロールサービス
１６４  エンジンコントロールサービス
１６５  メモリコントロールサービス
１６６  オペレーションパネルコントロールサービス
１６７  サーティフィケーションコントロールサービス
１６８  ユーザディレクトリコントロールサービス
１６９  システムコントロールサービス
１７１  ファクシミリコントロールユニットハンドラ
１７２  イメージメモリハンドラ
１８１  Ｗｅｂブラウザ
１８２  Ｗｅｂサーバソフト
１８３  ＳＤＫアプリケーションサービス
２０１  コントローラ
２０２  オペレーションパネル
２０３  ファクシミリコントロールユニット
２１１  ＣＰＵ
２１２  ＡＳＩＣ
２２１  ＮＢ
２２２  ＳＢ
２３１  ＭＥＭ−Ｐ
２３２  ＭＥＭ−Ｃ
２３３  ＨＤＤ
２３４  メモリカードスロット
２３５  メモリカード
２４１  ＮＩＣ
２４２  ＵＳＢデバイス
２４３  ＩＥＥＥ１３９４デバイス
２４４  セントロニクスデバイス
３０１  原稿セット部
３０２  給紙部
３０３  排紙部
３１１  タッチパネル
３１２  テンキー
３１３  スタートボタン
３１４  リセットボタン
３１５  機能キー
３１６  初期設定ボタン
３２１  ＡＤＦ
３２２  フラットベッド
３２３  フラットベッドカバー
５０１  CoreFontクラス
５０２  FontStyleクラス
５０３  FontStyleSubクラス
５０４  ユーザ拡張クラス
７１１  ＪＳＤＫ  ＧＵＩ  Ｍａｎａｇｅｒ
７１２  Ｔａｓｋ  Ｂａｒ  Ｍａｎａｇｅｒ
７２１  ＪＳＤＫ  Ｍａｉｎ
７２２  ＪＳＤＫ  Ｅｎｖｉｒｏｎｍｅｎｔ
７２３  Ｌｏｃａｌｅ  Ｍａｎａｇｅｒ
７３１  Ｘｌｅｔ  Ｍａｎａｇｅｒ
７３２  Ｍｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ
７３３  ＪＳＤＫ  Ｍａｎａｇｅｒ
７４１  Ｓｅｎｄ  Ｍａｎａｇｅｒ
７４２  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ
７４３  Ｓｙｓｔｅｍ  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ
７４４  Ｐａｎｅｌ  Ｍａｎａｇｅｒ
７４５  Ｉｎｓｔａｌｌ  Ｍａｎａｇｅｒ
７４６  Ｓｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ
７４７  Ｓｅｃｕｒｉｔｙ  Ｍａｎａｇｅｒ
７５１  ＪＳＤＫ  ＡＰＩ
７５２  ＪＳＤＫ  ＡＰＩ
７５３  ＪＳＤＫ  Ｓｅｓｓｉｏｎ
７５４  Ｎａｔｉｖｅ  ＪＳＤＫ  Ｓｅｓｓｉｏｎ
７５５  ＣＶＭ
【図１】
2011165222.tif 000003
【図２】
2011165222.tif 000004
【図３】
2011165222.tif 000005
【図４】
2011165222.tif 000006
【図５】
2011165222.tif 000007
【図６】
2011165222.tif 000008
【図７】
2011165222.tif 000009
【図８】
2011165222.tif 000010
【図９】
2011165222.tif 000011
【図１０】
2011165222.tif 000012
【図１１】
2011165222.tif 000013
【図１２】
2011165222.tif 000014