(57)【特許請求の範囲】
【請求項１】
アプリケーションプログラムを実行可能な機器であって、
前記アプリケーションプログラムからの処理の実行要求に応じ、前記処理に関する情報を生成する生成手段と、
前記実行要求に係るユーザの識別情報を取得する第一の取得手段と、
前記実行要求に係るアプリケーションプログラムの識別情報を取得する第二の取得手段と、
前記生成手段によって生成された情報、前記第一の取得手段によって取得されたユーザの識別情報、及び前記第二の取得手段によって取得されたアプリケーションプログラムの識別情報を含めて前記処理に関する履歴情報を記憶装置に記録する履歴情報記録手段と、
前記生成手段による前記処理に関する情報の生成に成功し、前記第一の取得手段によるユーザの識別情報の取得に成功し、前記第二の取得手段によるアプリケーションプログラムの識別情報の取得に成功し、かつ、前記履歴情報を前記記憶装置に記録できる場合に、前記実行要求に基づく処理を実行する処理実行手段と、
を有することを特徴とする機器。
【請求項２】
前記履歴情報記録手段は、前記処理のパラメータを前記履歴情報に含めることを特徴とする請求項１記載の機器。
【請求項３】
アプリケーションプログラムを実行可能な機器が実行する履歴情報記録方法であって、
前記アプリケーションプログラムからの処理の実行要求に応じ、前記処理に関する情報を生成する生成手順と、
前記実行要求に係るユーザの識別情報を取得する第一の取得手順と、
前記実行要求に係るアプリケーションプログラムの識別情報を取得する第二の取得手順と、
前記生成手順によって生成された情報、前記第一の取得手順によって取得されたユーザの識別情報、及び前記第二の取得手順によって取得されたアプリケーションプログラムの識別情報を含めて前記処理に関する履歴情報を記憶装置に記録する履歴情報記録手順と、
前記生成手順による前記処理に関する情報の生成に成功し、前記第一の取得手順によるユーザの識別情報の取得に成功し、前記第二の取得手順によるアプリケーションプログラムの識別情報の取得に成功し、かつ、前記履歴情報を前記記憶装置に記録できる場合に、前記実行要求に基づく処理を実行する処理実行手順と、
を有することを特徴とする履歴情報記録方法。
【請求項４】
前記履歴情報記録手順は、前記処理のパラメータを前記履歴情報に含めることを特徴とする請求項３記載の履歴情報記録方法。
【請求項５】
アプリケーションプログラムを実行可能な機器に、
前記アプリケーションプログラムからの処理の実行要求に応じ、前記処理に関する情報を生成する生成手順と、
前記実行要求に係るユーザの識別情報を取得する第一の取得手順と、
前記実行要求に係るアプリケーションプログラムの識別情報を取得する第二の取得手順と、
前記生成手順によって生成された情報、前記第一の取得手順によって取得されたユーザの識別情報、及び前記第二の取得手順によって取得されたアプリケーションプログラムの識別情報を含めて前記処理に関する履歴情報を記憶装置に記録する履歴情報記録手順と、
前記生成手順による前記処理に関する情報の生成に成功し、前記第一の取得手順によるユーザの識別情報の取得に成功し、前記第二の取得手順によるアプリケーションプログラムの識別情報の取得に成功し、かつ、前記履歴情報を前記記憶装置に記録できる場合に、前記実行要求に基づく処理を実行する処理実行手順と、
を実行させるためのプログラム。
【請求項６】
前記履歴情報記録手順は、前記処理のパラメータを前記履歴情報に含めることを特徴とする請求項５記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機器、履歴情報記録方法、及びプログラムに関し、特にアプリケーションが実行する処理に関する履歴情報を記録する機器、履歴情報記録方法、及びプログラムに関する。
【背景技術】
【０００２】
近年では、主に複合機又は融合機と呼ばれる画像形成装置において、その出荷後に、公開されたＡＰＩ（Application Program Interface）を利用して新たなアプリケーションの開発及びインストールが可能とされているものがある（例えば、特許文献１）。斯かる画像形成装置では、当該画像形成装置のベンダによって開発されたアプリケーションのみならず、サードベンダによって開発されたアプリケーションをインストールすることが可能となり、画像形成装置の機能の拡張性を著しく向上させることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、不特定のアプリケーションがインストールされることにより、画像形成装置のセキュリティが低下する可能性が有る。各アプリケーションが不正なアプリケーションであるか否かを事前に判断するのは困難だからである。特に、近年の画像形成装置は大規模記憶装置を備え、当該大規模記憶装置内に各種の機密情報（ユーザの個人情報、スキャンされた機密文書の画像データ等）を管理可能となっている。このような機密情報等が不特定のアプリケーションによって不正にアクセスされるのは好ましくない。
【０００４】
斯かる不正なアプリケーションの存在を検知するための手段として、ログ情報の記録は有効である。但し、従来は、ログ情報の記録を実現するためにアプリケーションに何らかの実装（例えば、ログの記録関数の呼び出し等）が必要とされていた。しかし、このような仕組みの場合、アプリケーション内に適切に当該実装が行われなければ、ログ情報の記録漏れが発生する。その結果、不正なアプリケーションの存在を検知できないという問題がある。
【０００５】
本発明は、上記の点に鑑みてなされたものであって、アプリケーションが実行する処理に関する履歴情報を適切に記録することのできる機器、履歴情報記録方法、及びプログラムの提供を目的とする。
【課題を解決するための手段】
【０００６】
そこで上記課題を解決するため、本発明は、アプリケーションプログラムを実行可能な機器であって、前記アプリケーションプログラムからの処理の実行要求に応じ、該実行要求に係る識別情報を含めて前記処理に関する履歴情報を記憶装置に記録する履歴情報記録手段と、前記履歴情報を前記記憶装置に記録できる場合に、前記実行要求に基づく処理を実行する処理実行手段とを有することを特徴とする。
【０００７】
このような機器では、アプリケーションが実行する処理に関する履歴情報を適切に記録することができる。
【発明の効果】
【０００８】
本発明によれば、アプリケーションが実行する処理に関する履歴情報を適切に記録することのできる機器、履歴情報記録方法、及びプログラムを提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態におけるシステム構成例を示す図である。
【図２】本発明の実施の形態における機器のハードウェア構成例を示す図である。
【図３】第一の実施の形態における機器のソフトウェア構成例を示す図である。
【図４】第一の実施の形態における機器の処理概要を説明するためのフローチャートである。
【図５】第一の実施の形態における機器の処理手順を説明するためのシーケンス図である。
【図６】第二の実施の形態における機器のソフトウェア構成例を示す図である。
【図７】第二の実施の形態における機器の処理概要を説明するためのフローチャートである。
【図８】第二の実施の形態における機器の処理手順を説明するためのシーケンス図である。
【発明を実施するための形態】
【００１０】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態におけるシステム構成例を示す図である。図１において、ログ収集サーバ１０と、機器２０ａ、機器２０ｂ及び機器２０ｃ（以下、総称する場合「機器２０」という。）とは、オフィスにおけるＬＡＮ（Local Area Network）等のネットワーク１５（有線又は無線の別は問わない。）を介して接続されている。
【００１１】
機器２０は、コピー、ファクシミリ、プリンタ、及びスキャナ等の複数の機能を一台の筐体において実現する画像形成装置（複合機）である。
【００１２】
ログ収集サーバ１０は、機器２０において生成される各種のログ情報を収集し、一元的に管理するコンピュータである。なお、ログ収集サーバ１０は複数台存在してもよい。
【００１３】
図２は、本発明の実施の形態における機器のハードウェア構成例を示す図である。図２において、機器２０は、コントローラ２０１、スキャナ２０２、プリンタ２０３、モデム２０４、ネットワークインタフェース２０５、及び操作パネル２０６等のハードウェアを有する。
【００１４】
コントローラ２０１は、ＣＰＵ２１１、ＲＡＭ２１２、ＲＯＭ２１３、及びＨＤＤ２１４等を有する。ＲＯＭ２１３には、各種のプログラムやプログラムによって利用されるデータ等が記録されている。ＲＡＭ２１２は、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。ＣＰＵ２１１は、ＲＡＭ２１２にロードされたプログラムを処理することにより、後述される機能を実現する。ＨＤＤ２１４は、各種のデータ（例えば、スキャンされた画像データ）を保存するために利用される。
【００１５】
スキャナ２０２は、原稿より画像データを読み取るためのハードウェアである。プリンタ２０３は、画像データを印刷用紙に印刷するためのハードウェアである。モデム２０４は、電話回線に接続するためのハードウェアであり、ＦＡＸ通信による画像データの送受信を実行するために用いられる。ネットワークインタフェース２０５は、ネットワーク１５に接続するためのハードウェアである。操作パネル２０６は、ユーザからの入力の受け付けや、ユーザに対する情報の通知等を行うめのボタン、液晶パネル等を備えたハードウェアである。
【００１６】
図３は、第一の実施の形態における機器のソフトウェア構成例を示す図である。第一の実施の形態では、通信ログ（通信履歴）の記録について説明する。図３において、機器２０は、ＳＤＫアプリ３０、ＳＤＫプラットフォーム４０、ログサービス５１及びソケットライブラリ５２等のソフトウェアを含む。これらの各ソフトウェアは、ＲＡＭ２１２にロードされ、ＣＰＵ２１１に処理を実行させることによりその機能を実現する。
【００１７】
ログサービス５１は、後述されるＳＤＫアプリ３０によって行われる通信（特に、暗号化通信）に関するログをログ記憶領域６０に記録する。ログサービス５１は、また、ログ記憶領域６０に記録されているログのログ収集サーバ１０への転送をも制御する。なお、ログ記憶領域６０は、ＲＡＭ２１２又はＨＤＤ２１４に設けられたログ記録用の記録領域である。ソケットライブラリ５２は、いわゆるソケットライブラリであり、ＴＣＰ／ＩＰ通信において利用するＡＰＩを上位モジュールに対して提供する。
【００１８】
ＳＤＫプラットフォーム４０は、ＳＤＫアプリ３０の実行環境を提供するソフトウェアプラットフォームである。同図では、ＳＤＫ共通処理モジュール４０１、ＪＶＭ（Java（登録商標） Virtual Machine）４０２、ＪＳＳＥ４０３、通信サービス４０４、及び通信ログサービス４０５等がＳＤＫプラットフォーム４０に含まれている。
【００１９】
ＪＶＭ４０２は、Ｊａｖａ（登録商標）バイトコードをＯＳ上で動作可能なネイティブコードに変換して実行する。なお、ＪＶＭ４０２より上に図示されているソフトウェアは、Ｊａｖａ（登録商標）のバイトコードによって実装されたものである。ＪＳＳＥ４０３は、Ｊａｖａ（登録商標）標準の暗号化通信（ＳＳＬ（Secure Socket Layer）等）のフレームワーク及び実装である。
【００２０】
通信サービス４０４及び通信ログサービス４０５は、ＯＳＧｉ（Open Service Gateway initiative）フレームワーク上で動作するバンドルである。ＯＳＧｉフレームワークは、ＯＳＧｉアライアンスによる標準化技術であり、Ｊａｖａ（登録商標）言語に基づいたオープンなソフトウェア部品化技術に基づいて作成されたソフトウェア部品の実行環境を提供するソフトウェアプラットフォームである。ＯＳＧｉフレームワーク上において、Ｊａｖａ（登録商標）言語のソフトウェアは「バンドル」と呼ばれるソフトウェア部品の形で実装される。一つのバンドルは、一つのＪＡＲ（Java（登録商標） ARchive）ファイルによって構成され、それぞれ独立して動的に（装置の再起動を要することなく）インストール可能である。通信サービス４０４は、ＨＴＴＰ（HyperText Transfer Protocol）、ＦＴＰ（File Transfer Protocol）、ＳＮＭＰ（Simple Network Management Protocol）、ＬＤＡＰ（Lightweight Directory Access Protocol）等のいわゆるアプリケーション層の通信プロトコルに関する通信処理を制御するとともに、当該通信処理に関するインタフェースをＳＤＫアプリ３０に提供する。通信サービス４０４は、ＳＤＫアプリ３０より暗号化通信が要求された場合は、ＪＳＳＥ４０３を利用して暗号化通信を行う。通信ログサービス４０５は、ＳＤＫアプリ３０より通信要求が発生した際のログ（通信ログ）の記録処理を制御する。
【００２１】
その他、ＳＤＫプラットフォーム４０には、Ｊａｖａ（登録商標）の標準のクラスや、機器２０用に拡張されたクラスに関するクラスライブラリ等も含まれる。例えば、同図には、セキュリティマネージャ４０６がＪＶＭ４０２の一部として示されている。セキュリティマネージャ４０６は、Ｊａｖａ（登録商標）標準のＳｅｃｕｒｉｔｙＭａｎａｇｅｒクラスを拡張したクラスによって実装されている。したがって、セキュリティマネージャ４０６は、予めポリシーファイルに定義されたアクセス制御情報に基づいて、ＳＤＫアプリ３０による、ファイル、ネットワークソケット、及びプリンタ等のリソースへのアクセスを制限する。すなわち、ＳＤＫプラットフォーム４０は、各種リソースへのアクセスが発生する際に、セキュリティマネージャ４０６に対する呼び出しが発生するように構成されている。セキュリティマネージャ４０６は、その呼び出しに応じてリソースへのアクセスの可否を判断する。斯かる仕組みを用いて、本実施の形態では、セキュリティマネージャ４０６が、ＳＤＫアプリ３０による暗号化通信の実行を検知する。
【００２２】
ＳＤＫアプリ３０は、ＳＤＫプラットフォーム４０において公開されている専用のＳＤＫ（ソフトウェア開発キット）を使用して作成されたアプリケーション（以下「ＳＤＫアプリ」という。）である。ＳＤＫプラットフォーム４０上には複数のＳＤＫアプリ３０をインストール可能である。
【００２３】
以下、第一の実施の形態における機器２０の処理手順について説明する。図４は、第一の実施の形態における機器の処理概要を説明するためのフローチャートである。
【００２４】
機器２０において、通信を開始するＳＤＫアプリ３０は、通信処理の実行要求をＳＤＫプラットフォーム４０に対して行う（Ｓ１０１）。続いて、機器２０は、ＳＤＫアプリ３０によって行われる通信が暗号化通信であるか否かを判定する（Ｓ１０２）。暗号化通信である場合（Ｓ１０２でＹＥＳ）、機器２０は、ログ情報の記録の準備を行う（Ｓ１０３）。具体的にはログ情報として記録する項目の値を判定する。例えば、通信に利用される通信プロトコル及び暗号化プロトコルが判定される。続いて、機器２０は通信用のソケットをオープンし（Ｓ１０６）、ログ情報を記録する（Ｓ１０７）。続いて、機器２０は、ＳＤＫアプリ３０によって指定されたプロトコルによって通信処理を行う（Ｓ１０９）。
【００２５】
一方、暗号化通信でない場合（Ｓ１０２でＮＯ）、機器２０は、機器内通信であるか否かを判定する（Ｓ１０４）。機器内通信とは、機器２０内部におけるプログラム間の通信（例えば、プロセス間通信）をいう。機器内通信でない場合（Ｓ１０４でＮＯ）、機器２０は、ログ情報の記録の準備として、通信に利用される通信プロトコルを判定する（Ｓ１０５）。なお、暗号化通信ではないため、暗号化プロトコルの値は、「無し」とされる。続いて、ステップＳ１０６〜Ｓ１０９が実行される。
【００２６】
また、機器内通信の場合（Ｓ１０４でＹＥＳ）、機器２０はソケットをオープンし（Ｓ１０８）、ＳＤＫアプリ３０によって指定されたプロトコルによって通信処理を行う（Ｓ１０９）。したがって、機器内通信の場合ログ情報の記録は行われない。これは、機器内通信については、セキュリティ上の観点より重要度が低いからと考えられるからである（すなわち、機器２０の外部との通信の方が重要度が高いと考えるからである。）。また、機器内通信の全てについてまでログ情報を記録した場合、短期間でログ記憶領域６０を消費してしまうからである。なお、ログ記憶領域６０の消費を更に抑制したい場合、暗号化通信についてのみログ情報を記録するようにしてもよい。通信内容を暗号化するということは、その通信自体が重要なものであると考えられる。したがって、暗号化通信についてのみログ情報を記録することで、ログ記憶領域６０の消費を抑制しつつ、重要な通信に関するログ情報を記録することができる。
【００２７】
続いて、図４においてその概要を説明した処理手順について更に詳細に説明する。図５は、第一の実施の形態における機器の処理手順を説明するためのシーケンス図である。
【００２８】
ＳＤＫアプリ３０が通信サービス４０４に対して所望の通信プロトコル（ＨＴＴＰ、ＦＴＰ、ＳＮＭＰ、ＬＤＡＰ等）による暗号化通信の実行を要求すると、通信サービス４０４は、ＪＳＳＥ４０３に対して暗号化通信の実行を要求する（Ｓ２０１）。なお、図中では、便宜上通信サービス４０４は省略されている。ＳＤＫアプリ３０からの通信サービス４０４に対する要求は、例えば所望の通信プロトコルに応じたクラスのメソッドの呼び出しによって実現される。すなわち、通信サービス４０４内には通信プロトコルごとにクラスが存在する。
【００２９】
また、通信サービス４０４からＪＳＳＥ４０３に対する要求は、ＪＳＳＥ４０３に含まれるクラスのうち、ＳＤＫアプリ３０より要求された通信に応じたクラスのメソッドの呼び出しによって実現される。例えば、ＳＤＫアプリ３０の所望の通信プロトコルや、クライアントとしての通信かサーバとしての通信か等に応じて呼び出されるクラス（ＪＳＳＥ４０３のクラス）が異なる。
【００３０】
ＪＳＳＥ４０３において呼び出されたクラスは、呼び出されたこと（通信要求の発生）をセキュリティマネージャ４０６に通知する（Ｓ２０２）。続いて、セキュリティマネージャ４０６は、通信で使用される通信プロトコル及び暗号化プロトコルを判定する（Ｓ２０３）。当該判定は、スタックトレースによって行われる。すなわち、クラス間の呼び出し関係（呼び出しの階層状態）は、ＲＡＭ２１２内に形成されるスタック（コールスタック）内に記録されている。セキュリティマネージャ４０６は、コールスタックを参照し、ＪＳＳＥ４０３からの呼び出しの経路を遡ることによって、ＪＳＳＥ４０３において呼び出されたクラス（クラス名）、通信サービス４０４において呼び出されたクラス（クラス名）を把握する。通信サービス４０４において呼び出されたクラス名によって使用される通信プロトコルが判定され、ＪＳＳＥ４０３において呼び出されたクラス名によって、暗号化通信が要求されていること及び暗号化通信に使用される暗号化プロトコルが判定される。なお、暗号化通信が要求されていない場合は、ＪＳＳＥ４０３のクラスに対する呼び出しは行われない。したがって、セキュリティマネージャ４０６は、コールスタック内に暗号化通信に関するクラス（ＪＳＳＥ４０３のクラス）が含まれていない場合は、暗号化通信でないと判定する。
【００３１】
暗号化通信の場合、セキュリティマネージャ４０６は、判定された通信プロトコル及び暗号化プロトコルの識別情報（例えば、プロトコル名）をログ情報として通信ログサービス４０５に通知する（Ｓ２０４）。通信ログサービス４０５は、当該ログ情報の記録をＳＤＫ共通処理モジュール４０１を介してログサービス５１に要求する（Ｓ２０５、Ｓ２０６）。
【００３２】
続いて、ログサービス５１は、ログ記憶領域６０の空き容量等を確認し、ログ情報の記録（書き込み）の可否を判定する（Ｓ２０７）。ログ記憶領域６０に十分空き容量が有る場合、ログサービス５１はログ記憶領域６０にログ情報を記録する（Ｓ２０８）。この際、ログサービス５１は、通信プロトコル及び暗号化プロトコルの識別情報に加え、時刻情報、及びログＩＤ等を記録する。ログＩＤは、各ログ（一回の書き込み分のログ）に対して一意なＩＤである。続いて、ログサービス５１は、ログ情報の記録に成功したことをＳＤＫ共通処理モジュール４０１に応答する（Ｓ２０９）。ＳＤＫ共通処理モジュール４０１は、ログ情報の記録に成功したため通信処理が可能であることをセキュリティマネージャ４０６に通知する（Ｓ２１０）。セキュリティマネージャ４０６は、当該通知を受けて、ステップＳ２０２において通知された通信要求に係る処理を許可する旨の応答をＪＳＳＥ４０３に対して行う（Ｓ２１１）。ＪＳＳＥ４０３は、セキュリティマネージャ４０６からの許可を受けて、ＳＤＫアプリ３０によって要求された通信処理（通信の開始、データの送受信、又は通信の終了等）をソケットライブラリ５２を用いて実行する（Ｓ２１２）。ＪＳＳＥ４０３は、ソケットライブラリ５２より処理結果（処理の成否）を示す情報が返却されると（Ｓ２１３）、当該情報をＳＤＫアプリ３０に返却する（Ｓ２１４）。
【００３３】
一方、ステップＳ２０７において、ログサービス５１は、ログ記憶領域６０がログフル又はニアフル（空き容量が所定値以下）の状態であり、ログ情報の書き込みは不可能又は適切ではないと判定した場合、ログ情報の記録に失敗したことをＳＤＫ共通処理モジュール４０１に応答する（Ｓ２２１）。ＳＤＫ共通処理モジュール４０１は、ログ情報の記録に失敗したため通信処理が不可能であることをセキュリティマネージャ４０６に通知する（Ｓ２２２）。セキュリティマネージャ４０６は、当該通知を受けて、ステップＳ２０２において通知された通信要求に係る処理を許可しない旨の応答をＪＳＳＥ４０３に対して行う（Ｓ２２３）。ＪＳＳＥ４０３は、セキュリティマネージャ４０６からの不許可の応答を受けて、要求された通信処理は実行できないことをＳＤＫ３０に応答する（Ｓ２２４）。
【００３４】
ところで、ログ記憶領域６０がログフル又はニアフルの状態となった場合には、ログサービス５１が、ログ記録領域６０に記録されているログ情報をログ収集サーバ１０に転送するようにしてもよい。この場合、転送済みのログ情報をログ記憶領域６０より削除することで、ログ記憶領域６０の空き容量を確保することができ、通信処理を実行させることが可能となる。但し、ログ収集サーバ１０側がログフル又はニアフルの場合、ステップＳ２２１以降の処理が実行される。
【００３５】
なお、ログ収集サーバ１０へのログ情報の転送は、定期的に行われてもよいし、ログ情報の記録の度に逐次行われてもよい。いずれのタイミングで転送するかについては、操作パネル２０６を介して管理者等によって設定可能としてもよい。この場合、設定内容（転送するタイミングを示す情報）はＨＤＤ２１４に保存される。ログサービス５１は、当該設定内容を参照して、ログ情報の転送のタイミングを判定する。
【００３６】
上述したように、第一の実施の形態の機器２０によれば、暗号化通信に関して、ＳＤＫアプリ３０からの明示的なログ情報の記録要求が無くてもログ情報を強制的に記録することができる。したがって、ログの記録漏れを防止することができ、不正なＳＤＫアプリ３０の存在の検知の可能性を向上させることができる。
【００３７】
また、暗号化通信についてログ情報を記録するため、ログ情報の蓄積量の急速な肥大化を抑制しつつ、セキュリティ上重要な通信に関するログ情報を記録することができる。また、ログ情報の記録が不可能な場合は、通信処理の実行は許可されないため、不正な処理の痕跡が残されないまま当該不正な処理が実行されてしまうといった事態の発生を防止することができる。
【００３８】
次に、第二の実施の形態としてジョブログ（ジョブ履歴）の記録について説明する。第二の実施の形態では、第一の実施の形態と異なる点について説明する。したがって、特に言及しない点については第一の実施の形態と同様でよい。
【００３９】
図６は、第二の実施の形態における機器のソフトウェア構成例を示す図である。図６中、図３と同一部分には同一符号を付し、その説明は省略する。
【００４０】
同図のＳＤＫプラットフォーム４０には、ジョブサービス４０７、アプリケーションマネージャ４０８、ジョブ制御モジュール４０９、認証マネージャ４１０、及びジョブログマネージャ４１１等が含まれている。
【００４１】
ジョブサービス４０７は、実行が要求されたジョブ（印刷、スキャン、コピー、ＦＡＸ送信等）に関して、機器２０のハードウェアの制御を行う。アプリケーションマネージャ４０８は、ＳＤＫアプリ３０に関する情報（アプリケーション情報）を管理する。例えば、ＳＤＫアプリ３０のインストール時には、ＳＤＫアプリ３０のプロダクトＩＤとＳＤＫアプリ３０の識別名（アプリ名）との対応情報がアプリケーションマネージャ４０８に登録される。アプリケーションマネージャ４０８は、当該対応情報をＨＤＤ２１４に記録して管理する。なお、プロダクトＩＤとは、ＳＤＫアプリ３０の製品ごとに割り当てられるＩＤである。
【００４２】
ジョブ制御モジュール４０９、認証マネージャ４１０、及びジョブログマネージャ４１１は、ＯＳＧｉフレームワーク上で動作するバンドルである。ジョブ制御モジュール４０９は、ＳＤＫアプリ３０よりジョブの実行要求を受け付ける。認証マネージャ４１０は、機器２０のユーザのログイン時の認証を行う。機器２０のＨＤＤ２１４にはユーザ情報（例えば、ユーザ名及びパスワード）が記録されており、認証マネージャ４１０は操作パネル２０６に表示されたログイン画面に入力された情報（ユーザ名及びパスワード等）に基づいて認証を行い、認証されたユーザのユーザ名又はユーザＩＤをＲＡＭ２１２内に保持する。認証されたユーザは、ログインユーザとして機器２０のＳＤＫアプリ３０を利用して機器２０にジョブを実行させることができる。ジョブログマネージャ４１１は、ＳＤＫアプリ３０よりジョブの実行要求が発生した際のログ（ジョブログ）の記録処理を制御する。
【００４３】
以下、第二の実施の形態における機器２０の処理手順について説明する。図７は、第二の実施の形態における機器の処理概要を説明するためのフローチャートである。
【００４４】
機器２０において、ＳＤＫアプリ３０は、ユーザによって操作パネル２０６を介して実行を指示されたジョブ（印刷、スキャン、コピー、又はＦＡＸ送信等）の実行要求をＳＤＫプラットフォーム４０に対して行う（Ｓ３０１）。当該ジョブの実行要求に応じ、ジョブサービス４０７は、ジョブログに出力するジョブ情報を生成する（Ｓ３１１）。ジョブ情報には、例えば、ジョブの実行条件に関する情報（パラメータ）が含まれる。ジョブの実行条件に関するパラメータは、例えば、ジョブの実行指示の際にユーザによって入力される。ジョブ情報の生成に成功すると（Ｓ３１２でＹＥＳ）、ジョブサービス４０７は、生成されたジョブ情報をジョブログマネージャ４１１に通知する（Ｓ３１３）。
【００４５】
また、認証マネージャ４１０は、ジョブ実行要求時のログインユーザのユーザ情報（ユーザ名等）をＲＡＭ２１２より取得する（Ｓ３２１）。ユーザ情報の取得に成功した場合（Ｓ３２２でＹＥＳ）、認証マネージャ４１０は、ユーザ情報をジョブログマネージャ４１１に通知する（Ｓ３２３）。
【００４６】
また、アプリケーションマネージャ４０８は、ジョブ実行要求元のＳＤＫアプリ３０のアプリケーション情報（プロダクトＩＤ）を取得する（Ｓ３３１）。プロダクトＩＤの取得に成功した場合（Ｓ３３２でＹＥＳ）、アプリケーションマネージャ４０８は、プロダクトＩＤをジョブログマネージャ４１１に通知する（Ｓ３３３）。
【００４７】
ジョブログマネージャ４１１は、ジョブ情報、ユーザ情報、及びプロダクトＩＤの通知を受け付けると、受け付けた情報を含むログ情報を生成する（Ｓ３４１）。続いて、ログサービス５１は、ログ記憶領域６０の空き容量等を確認し、ログ情報の記録の可否をチェックする（Ｓ３４２）。ログ情報の記録が可能な場合（Ｓ３４３でＹＥＳ）、ジョブサービス４０７は要求されたジョブの実行を制御する（Ｓ３４４）。また、ログサービス５１は、ログ情報をログ記憶領域６０に記録する（Ｓ３４５）。当該ログ情報には、ジョブ情報、ユーザ情報、及びプロダクトＩＤが含まれている。したがって、「誰が（ユーザ情報）何を使って（プロダクトＩＤ）何をしたか（ジョブ情報）」を示す情報がジョブログとして記録される。
【００４８】
なお、ジョブ情報の生成に失敗した場合（Ｓ３１２でＮＯ）、ユーザ情報の取得に失敗した場合（Ｓ３２２でＮＯ）、プロダクトＩＤの取得に失敗した場合（Ｓ３３２でＮＯ）、又はログ情報の記録が不可能な場合（Ｓ３４３でＮＯ）は、ジョブの実行及びログ情報の記録は実行されない。
【００４９】
続いて、図７においてその概要を説明した処理手順について更に詳細に説明する。図８は、第二の実施の形態における機器の処理手順を説明するためのシーケンス図である。
【００５０】
ステップＳ４０１において、ＳＤＫアプリ３０は、ユーザによって操作パネル２０６を介して実行を指示されたジョブ（印刷、スキャン、コピー、又はＦＡＸ送信等）の実行要求をジョブ制御モジュール４０９に対して出力する。当該実行要求にはジョブの実行条件（ジョブ条件）に関するパラメータが含まれている。続いて、ジョブ制御モジュール４０９は、ジョブ条件のパラメータをジョブサービス４０７に設定することにより、ジョブの実行をジョブサービス４０７に要求する（Ｓ４０２）。
【００５１】
続いて、ジョブサービス４０７は、ジョブの実行を開始する旨の通知（ジョブ実行通知）を認証マネージャ４１０及びアプリケーションマネージャ４０８に対して行う（Ｓ４０３、Ｓ４０５）。また、ジョブサービス４０７は、ジョブ条件を含むジョブ情報を生成し、当該ジョブ情報をジョブログマネージャ４１１に通知する（Ｓ４０８）。
【００５２】
ジョブ実行通知（Ｓ４０３）を受けた認証マネージャ４１０は、現在のログインユーザのユーザ情報（ユーザ名等）をＲＡＭ２１２より取得し、ジョブログマネージャ４１１に通知する（Ｓ４０４）。
【００５３】
また、ジョブ実行通知（Ｓ４０５）を受けたアプリケーションマネージャ４０８は、当該ジョブ実行通知に係るスレッドの属性情報に基づいてジョブ要求元のＪＳＤＫアプリ３０のプロダクトＩＤを取得する（Ｓ４０６）。本実施の形態では、スレッドの属性情報としてスレッドグループを用いる。スレッドグループ（ＴｈｒｅａｄＧｒｏｕｐ）とは、Ｊａｖａ（登録商標）標準の仕組みであり、スレッド（Ｔｈｒｅａｄ）やスレッドグループの集合である。一つ以上のスレッドを一つのスレッドグループに関連付けることができる。また、スレッドグループには、名前（スレッドグループ名）を付加することができる。そして、各スレッド内では、当該スレッドが属するスレッドグループを識別することができる。
【００５４】
本実施の形態では、ＳＤＫアプリ３０ごとにスレッド及びスレッドグループが生成される。すなわち、一つのＳＤＫアプリ３０に対して一つのスレッドグループが割り当てられ、当該スレッドグループのスレッドグループ名には、当該ＳＤＫアプリ３０の識別名（アプリ名）が設定される。また、本実施の形態において、ジョブ制御モジュール４０９、ジョブサービス４０７、アプリケーションマネージャ４０８は、それぞれ独立したプロセス又はスレッドとして動作するプログラムではなく、ＳＤＫアプリ３０と同一スレッド上で動作するプログラムモジュール（関数又はクラスの集合）である。したがって、アプリケーションマネージャ４０８は、自らのスレッドが属するスレッドグループのスレッドグループ名に基づいてジョブ要求元のＳＤＫアプリ３０のアプリ名を取得する。また、アプリケーションマネージャ４０８は、取得されたアプリ名と、ＳＤＫアプリ３０のインストール時に生成されるアプリ名とプロダクトＩＤとの対応情報とに基づいて、ジョブ要求元のＳＤＫアプリ３０のプロダクトＩＤを取得する。アプリケーションマネージャ４０８は、取得されたプロダクトＩＤをジョブ要求元のＳＤＫアプリ３０の識別情報としてジョブログマネージャ４１１に通知する（Ｓ４０７）。
【００５５】
ジョブログマネージャ４１１は、ジョブ情報、ユーザ情報、及びプロダクトＩＤの通知を受け付けると、受け付けた情報を含むログ情報を生成する（Ｓ４０９）。続いて、ジョブログマネージャ４１１は、生成されたログ情報の記録をＳＤＫ共通処理モジュール４０１を介してログサービス５１に要求する（Ｓ４１０、Ｓ４１１）。続いて、ログサービス５１は、ログ記憶領域６０の空き容量等を確認し、ログ情報の記録（書き込み）の可否を判定する（Ｓ４１２）。ログ記憶領域６０に十分空き容量が有る場合、ログサービス５１はログ記憶領域６０にログ情報を記録する（Ｓ４１３）。この際、ログサービス５１は、ジョブ情報、ユーザ情報、及びプロダクトＩＤ等に加え、時刻情報、及びログＩＤ等を記録する。
【００５６】
続いて、ログサービス５１は、ログ情報の記録に成功したことをＳＤＫ共通処理モジュール４０１に応答する（Ｓ４１４）。ＳＤＫ共通処理モジュール４０１は、ログ情報の記録に成功したため、ジョブの実行が可能であることをジョブサービス４０７に通知する（Ｓ４１５）。ジョブサービス４０７は、当該通知を受けて、ＳＤＫアプリ３０によって要求されたジョブの実行を制御する（Ｓ４１６）。続いて、ジョブサービス４０７は、ジョブの実行状態（実行結果）を示す情報をジョブ制御モジュール４０９を介してＳＤＫアプリ３０に返却する（Ｓ４１７、Ｓ４１８）。
【００５７】
なお、ステップＳ４１２において、ログサービス５１が、ログ情報の書き込みは不可能又は適切ではないと判定した場合、第一の実施の形態と同様にログ記録領域６０に記録されているログ情報をログ収集サーバ１０に転送し、転送されたログ情報をログ記録領域６０から削除するようにしてもよい。また、ログ情報を転送するタイミングについても第一の実施の形態と同様に選択可能としてもよい。
【００５８】
上述したように第二の実施の形態の機器２０によれば、ジョブの実行に関して、ＳＤＫアプリ３０からの明示的なログ情報の記録要求が無くてもログ情報を強制的に記録することができる。したがって、ログの記録漏れを防止することができ、不正なＳＤＫアプリ３０の存在の検知の可能性を向上させることができる。また、ログ情報の記録が不可能な場合は、ジョブは実行されないため、不正な処理の痕跡が残されないまま当該不正な処理が実行されてしまうといった事態の発生を防止することができる。
【００５９】
なお、第一の実施の形態においても、第二の実施の形態と同様の仕組みによって、暗号化通信処理時のログインユーザや、暗号化通信処理の要求元のＳＤＫアプリ３０の識別名等をログ情報に含めて記録するようにしてもよい。
【００６０】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００６１】
１０          ログ収集サーバ
１５          ネットワーク
２０          機器
３０          ＳＤＫアプリ
４０          ＳＤＫプラットフォーム
５１          ログサービス
５２          ソケットライブラリ
６０          ログ記憶領域
２０１        コントローラ
２０２        スキャナ
２０３        プリンタ
２０４        モデム
２０５        ネットワークインタフェース
２０６        操作パネル
２１１        ＣＰＵ
２１２        ＲＡＭ
２１３        ＲＯＭ
２１４        ＨＤＤ
４０１        ＳＤＫ共通処理モジュール
４０２        ＪＶＭ
４０３        ＪＳＳＥ
４０４        通信サービス
４０５        通信ログサービス
４０６        セキュリティマネージャ
４０７        ジョブサービス
４０８        アプリケーションマネージャ
４０９        ジョブ制御モジュール
４１０        認証マネージャ
４１１        ジョブログマネージャ
【先行技術文献】
【特許文献】
【００６２】
【特許文献１】特開２００５−２６９６１９号公報
【図１】
0005500280.tif 000002
【図２】
0005500280.tif 000003
【図３】
0005500280.tif 000004
【図４】
0005500280.tif 000005
【図５】
0005500280.tif 000006
【図６】
0005500280.tif 000007
【図７】
0005500280.tif 000008
【図８】
0005500280.tif 000009