実施例1.
図1は、この発明のアクセス制御方法を適用したJava(登録商標)実行環境(アクセス制御実行環境に相当)を、車の監視・制御を実現するために車載PCに搭載して、監視・制御システムを構成した場合のシステム構成図である。
図1において、車両システム101は車であって、車載PC111やエンジン118や速度メータ121などの各種車載機器によって構成される。
車載PC111は、車両システム101に搭載された車載機器であって、本発明のアクセス制御機能、及び車両システム101に搭載された各種車載機器を制御するためのAPI(Application Programming Interface)を備えたJava(登録商標)実行環境を備える。更に、各種Java(登録商標)プログラムやアクセス権限管理テーブルを記憶する記憶装置112を備える。
ディスプレイ113は、車両システム101に搭載された車載機器であって、車載PC111等の車載機器からの要求により、運転者や同乗者(以降、まとめて運転者と呼ぶ)に対して、道路情報や各種車載機器の監視情報を提示するための表示装置である。
入力装置114は、キーボードや操作パネル等、運転者から制御コマンド等の指示を入力するための機器である。物理的には、タッチパネル型ディスプレイとして、ディスプレイと統合されているケースもある。
携帯電話A115は、車両システム101に搭載もしくは接続された車載機器であって、車載PC111が接続された情報系LAN(Local Area Network)117とインターネット107を接続するための無線通信機器である。
無線デバイス116は、車両システム101に搭載された車載機器であって、Bluetooth(登録商標)やIrDA(InfraRed Data Association)や無線LAN等の、狭域の無線通信を行うための通信機器である。
情報系LAN117は、上記で述べた様な、車の走行には直接的に影響しない各種車載機器を接続するためのネットワークである。
エンジン118は、車両システム101に搭載された車載機器であって、車を動かすための動力を発生させる機器である。
ドアロック119は、車両システム101に搭載された車載機器であって、車のドアの鍵の施錠/解錠を制御する機器である。
イモビライザ120は、車両システム101に搭載された車載機器であって、運転者が保持するスマートキー103等の鍵を何らかの手段で認証して、エンジン118をスタートさせるための機器である。
速度メータ121は、車両システム101に搭載された車載機器であって、エンジン118の回転数や、車の走行速度を計測するための機器である。
ヘッドライト122は、車両システム101に搭載された車載機器であって、夜間やトンネル内を走行中に、車の前方を照らすための機器である。
制御系LAN123は、上記で述べた様な、車の走行に必須となる各種車載機器を接続するためのネットワークである。
車載GW124は、車両システム101に搭載された車載機器であって、情報系LAN117と制御系LAN123を接続するGW(ゲートウェイ)としての役割を果たし、通信プロトコルの変換等を行うための機器である。
携帯電話C102は、運転者が保持する機器であって、車両システム101に搭載された無線デバイス116を通して車載PC111と通信する機能と、監視・制御コマンドの送受信を行う機能を持つ機器である。
スマートキー103は、運転者が保持する鍵に相当する機器であって、車両システム101の無線デバイス116を通して車載PC111と通信する機能と、ドアの開閉コマンドを送信するための機能を持つ機器である。
配信サーバ104は、インターネット107に接続された機器であって、車載PC111で動作するJava(登録商標)プログラムや、動画や音楽などの各種コンテンツを配信するためのサーバである。
監視サーバ105は、インターネット107に接続された機器であって、車載PC111で動作するJava(登録商標)プログラムを提供すると共に、車両システム101上の各種機器の遠隔監視・制御を行うためのサーバである。
携帯電話B106は、インターネット107に接続された機器であって、車の遠隔監視・制御を行うための機器である。通常は車の保有者が保持している。
インターネット107は、上記で述べた車両システム101や各種サーバや携帯電話B106を接続するための汎用ネットワークである。
なお、情報系LAN117や制御系LAN123に接続される各種車載機器は、上記で述べた機器に限定されるものではなく、車の構成要素に応じて様々な車載機器を接続する事ができる。更に、車両システム101のネットワーク構成も、上記構成に限定されるものではなく、単一ネットワークや、さらに分割したネットワークを構成しても良い。
また、インターネット107上に設置されるサーバも、配信サーバ104や監視サーバ105や携帯電話B106に限定されるものではなく、車に提供するサービスに応じて、様々なサーバやクライアントを設置しても良い。同様に、無線デバイスに接続する機器として携帯電話C102やスマートキー103を示したが、提供するサービスに応じて様々なデバイスを接続出来るようにしても良い。
次に、この車の監視・制御システムの利用形態について、代表的なものを説明する。
始めの利用形態は、車載PC上で動作する監視・制御プログラムによる監視・制御である。図2は、監視・制御の処理の流れを示す説明図である。図2を用いて以下に処理の流れを説明する。
車載PC111が起動した時、もしくは、運転者の指示に応じて、監視・制御を行う監視・制御プログラムを車載PC111上で起動する(ステップS201からステップS203)。ここで起動する監視・制御プログラムは、事前に車載PC111の記憶装置112に搭載されている場合もあれば、インターネット107を経由して、配信サーバ104や監視サーバ105から入手したプログラムの場合もある。
監視・制御プログラムが起動されると、プログラムは自動で、もしくは運転者の指示によって、各種車載機器に対して監視情報を取得するための監視コマンドを送信する(ステップS204からステップS206)。その結果、車載機器より監視情報を取得し(ステップS207)、ディスプレイに対して表示の指示をする(ステップS208)。そして、この動作を繰り返す事により、運転者は各種車載機器の監視を行う事ができる。
更に、運転者が入力装置114を操作する事により、車載機器の制御を指示したとする(ステップS209)。その運転者の指示を受け取った監視・制御プログラムは(ステップS210)、運転者の指示を元に制御コマンドを作成し、制御対象となる車載機器に制御コマンドを送信し(ステップS211)、制御が完了した事を確認する(ステップS212)。そして、その制御結果をディスプレイに表示する(ステップS213)。これによって、運転者は各種車載機器の制御を行う事ができる。
他の利用形態として、監視サーバ105や携帯電話B106による遠隔監視・制御がある。図3は、監視サーバ105が車両システム101を監視する場合の処理の流れを示す説明図である。図3を用いて以下に処理の流れを説明する。
車載PC111が起動した時、もしくは、運転者の指示に応じて、遠隔操作を受け付ける遠隔監視・制御プログラムを車載PC111上で起動する(ステップS301)。ここで起動する遠隔監視・制御プログラムは、事前に車載PC111の記憶装置112に搭載されている場合もあれば、インターネット107を経由して、監視サーバ105から入手したプログラムの場合もある。また、起動のタイミングは、監視サーバ105からの監視コマンドを受信した時でも良い。
監視サーバ105がインターネット107と携帯電話A115を通じて、車載PC111に対して監視コマンドを送信すると(ステップS302)、遠隔監視・制御プログラムは、監視サーバ105の監視コマンドを解釈して、車載機器に対して制御コマンドを送付して(ステップS303)、車載機器の情報を取得して(ステップS304)、その情報を監視サーバに送信する(ステップS305)。これにより、監視サーバ105は、車両システム111の遠隔監視を行う事ができる。
さらに監視サーバ105が制御を行う場合、車載PC111に対して制御コマンドを送信する(ステップS306)。その制御コマンドを受信した遠隔監視・制御プログラムは、監視サーバ105の制御コマンドを解釈して、車載機器に対して送信する制御コマンドに変換して、その制御コマンドを車載機器に送信し(ステップS307)、制御が完了した事を確認する(ステップS308)。車載機器に制御コマンドを送った結果は、別途監視サーバに送信する(ステップS309)。これにより、監視サーバ105は、車両システム101の遠隔制御を行う事ができる。
その他の利用形態として、携帯電話C102やスマートキー103を用いた狭域監視・制御がある。図4は、スマートキー103を用いてドアのロック解除を行う場合の処理の流れを示す説明図である。図4を用いて以下に処理の流れを説明する。
車載PC111が起動した時、もしくは、運転者の指示に応じて、狭域操作を受け付ける狭域監視・制御プログラムを車載PC111上で起動する(ステップS401)。ここで起動する狭域監視・制御プログラムは、事前に車載PC111の記憶装置112に搭載されている場合もあれば、インターネット107を経由して、監視サーバ105や配信サーバ104から入手したプログラムの場合もある。また、起動のタイミングは、スマートキー103からの制御コマンドを受信した時でも良い。
運転者がスマートキー103を操作する事によって(ステップS403)、もしくは車に近づく事によって自動的に、ドアロック解除コマンドが無線デバイス116経由で車載PC111に送信されると(ステップS404)、狭域監視・制御プログラムは、ドアロック解除コマンドを解釈して、車載機器の一つであるドアロック119に対して送信する制御コマンドに変換して、その制御コマンドをドアロック119に送信する(ステップS405)。ドアロック119は、その制御コマンドを解釈して、ロアのロックを解除する。これによって、運転者は、ドアロックの解除を行う事ができる。
以上、車載PC111が搭載された車両システム101において、どの様に遠隔監視・制御が利用されるかについて説明した。
次に、図5は車載PC111に搭載されたJava(登録商標)実行環境であって、この発明のアクセス制御方式を適用したJava(登録商標)実行環境における機能構成を示した説明図である。
アプリケーション501は、車載機器の監視・制御を行うためのJava(登録商標)プログラムであったり、ゲームを行うためのJava(登録商標)プログラムであったり、それぞれの用途に応じたJava(登録商標)プログラムである。これは、あらかじめ車載PC111の記憶装置112に格納されているJava(登録商標)プログラムや、インターネット107等のネットワークを経由して配信サーバ104や監視サーバ105等からダウンロードしたJava(登録商標)プログラムであって、車載PC111上のアクセス制御実行環境に相当するJava(登録商標)実行環境502上で動作させる。その提供形態としては、Java(登録商標)仕様で定められた通常のJava(登録商標)アプリケーションの場合もあれば、同じくJava(登録商標)仕様で定めれられたJava(登録商標)アプレットやMIDletやXletや、OSGi(The Open Services Gateway Initiative)で定められたフレームワークやバンドルやサービスの形態を取る事もある。
Java(登録商標)実行環境502は、車載PC111に搭載されており、各種アプリケーション501を実行するために用いるアプリケーション実行環境である。このJava(登録商標)実行環境502には、Java(登録商標)提供各種API503とJava(登録商標)提供アクセス制御コントローラ504とセキュリティプロパティファイル505とアクセス権限管理テーブル506が含まれる。
Java(登録商標)提供各種API503は、Java(登録商標)標準仕様にてAPI仕様が定められ、Java(登録商標)実行環境502に事前に組み込まれた複数のクラスから構成される。例えば、ファイルを読み込むためのクラスjava.io.FileInputStreamや、ソケット通信を行うためのクラスjava.net.Socket等から構成される。
Java(登録商標)提供アクセス制御コントローラ504は、Java(登録商標)標準仕様にて仕様が定められ、Java(登録商標)実行環境502に事前に組み込まれたアクセス制御を行うための複数のクラスから構成される。例えば、アクセス権限を表すクラスjava.security.Permissionや、アクセス権限の認証を行うクラスjava.security.AccessController等から構成される。このJava(登録商標)提供アクセス制御コントローラ504は、アクセス権限管理テーブル506に記述された付与アクセス権限を元に、アプリケーションが利用する利用アクセス権限の認証を行う。
セキュリティプロパティファイル505は、Java(登録商標)実行環境502が保有する設定ファイルの一つであって、アクセス権限管理テーブル506を読み込むための機能が実装されたクラス名を指定するため等に用いる。
アクセス権限管理テーブル506は、Java(登録商標) Development Kitにて標準で提供されるポリシーファイルに相当する情報で、アプリケーション501やユーザに対して与える付与アクセス権限を指定するためのテーブルである。
各種車載API507は、車両システム101に搭載された各種車載機器に対して、制御コマンドの送受信や監視情報の送受信などを行うための機能を提供するクラスの集合である。これは、あらかじめ車載PC111の記憶装置112に格納されているJava(登録商標)プログラムや、ネットワークを経由して配信サーバ104や監視サーバ105等からダウンロードしたJava(登録商標)プログラムであって、車載PC111上のJava(登録商標)実行環境502上でアプリケーション501と組み合わせて動作させる。これは、Java(登録商標)で記述されたプログラムをコンパイルした複数のクラスの集合であって、通常のクラスのままで提供される場合もあるが、Java(登録商標)仕様で定められたJarファイルとして提供される場合や、OSGiで定められたフレームワークやバンドルやサービスの形態として提供される事もある。
更に、各種車載API507は、車載PC111の組立後に、追加/削除/変更される場合がある。例えば、車両システム101に新しい車載機器を接続した場合、その車載機器に対応した車載APIが、各種車載API507に対して追加される事もある。逆に、車両システム101から車載機器が外された場合、その車載機器に対応した車載APIが、各種車載API507から削除される事もある。また、車載機器の追加・削除がない場合でも、新しい機能を付加するために各種車載API507が変更される場合もある。そのため、車両システム101の状態によっては、各種車載API507が存在しないケースもある。
外部アクセス制御手段508は、車載PC111や車両システム101に搭載された各種車載機器の状態に応じて有効となる付与アクセス権限の検証を行う機能である。これは、あらかじめ車載PC111の記憶装置112に格納されているJava(登録商標)プログラムであって、車載PC111上のJava(登録商標)実行環境502と組み合わせて動作させる。この外部アクセス制御手段508の構成要素として、アクセス権限判定手段509と有効状態判定手段510とアクセス権限一覧保持手段511がある。
アクセス権限判定手段509は、アクセス権限管理テーブル506に記載された付与アクセス権限の情報を元に、アプリケーション501がJava(登録商標)提供各種API503や各種車載API507を実行する利用アクセス権限を保持しているかどうかを判定するための機能である。
有効状態判定手段510は、アクセス権限管理テーブル506に記載された有効状態(詳細は後述)を元に、アクセス権限判定手段509にて有効と判定された付与アクセス権限に対して、車載PC111や各種車載機器の状態が、付与アクセス権限が有効となる状態にあるかどうかを判定するための手段である。
アクセス権限一覧保持手段511は、Java(登録商標)提供アクセス制御コントローラ504がアクセス権限管理テーブル506から読み込んだ付与アクセス権限を保持するための機能、及び、アプリケーション501に与える付与アクセス権限一覧を抽出した時に、その付与アクセス権限一覧を保持する機能である。さらに、外部から利用アクセス権限を受け取り、その利用アクセス権限が内部で保持している付与アクセス権限一覧に含まれるかどうかを、外部アクセス制御手段508に含まれるアクセス権限判定手段509と有効状態判定手段510を用いて検証する機能も持つ。
外部アクセス制御手段登録手段512は、Java(登録商標)実行環境502のJava(登録商標)提供アクセス制御コントローラ504が利用アクセス権限の認証を行う際に、内部的に外部アクセス制御手段508を呼び出すように、Java(登録商標)提供アクセス制御コントローラ504に対して外部アクセス制御手段508を登録する機能である。
各種車両システムリソース513は、車両システム101に搭載もしくは接続された各種車載機器などのリソースであって、例えば、車載PC111上のファイルやソケットだけでなく、ディスプレイ113や携帯電話A115やエンジン118や車載GW124等の情報系LAN117/制御系LAN123に接続された全ての車載機器を指す。この各種車両システムリソース513は、Java(登録商標)提供各種API503や各種車載API507を用いて監視・制御する事が可能である。
図6は、アクセス権限管理テーブル506の構成を示した説明図である。
権限付与対象601は、付与アクセス権限を付与する対象となるアプリケーション501や各種車載API507等の条件を、一つ、もしくは複数の条件の組合せで指定する。例えば、クラス名やJarファイル名、クラスやJarファイルが格納された記憶装置112内やネットワーク上の場所、プログラム作成者や運転者や利用者(監視サーバ105や携帯電話C102の操作者を含む)のユーザID/グループID/ロールID等を指定する。
付与アクセス権限情報602は、権限付与対象601に対して、どの様な付与アクセス権限を与えるかを指定するための情報の一つである。例えば、ファイルのアクセス権限情報(Java(登録商標)の場合はjava.io.FilePermission)や、ソケットのアクセス権限情報(同じくjava.net.SocketPermission)等を指定する。また、ユーザが定義した独自のアクセス権限情報を指定する事もできる。
リソース指定情報603は、付与アクセス権限情報602にて指定した付与アクセス権限の対象となるリソース名を指定する。例えば、ファイル名やディレクトリ名やIPアドレス名等の一般的なコンピュータ上で提供されるリソース名や、ディスプレイ113やドアロック119や速度メータ121などの車両システム101特有のリソースを指定する。
操作内容情報604は、リソース指定情報603で指定したリソースに対して、どの様な操作を許可もしくは禁止するかを指定する。(現在のJava(登録商標)標準仕様では、許可する操作名のみが指定可能である)。例えば、リソースがファイルの場合は読み込み(read)/書き込み(write)/削除(delete)等の操作名、IPアドレスの場合は接続(connect)/待ち受け(accept)等の操作名、ドアロック119の場合は施錠(lock)/解錠(unlock)等の操作名を指定する。
有効状態605は、車載PC111や車両システム101に搭載された各種車載機器がどの様な状態にあった時に、付与アクセス権限情報602/リソース指定情報603/操作内容情報604で指定した付与アクセス権限が有効となるか、の条件が格納される。例えば、「ALWAYS(状態に依存せずに常に)」や、「Load.LessThan50(CPU負荷率が50%以下)」や、「Door.lock(ドアロックが施錠中)」や、「Meter.0(車が停車中)」等の、車載PC111や各種車載機器の状態を条件として指定する。また、省略する事も可能であり、この場合は従来のアクセス制御方式と同様に、車載PC111や車両システム101に接続された各種車載機器の状態に依存しない付与アクセス権限を定義したものとして扱う。
なお、アクセス権限管理テーブル506の1行に記載された情報のうち、付与アクセス権限情報602とリソース指定情報603と操作内容情報604と有効状態605を併せて付与アクセス権限と呼ぶ。この付与アクセス権限が、同一行に記載された権限付与対象601に対して与えられる。
図7は、Java(登録商標)実行環境502に含まれるセキュリティプロパティファイル505の構成を示す説明図である。
セキュリティプロパティファイル505は、暗号プロバイダ設定値701やポリシープロバイダ設定値702を含む様々な情報から構成される。
暗号プロバイダ設定値701は、暗号アルゴリズムが実装されているプロバイダのマスタクラス名一式を指定する。本設定値は、本発明の利用には無関係である。
ポリシープロバイダ設定値702は、アクセス権限管理テーブル506が保存されたファイルを読み込み、更に、Java(登録商標)のクラスに対して与える付与アクセス権限を抽出する機能を持つクラス名を指定する設定値である。
次に、図8と図9を用いて、Java(登録商標)実行環境502が起動された時に、外部アクセス制御手段508をJava(登録商標)実行環境502に対して登録する場合の動作について説明する。Java(登録商標)実行環境が起動された場合、始めにJava(登録商標)実行環境の初期化とアクセス権限管理テーブルの読み込み処理が行われ、その後、アプリケーションがロードされた時にアプリケーションに与える付与アクセス権限一式が決定される。
図8は、Java(登録商標)実行環境502の初期化と、アクセス権限管理テーブル506の読み込み処理における処理の流れを示したシーケンス図である。
まず、ステップS801にて車載PC111は、車載PC111が起動した際に自動的に、もしくは、ユーザの指示によりアプリケーション502の起動を行う場合に、Java(登録商標)実行環境502の起動を行う。
ステップS802にてJava(登録商標)実行環境502は、保有する各種設定ファイルの読み込みを行い、その内容に応じて初期化作業を行う。
本実装の形態では、本発明の外部アクセス制御手段登録手段512をポリシープロバイダクラスの仕様を満たすように実装して、このポリシープロバイダ設定値702に対して、その実装したクラス名を記述する事とする。ここで設定した外部アクセス制御手段登録手段512の初期化処理は、次のステップS803以降で述べる。
ステップS803にてJava(登録商標)実行環境502は、セキュリティプロパティファイル505のポリシープロバイダ設定値702に記載された外部アクセス制御手段登録手段512の読み込みを行い、初期化(クラスのインスタンス化)を開始する。
ステップS804にて外部アクセス制御手段登録手段512は、初期化の一環として、Java(登録商標)実行環境502に対してアクセス権限管理テーブル506の読み込みを要求する。例えば、ステップS802にてポリシープロバイダ設定値702を外部アクセス制御手段登録手段512に置き換えたが、置き換える前に設定されていたポリシープロバイダクラスをインスタンス化する事等で実現する。
ステップS805にてJava(登録商標)実行環境502は、アクセス権限管理テーブル506の読み込みを行う。
ステップS806にてJava(登録商標)実行環境502は、アクセス権限管理テーブル506の読み込みを完了した事を通知する。実際は、ステップS804にて外部アクセス制御手段登録手段512が実施した、Java(登録商標)実行環境502が提供するポリシープロバイダクラスのインスタンス化が終了した事により通知する。
ステップS807にて外部アクセス制御手段登録手段512は、初期化処理を終えた事をJava(登録商標)実行環境502に通知する。これは、ステップS803にてJava(登録商標)実行環境502によって開始された、外部アクセス制御手段登録手段512が提供するクラスのインスタンス化が完了した事によって通知する。
図9は、アプリケーション501を構成するクラスが読み込まれた時に、アプリケーションに与える付与アクセス権限一式を決定する時の処理の流れを示したシーケンス図である。
まず、ステップS901にてJava(登録商標)実行環境502は、アプリケーション501を実行する際に必要なクラスの中から、読み込み処理を行うクラスを決定する。
ステップS902にてJava(登録商標)実行環境502は、読み込み可能なクラスおよびJarファイルの中から、ステップS901で決定したクラスを検索し、そのファイルを読み込む。そして、読み込んだクラスの属性であるコードソースとして、読み込んだクラスファイルもしくはクラスファイルを含むJarファイルのURI(Uniform Resource Identifiers)や、Jarファイルの署名者を取得する。もし読み込むクラスのファイルが見つからない場合は、この時点で読み込みエラーとなって終了する。
ステップS903にてJava(登録商標)実行環境502は、外部アクセス制御手段登録手段512に対して、ステップS902で求めたコードソースを指定して、そのコードソースに割り当てるべき付与アクセス権限一覧の取得要求を行う。
ステップS904にて外部アクセス制御手段登録手段512は、ステップS804にて生成したJava(登録商標)実行環境502が提供するポリシープロバイダクラスに対して、ステップS903にて受け取ったコードソースに対応する付与アクセス権限一覧の取得要求を行う。
ステップS905にてJava(登録商標)実行環境502のポリシープロバイダクラスは、アクセス権限管理テーブル506から読み込んだ情報を元に、アクセス権限管理テーブル506の権限付与対象601と、ステップS904にて受け取ったコードソースの比較を行う事によって、指定されたコードソースに対応する付与アクセス権限一覧を抽出する。
ステップS906にてJava(登録商標)実行環境502のポリシープロバイダクラスは、ステップS905にて生成した付与アクセス権限一覧を、外部アクセス制御手段登録手段512に対して送付する。
ステップS907にて外部アクセス制御手段登録手段512は、ステップS906にて受け取った付与アクセス権限一覧をパラメータとして、外部アクセス制御手段508に対してアクセス権限一覧保持手段511の作成を要求する。これは、アクセス権限一覧保持手段511が提供するクラスのインスタンス化を要求する事により実現する事ができる。
ステップS908にて外部アクセス制御手段508のアクセス権限一覧保持手段511は、ステップS907で受け取った付与アクセス権限一覧を保持するアクセス権限一覧保持手段511を内部に保存する。
ステップS909にて外部アクセス制御手段508のアクセス権限一覧保持手段511は、外部アクセス制御手段登録手段512に対して、ステップS908にて生成したアクセス権限一覧保持手段511を送付する。これは、ステップS908にて生成したアクセス権限一覧保持手段511が提供するクラスのインスタンスを返す事にて実現する事ができる。
ステップS910にて外部アクセス制御手段登録手段512は、ステップS909にて外部アクセス制御手段508から受け取ったアクセス権限一覧保持手段511を、Java(登録商標)実行環境502に対して送付する。
ステップS911にてJava(登録商標)実行環境502は、ステップS910にて受領したアクセス権限一覧保持手段511を用いて、ドメインを生成する。このドメインとは、Java(登録商標)標準仕様にて規定されたProtectionDomainに対応する概念で、コードソースと付与アクセス権限一覧から構成される情報である。Java(登録商標)実行環境502上で利用される全てのクラスは、いずれか一つのドメインに属しており、そのドメインに割り当てられた付与アクセス権限一覧の範囲内でのみ処理を行う事が可能となるように、Java(登録商標)提供アクセス制御コントローラ504によってアクセス制御が行われる。
ステップS912にてJava(登録商標)実行環境502は、ステップS902にて読み込んだクラスのファイルと、ステップS911にて生成したドメインとから、アプリケーション501を実行する際に必要となるクラスを生成する。
ステップS913にてアプリケーション501の実行に必要なクラスは、クラスの初期化処理を実行する。
ステップS914にてアプリケーション501の実行に必要なクラスは、読み込んだクラスを返却する。
以上のステップS901〜S914にて示した手順によって、アプリケーション501の実行に必要なクラスが一つだけロードされる。一般に、一つのアプリケーション501の実行には数多くのクラスが必要となるため、全てのクラスに対して以上の処理を行う事によって、クラスのロードを行う。
以上の様に、図8と図9に示した手順を実行する事によって、Java(登録商標)実行環境502の起動、及び、アプリケーション501を実行するために必要なクラスのロードが完了して、Java(登録商標)実行環境502によってアプリケーション501の実行が開始される。
次に、図10、図11、図12を用いて、Java(登録商標)実行環境502上で動作するアプリケーション501が、Java(登録商標)提供各種API503や各種車載API507をコールした時に、車の状態に応じてアクセス制御を行う場合の動作について説明する。
図10は、アプリケーション501がJava(登録商標)提供各種API503もしくは各種車載API507をコールした時に、どの様にしてJava(登録商標)提供アクセス制御コントローラ504が呼ばれるかを示した説明図である。
始めに、ステップS1001にてアプリケーション501は、Java(登録商標)提供各種API503もしくは各種車載API507をコールする。
ステップS1002にてJava(登録商標)提供各種API503もしくは各種車載API507は、処理を行うためにアプリケーション501に付与されておくべき利用アクセス権限を特定する。
ステップS1003にてJava(登録商標)提供各種API503もしくは各種車載API507は、明示的にJava(登録商標)提供アクセス制御コントローラ504を呼び出して、アプリケーション501が利用アクセス権限を付与アクセス権限として保有しているかどうかの認証を行うためにアクセス権限認証を要求する。
ステップS1004にてJava(登録商標)提供アクセス制御コントローラ504は、ステップS1003にて受け取った利用アクセス権限が、アプリケーション501が保有している付与アクセス権限一覧に含まれているかどうかのアクセス権限認証を行う。なお、この処理の詳細な流れに関しては後述する。
ステップS1005にてJava(登録商標)提供アクセス制御コントローラ504は、Java(登録商標)提供各種API503もしくは各種車載API507に対して、アクセス権限認証の結果を送付する。
ステップS1006にてJava(登録商標)提供各種API503もしくは各種車載API507は、ステップS1005の結果としてアクセス権限有と判定された場合は、アプリケーション501が要求した処理を行う。アクセス権限無と判定された場合は、処理は行わない。
ステップS1007にてJava(登録商標)提供各種API503もしくは各種車載API507は、ステップS1005にてアクセス権限有と判定された場合は、処理を行った結果を返却する。アクセス権限無と判定され、ステップS1006にて処理を行わなかった場合は、処理結果として、アクセス権限がないため処理は無効である事を通知する。
以上の手順により、アプリケーション501がJava(登録商標)提供各種API503もしくは各種車載API507をコールした際に、Java(登録商標)提供アクセス制御コントローラ504が呼び出され、アクセス権限認証が行われる事を示す処理の流れを示した。
次に、図11及び図12を用いて、図10のステップS1004の処理の詳細な流れを説明する。図11はアクセス権限認証実施である図10のS1004の詳細を示す説明図であり、図12はアクセス権限一覧保持手段[C]に格納されているアクセス権限を用いてアクセス権限認証を行う図11のS1105の詳細を示す説明図である。
始めに、図10のステップS1004の処理が開始されると、図11のステップS1101が呼び出される。ステップS1101でJava(登録商標)提供アクセス制御コントローラ504は、Java(登録商標)提供各種API503もしくは各種車載API507から、アプリケーション501に付与されている付与アクセス権限一覧に含まれているかどうかを調べる利用アクセス権限を受け取る。
ステップS1102にてJava(登録商標)提供アクセス制御コントローラ504は、利用アクセス権限が含まれているかどうかの検索対象ドメインの一覧を抽出する。この時、抽出した検索対象ドメインの個数をNとし、各検証対象ドメインには0からN-1までの番号を付加する。なお、検索対象ドメインとは、図9のステップS911で作成したドメインと同一であって、利用アクセス権限が含まれているかどうかを検索する対象となるドメインの事を指す。このステップS1102では、アプリケーション501からJava(登録商標)提供アクセス制御コントローラ504が呼ばれるまでに通った全てのクラスに対して、各クラスが属するドメインを抽出する。ただし、Java(登録商標)仕様で定められた特権ブロックが利用されている場合は、その特権ブロックからアプリケーション寄りのクラスに関して、ドメインを抽出する処理は行わない。
ステップS1103にてJava(登録商標)提供アクセス制御コントローラ504は、ループ処理を行うためのループカウンタCを0に設定する。
ステップS1104にてJava(登録商標)提供アクセス制御コントローラ504は、ステップS1102で抽出した検証対象ドメイン一覧の中からC番目の検証対象ドメインを取得し、その検証対象ドメインに割り当てられたアクセス権限一覧保持手段511を取得する。ここで取得したアクセス権限一覧保持手段511は、図9のステップS908にて作成したアクセス権限一覧保持手段511であって、外部アクセス制御手段508のアクセス権限判定手段509と有効状態判定手段510を用いてアクセス権限認証を行う機能も持っている事がポイントである。
ステップS1105にてJava(登録商標)提供アクセス制御コントローラ504は、ステップS1104にて取得したアクセス権限一覧保持手段511に対して利用アクセス権限を送付し、アクセス権限の認証を要求する。
次に、図11の処理の流れの説明を一時中断して、図12を用いて、上記図11のステップS1104の処理の詳細を説明する。
始めに、ステップS1201にて外部アクセス制御手段508のアクセス権限一覧保持手段511は、Java(登録商標)提供アクセス制御コントローラ504から、アクセス権限一覧保持手段511が保持している付与アクセス権限一覧に含まれているかどうかを検証したい利用アクセス権限を受け取り、処理を開始する。
ステップS1202にて外部アクセス制御手段508のアクセス権限一覧保持手段511は、アクセス権限一覧保持手段511の内部に格納されている付与アクセス権限の一覧を取り出す。ここで、付与アクセス権限の個数をM個とし、各付与アクセス権限に対して0からM-1までの番号を付与する。
ステップS1203にて外部アクセス制御手段508のアクセス権限一覧保持手段511は、ループカウンタDを0に設定する。
ステップS1204にて外部アクセス制御手段508のアクセス権限一覧保持手段511は、ステップS1202にて取得した付与アクセス権限の一覧から、D番目の付与アクセス権限を取得する。
ステップS1205にて外部アクセス制御手段508のアクセス権限判定手段509は、付与アクセス権限が保持する付与アクセス権限情報602とリソース指定情報603と操作内容情報604に、利用アクセス権限の付与アクセス権限情報602とリソース指定情報603と操作内容情報604が含まれるかどうかを比較する。なお、付与アクセス権限を表すクラスはアクセス権限一覧保持手段511に属しており、比較を行う処理メソッドが実装されているため、そのメソッドに処理を依頼する事によって実現する。
ステップS1206にて外部アクセス制御手段508のアクセス権限一覧保持手段511は、ステップS1205の結果として、利用アクセス権限が付与アクセス権限に含まれていたかどうかを判定する。含まれる場合は、付与アクセス権限に割り当てられた有効状態605の検証を行うため、ステップS1207に進む。含まれない場合は、次の付与アクセス権限との比較処理に進むため、ステップS1211に進む。
ステップS1207にて外部アクセス制御手段508のアクセス権限一覧保持手段511は、付与アクセス権限に有効状態605の条件が設定されているかどうかを判定する。設定されている場合は、有効状態の判定を行うためにステップS1208に進む。設定されていない場合は、ステップS1213に進み、アクセス権限有として処理を終了する。なお、有効状態605として「ALWAYS(常に有効)」と設定されている場合も、有効状態605が設定されていない場合と同様に、ステップS1213に進み、アクセス権限有として処理を終了する。
ステップS1208にて外部アクセス制御手段508の有効状態判定手段510は、有効状態605を判断するために必要な車両システム101や車載PC111の状態を取得する。この状態は、Java(登録商標)提供各種API503や各種車載API507をコールする事によって実現する。
ステップS1209にて外部アクセス制御手段508の有効状態判定手段510は、ステップS1208で取得した状態を元に、付与アクセス権限にて指定されている有効状態605が満たされているかどうかの検証を行う。
ステップS1210にて外部アクセス制御手段508のアクセス権限一覧保持手段511は、ステップS1209にて有効状態605が満たされているかどうかを判定した結果から、有効な状態と判断された場合は、ステップS1213に進み、アクセス権限有として処理を終了する。無効な状態と判断された場合は、次の付与アクセス権限との比較処理に進むため、ステップS1211に進む。
ステップS1211にて外部アクセス制御手段508のアクセス権限一覧保持手段511は、ループカウンタDの値を1だけインクリメントする。
ステップS1212にて外部アクセス制御手段508のアクセス権限一覧保持手段511は、ループカウンタDと付与アクセス権限の個数Mを比較する。もし、D<Mの場合は、未検証の付与アクセス権限があるため、ステップS1204の処理に戻る。D≧Mの場合は、全ての付与アクセス権限の検証が終了し、かつ、有効となる付与アクセス権限が見つからなかった事になるため、ステップS1214に進み、アクセス権限無として処理を終了する。
次に、図11のステップS1105の処理の続きに関して、説明を再開する。
ステップS1116にてJava(登録商標)提供アクセス制御コントローラ504は、ステップS1105の結果としてアクセス権限有と判定されたかどうかを検証する。もし、アクセス権限有と判定された場合は、ステップS1107の処理に進む。アクセス権限無と判定された場合は、ステップS1110に進み、アクセス権限無として処理を終了する。
ステップS1107にてJava(登録商標)提供アクセス制御コントローラ504は、ループカウンタCを1だけインクリメントする。
ステップS1108にてJava(登録商標)提供アクセス制御コントローラ504は、ループカウンタCと検証対象ドメイン一覧の個数Nを比較する。もし、C<Nの場合は、未検証の検証対象ドメインがあるため、ステップS1104の処理に戻る。C≧Nの場合は、全ての検証対象ドメインの検証が終了し、かつ、全ての検証対象ドメインでアクセス権限有と判定された事になるので、ステップS1109に進み、アクセス権限有として処理を終了する。
以上の図11と図12に示した手順により、Java(登録商標)アクセス制御コントローラ504と外部アクセス制御手段508が連携して、アクセス権限の認証を行う。
また、外部アクセス制御手段登録手段512を起動するためには、図7に示すようなJava(登録商標)実行環境502にて標準で用意されているセキュリティプロパティファイル505のポリシープロバイダ設定値702を変更するだけで良い。そのため、既存のJava(登録商標)実行環境502のプログラム改修を行うことなく、外部アクセス制御手段登録手段512を起動して、独自のアクセス権限認証処理を行う外部アクセス制御手段508の処理を追加する事が可能となる。
また、アクセス権限管理テーブル506では、標準的なJava(登録商標)実行環境502で提供されるアクセス権限管理テーブル506で指定可能な権限付与対象601と付与アクセス権限情報602とリソース指定情報603と操作内容情報604に加え、車両システム101の状態がどの様な状態にある時に、その付与アクセス権限が有効となるかを示す有効状態605を記述する事ができる。そのため、車の状態に応じて有効となるアクセス権限を指定する事ができる。
また、アクセス権限管理テーブル506には、有効状態605として「常に有効」を指定する事が可能であるため、車の状態に依存せずに有効となるアクセス権限を利用する事もできる。
また、アクセス権限一覧保持手段511では、Java(登録商標)アクセス制御コントローラ504がアクセス権限認証を行う際に処理の委譲を受けるが、そこでアクセス権限判定手段509と有効状態判定手段510を用いる事により、付与アクセス権限情報602とリソース指定情報603と操作内容情報604に基づくアクセス権限判定に加え、車の状態を取得して有効状態605を満たすかどうかの判定も行う。これにより、アプリケーション501に対して車の状態に応じて有効となるアクセス権限を付与した場合においても、その付与アクセス権限が有効な状態にあるかどうかを正しく判断する事ができ、アプリケーション501のアクセス権限を正しく認証する事ができる。
また、Java(登録商標)仕様では、アプリケーション開発者が自由にアクセス権限を追加出来るという特徴がある。本発明では、Java(登録商標)標準で用意されているアクセス権限管理テーブル506を拡張して有効状態605を追加できるように実現したため、OSが提供するアクセス権限だけでなく、アプリケーション開発者が追加したアクセス権限に対しても、車の状態に応じて有効となるアクセス権限として指定する事ができる。
また、車両システム101においては、車に新しい車載機器を追加で接続した場合など、製品出荷後に各種車載API507を追加/削除/変更するケースが考えられる。そして、この各種車載API507を利用するための付与アクセス権限情報602やリソース指定情報603や操作内容情報604が、アクセス権限管理テーブル506に追加される場合がある。外部アクセス制御手段508では、それらの付与アクセス権限情報602やリソース指定情報603や操作内容情報604の比較処理を、付与アクセス権限に備え付けられた比較処理に委譲する。そのため、製品出荷後に新しい付与アクセス権限情報602が追加された場合にも、外部アクセス制御手段508を修正することなく、新しいアクセス権限に対応する事ができる。
なお、本実施例では、アクセス権限認証の際に外部アクセス制御手段508が実行される様にするために、外部アクセス制御手段登録手段512を提供する形態を示した。しかし、Java(登録商標)提供アクセス制御コントローラ504のソースが改修可能なケースにおいては、アクセス権限一覧保持手段511を呼び出す処理を、直接にJava(登録商標)提供アクセス制御コントローラ504のソースに追記する事も可能である。
この場合、図5で示した機能構成は、図13に示したようになる。具体的には、外部アクセス制御手段登録手段512が不要となる。
また、アプリケーション501起動の処理に関しても、外部アクセス制御手段登録手段512の介在が不要となる。具体的には、図12で示したポリシープロバイダ設定値702はJava(登録商標)実行環境502の初期設定値のままとする。さらに、図8で示した処理フローは図14に示したように、Java(登録商標)実行環境502が外部アクセス制御手段登録手段512を呼び出すことなく、直接にアクセス権限管理テーブル506を読み込む。さらに、図9で示した処理フローは図15に示したように、Java(登録商標)実行環境502が直接に外部アクセス制御手段508のアクセス権限一覧保持手段511を生成して、ドメインが生成される。
また、図10、図11、図12に示した処理の流れは基本的に同一である。
また、図8で示した処理フローは、図16に示したように、外部アクセス制御手段登録手段512からアクセス権限管理テーブル506へ直接アクセス権限管理テーブル読込み要求を送ってもよい。この場合、図9で示した処理フローは、図17に示したように、Java(登録商標)実行環境502における付与アクセス権限一覧取得の動作が不要となる。
また、図10、図11、図12に示した処理の流れは基本的に同一である。
また、外部アクセス制御手段508のアクセス権限一覧保持手段511の処理を、Java(登録商標)実行環境502が提供するJava(登録商標)提供アクセス制御コントローラ504へ完全に統合してしまっても構わない。
また、本実施例では、外部アクセス制御手段登録手段512をポリシープロバイダクラスの仕様を満たす形で実装して、Java(登録商標)提供アクセス制御コントローラ504に対して外部アクセス制御手段508を登録する方法を示した。しかし、外部アクセス制御手段登録手段512の実装例はポリシープロバイダクラスに限定されるものではなく、セキュリティマネージャ等、他の実装例として提供しても良い。
また、本実施例では、アプリケーションプログラムの実行環境としてJava(登録商標)実行環境502を利用する事を想定し、そのJava(登録商標)実行環境502で最適となる実施の形態を示した。しかし、本発明は、Java(登録商標)実行環境502への適用に限定されるものではなく、例えばWindows(登録商標)やMacOS(登録商標)やLinux(登録商標)やSymbian(登録商標)等、他のアプリケーション実行環境に対しても適用する事が可能である。
また、本実施例では、外部アクセス制御手段508がアクセス制御のために用いる外部アクセス権限管理テーブルを、Java(登録商標)実行環境が提供するアクセス権限管理テーブル506に統合した場合に関して説明を行った。しかし、外部アクセス制御手段508が用いる外部アクセス権限管理テーブルは、Java(登録商標)実行環境502が提供するアクセス権限管理テーブル506と同一ファイルにする必要はなく、個別にファイルを保持して管理しても良い。
また、本実施例では、本発明のアクセス制御の適用機器を車載PC111にして説明を行ったが、適用先は車載PC111に限定されるものではなく、例えばホームサーバや携帯電話等、有線や無線を通して様々なデバイスと接続するような機器に適用する事ができる。
また、図12で示した処理フローのステップS1202では、アクセス権限管理テーブル506に有効状態が指定されているかどうかにかかわらず、全ての付与アクセス権限を取得して、ステップS1203からステップS1212にて処理を行っていた。これを、始めに有効状態605が設定されてない付与アクセス権限の取得と検証を行い、次に有効状態605が設定されている付与アクセス権限の取得と検証を行うなど、2ステップに分けて行っても構わない。
実施例2.
上記実施例1では、外部アクセス制御手段508に実装した有効状態判定手段510にて、車載PC111や車両システム101の状態が有効な状態にあるかどうかの検証を行う場合について説明した。
本実施例2では、さらに加えて、外部アクセス制御手段508の有効状態判定手段510のプログラムをカスタマイズすることなく、簡単に有効状態605として設定出来る条件を追加出来る仕組みを提供する場合について説明する。図18は、本実施例2におけるJava(登録商標)実行環境502の機能構成を示した説明図である。
アプリケーション501、Java(登録商標)実行環境502、Java(登録商標)提供各種API503、Java(登録商標)提供アクセス制御コントローラ504、セキュリティプロパティファイル505、アクセス権限管理テーブル506、各種車載API507、外部アクセス制御手段登録手段512、各種車両システムリソース513に関しては、実施例1で示したものと同一であるので、説明は省略する。
外部アクセス制御手段508は、車載PC111や車両システム101に搭載された各種車載機器の状態に応じて有効となる付与アクセス権限の判定を行う機能である。これは、あらかじめ車載PC111の記憶装置112に格納されているJava(登録商標)プログラムであって、車載PC111上のJava(登録商標)実行環境502と組み合わせて動作させる。この外部アクセス制御手段508の構成要素として、アクセス権限判定手段509とアクセス権限一覧保持手段511と状態検証手段呼出手段1801がある。
アクセス権限判定手段509は、実施例1で示したものと同様であって、アクセス権限管理テーブル509に記載された付与アクセス権限の情報を元に、アプリケーション501がJava(登録商標)提供各種API503や各種車載API507を実行する利用アクセス権限を保持しているかどうかを判定するための機能である。
アクセス権限一覧保持手段511は、実施例1で示したものと同様であって、Java(登録商標)提供アクセス制御コントローラ504がアクセス権限管理テーブル506から読み込んだ付与アクセス権限を保持するための機能、及び、アプリケーション501に与える付与アクセス権限一覧を抽出した時に、その付与アクセス権限一覧を保持する機能である。さらに、外部から利用アクセス権限を受け取り、その利用アクセス権限が内部で保持している付与アクセス権限一覧に含まれるかどうかを認証する機能も持つ。ただし、外部アクセス制御手段508に含まれるアクセス権限判定手段509と状態検証手段呼出手段1801を用いる点が、実施例1とは異なる。
状態検証手段呼出手段1801は、アクセス権限管理テーブル506に記載された有効状態605を元に、状態検証手段管理手段1802から状態検証手段1805の一式を取得する。そして、取得した状態検証手段1805の一式を利用して、アクセス権限判定手段509にて有効と判定された付与アクセス権限に対して、車載PC111や車両システム101に搭載された各種車載機器の状態が、付与アクセス権限に割り当てられた有効状態605にあるかどうかを判定するための手段である。
状態検証手段管理手段1802は、実施例2にて新しく導入した手段で、アクセス権限管理テーブル506に設定された有効状態605が成り立つかどうかを検証するための状態検証手段1805を管理し、外部アクセス制御手段508からの要求に応じて動的に状態検証手段1805を読み込むための機能である。これは、あらかじめ車載PC111の記憶装置112に格納されているJava(登録商標)プログラムであって、車載PC111上のJava(登録商標)実行環境502と、外部アクセス制御手段508と組み合わせて動作させる。この状態検証手段管理手段1802の構成要素として、状態検証手段読込み手段1803と状態検証手段管理テーブル1804がある。
状態検証手段読込み手段1803は、外部アクセス制御手段508からの要求に応じて、状態検証手段1805を1個以上、動的に読み込むための機能を提供する。また、状態検証手段1805が備えるべき抽象メソッドを定めたクラスもしくはインターフェースも提供する。
状態検証手段管理テーブル1804は、アクセス権限管理テーブル506に記載された有効状態605と、その有効状態605が成り立つかどうかを検証するための状態検証手段1805の対応を管理するためのテーブルである。
状態検証手段1805は、車載PC111および車両システム101の状態が、付与アクセス権限が有効となる状態にあるかどうかを検証するための手段の集合である。これは、あらかじめ車載PC111の記憶装置112に格納されているJava(登録商標)プログラムや、ネットワークを経由して保守サーバ104や監視サーバ105等からダウンロードしたJava(登録商標)プログラムであって、車載PC111上のJava(登録商標)実行環境502上で外部アクセス制御手段508と状態検証手段管理手段1802と組み合わせて動作させる。これは、Java(登録商標)で記述されたプログラムをコンパイルした複数のクラスの集合であって、通常のクラスのままで提供される場合もあるが、Java(登録商標)仕様で定められたJarファイルとして提供される場合や、OSGiで定められたフレームワークやバンドルやサービスの形態で提供される事もある。
更に、状態検証手段1805は、車載PC111の組立後に、追加/削除/変更される場合がある。例えば、車載PC111に新しいJava(登録商標)プログラムを追加/削除/変更した際に、そのプログラムを動作させるために新しい有効状態605も合わせて追加する必要がある場合、状態検証手段1805が追加/削除/変更される事がある。
また、Java(登録商標)プログラムの追加インストールを行わない時でも、法改正などに伴ってアクセス権限を有効とする条件が変更される場合は、状態検証手段1805が追加/削除/変更される場合がある。そのため、車載PC111によっては、状態検証手段1805が存在しないケースもある。
図19は、状態検証手段管理テーブル1804の構成を示した説明図である。
有効状態名1901は、アクセス権限管理テーブル506に記載された有効状態605と対応が取れる値を記載するもので、最も簡単なケースでは、有効状態605と同一の値を指定する。本要素は、有効状態605にあるかどうかを検証するための状態検証手段1805一式との対応を取るために用いる。例えば、「ALWAYS(状態に依存せずに常に)」や、「Load.LessThan50(CPU負荷率が50%以下)」や、「Door.lock(ドアロックが施錠中)」や、「Meter.0(車が停車中)」等の、車載PC111や各種車載機器がどの様な状態にある事をチェックするかが分かりやすい値を指定する事が好ましい。
状態検証手段名1902は、有効状態605にあるかどうかを検証するための状態検証手段1805を特定するために用いる値である。例えば、状態検証手段名1902として、状態検証手段1805を実装したクラス名を記載する等である。この状態検証手段名1902は、有効状態名1901毎に複数個併記する事ができる。例えば、停車中かどうかを検証するための状態検証手段名1902として「jp.co.melco.Stop」を指定したり、昼間かどうかを検証するための状態検証手段名1902として「jp.co.melco.Daytime」を同時に指定する事ができる。
パラメータ1903は、状態検証手段名1902に記載された状態検証手段1805の初期化の時、もしくは、初期化の後に設定するパラメータである。このパラメータ1903は、状態検証手段名1902に記載した状態検証手段1805毎に異なる値を指定する事ができ、省略する事も可能である。例えば、状態検証手段名1902にCPU負荷率が一定値以下にある事を検証するための状態検証手段名1902として「jp.co.melco.CPULoadAverage」を指定した場合、このパラメータとして「0.5」を指定する事ができる。
次に、本実施例におけるアクセス制御の流れについて説明する。
始めに、Java(登録商標)実行環境502が起動された時に、本発明のアクセス制御方式が外部アクセス制御手段508をJava(登録商標)実行環境502に対して登録する場合の動作に関しては、上記実施例1で示した図8、図9と同様であるため、説明を省略する。
次に、Java(登録商標)実行環境502上で動作するアプリケーション501が、Java(登録商標)提供各種API503や各種車載API507をコールした時に、車の状態に応じてアクセス制御を行う場合の動作のうち、アプリケーション501からJava(登録商標)提供アクセス制御コントローラ504の処理に関しては、上記実施例1で示した図10、図11の処理の流れと同様であるので、説明は省略する。
なお、図20で示した処理フローは、Java(登録商標)提供アクセス制御コントローラ504から呼び出された外部アクセス制御手段508の処理である。この処理フロー以降は、実施例1で示した図12の処理フローから若干の変更がなされるため、以下で相違点を中心に説明する。
始めに、ステップS2001からステップS2007までの処理は、実施例1の図12で示したステップS1201からS1207までの処理と同一であるため、説明は省略する。
ステップS2008にて外部アクセス制御手段508の状態検証手段呼出手段1801は、付与アクセス権限に設定された有効状態605を取り出し、状態検証手段管理手段1802の状態検証手段読み込み手段1803に対して状態検証手段1805一式の読み込みを依頼する。この処理の詳細に関しては、図21を用いて後述する。
ステップS2009にて外部アクセス制御手段508の状態検証手段呼出手段1801は、ステップS2008にて取得した状態検証手段1805一式を用いて、車載PC111や車両システム101の状態が、付与アクセス権限が有効となる状態にあるかどうかの検証を行う。この処理の詳細に関しては、図22と図23を用いて後述する。
ステップS2010からステップS2014までの処理に関しては、実施例1で示した図12のステップS1210からステップS1214までと同様であるため、説明は省略する。
図21は、付与アクセス権限が有効となる有効状態605を元に、その有効状態605が成り立つかどうかを検証するための状態検証手段1805一式を読み込む場合の処理フローである。
始めに、ステップS2101にて状態検証手段読込み手段1803は、どの状態検証手段1805一式を生成するかという情報として、外部アクセス制御手段508の状態検証手段呼出手段1801から有効状態605を受け取って処理を開始する。
ステップS2102にて状態検証手段読込み手段2003は、状態検証手段管理テーブル1804をファイルから読み込んだかどうかを確認する。もし、既に読み込んでいる場合は、ステップS2104の処理にジャンプする。読み込んでいない場合は、ステップS2103の処理に進む。
ステップS2103にて状態検証手段読込み手段1803は、状態検証手段管理テーブル1804を読み込み、中に記載された情報を解釈し、状態検証手段読み込み手段1803の内部に保存する。
ステップS2104にて状態検証手段読込み手段1803は、状態検証手段読み込み手段1803の内部に格納されている状態検証手段管理テーブル1804のコピーから、状態検証手段管理テーブル1804の有効状態名1901と、ステップS2101にて受け取った有効状態605が合致するエントリを検索して取得する。
ステップS2105にて状態検証手段読込み手段1803は、ステップS2104の処理にて該当するエントリが見つけられたかどうかを判定する。該当エントリが見つかった場合は、ステップS2106の処理に進む。該当エントリが見つからなかった場合は、ステップS2114に進み、処理失敗として処理を終了する。
ステップS2106にて状態検証手段読込み手段1803は、ステップS2104で取得したエントリの中から、設定されている状態検証手段名1902の数を取得する。なお、状態検証手段名1902とパラメータ1903には、0からL-1までの番号を割り振る。
ステップS2107にて状態検証手段読込み手段1803は、ループカウンタEを0に設定する。
ステップS2108にて状態検証手段読込み手段1803は、ステップS2106で番号付けした状態検証手段名1902の中から、E番目の状態検証手段名1902を取得する。また、その状態検証手段名1902に対応するE番目のパラメータ1903も取得する。
ステップS2109にて状態検証手段読込み手段1803は、Java(登録商標)実行環境502にて読み込み可能なクラスの中から、ステップS2108で取得した状態検証手段名1902に対応する状態検証手段1805を検索して読み込みを行う。この時、読み込んだ状態検証手段1805に対して、ステップS2108にて取得したパラメータ1903を設定する。
ステップS2110にて状態検証手段読込み手段1803は、ステップS2109にて状態検証手段1805の読み込みに成功したかどうかを判定する。読み込みに成功した場合は、ステップS2111の処理に進む。読み込みに失敗した場合は、ステップS2114の処理に進み、処理失敗として処理を終了する。
ステップS2111にて状態検証手段読込み手段1803は、ループカウンタEを1だけインクリメントする。
ステップS2112にて状態検証手段読込み手段1803は、ループカウンタEと状態検証手段名1902の個数Lを比較する。もし、E<Lの場合は、読み込みが完了していない状態検証手段1805があるため、ステップS2108の処理に戻る。E≧Lの場合は、全ての状態検証手段1805の読み込みが終了した事になるので、ステップS2113に進み、状態検証手段1805一式を返却して処理を終了する。
以上の流れにて、付与アクセス権限が有効となる有効状態605を元に、車載PC111や車両システム101において付与アクセス権限が有効となる状態にあるかどうかを検証するための状態検証手段1805一式を読み込む事ができる。
次に、図22と図23を用いて、状態検証手段1805一式を用いて、車載PC111や車両システム101において付与アクセス権限が有効となる状態にあるかどうかを検証するための処理フローについて説明する。
始めに、ステップS2201にて外部アクセス制御手段508の状態検証手段呼出手段1801は、図21で示した処理を実行した結果として受け取った状態検証手段1805一式を入力として、処理を開始する。
ステップS2202にて外部アクセス制御手段508の状態検証手段呼出手段1801は、ステップS2201にて受け取った状態検証手段1805一式に含まれる状態検証手段1805の個数Lを算出する。同時に、状態検証手段1805に0からL-1までの番号を割り振る。
ステップS2203にて外部アクセス制御手段508の状態検証手段呼出手段1801は、ループカウンタFの値を0に設定する。
ステップS2204にて外部アクセス制御手段508の状態検証手段呼出手段1801は、ステップS2202にて番号を割り当てた状態検証手段1805から、F番目の状態検証手段1805を取得する。
ステップS2205にて外部アクセス制御手段508の状態検証手段呼出手段1801は、ステップS2204にて取得した状態検証手段1805の状態確認メソッドを呼び出して、車載PC111や車両システム101において付与アクセス権限が有効となる状態にあるかどうかを検証する。
ここで、図22の処理の流れに関して一時説明を中断して、図23を用いてステップS2205にて行われる処理の詳細に関して説明する。
図23の処理は、状態検証手段1805において、状態確認メソッドがコールされた時に行われる処理の流れである。
始めに、ステップS2301にて状態検証手段1805は、外部アクセス制御手段508の状態検証手段呼出手段1801からのメソッドコールによって、処理を開始する。
ステップS2302にて状態検証手段1805は、車載PC111や車両システム101の状態情報のうち、付与アクセス権限が有効となる状態にあるかどうかを検証するために必要な状態情報を取得する。この状態情報は、Java(登録商標)実行環境502に実装されたJava(登録商標)提供各種API503や、各種車載API507をコールする事によって取得する。
ステップS2303にて状態検証手段1805は、図21のステップS2119にて状態検証手段1805に設定されたパラメータと、ステップS2302にて取得した状態情報を元に、車載PC111や車両システム101において付与アクセス権限が有効となる状態にあるかどうかを検証する。
ステップS2304にて状態検証手段1805は、ステップS2303を実行した結果、アクセス権限が有効となる状態にあるかどうかをチェックする。アクセス権限が有効となる状態にある場合、ステップS2305に進み、有効な状態として処理を終了する。アクセス権限が有効とならない状態にある場合、ステップS2306に進み、無効な状態として処理を終了する。
次に、図22のステップS2205の処理の続きに関して、説明を再開する。
ステップS2206にて外部アクセス制御手段508の状態検証手段呼出手段1801は、ステップS2205にて状態検証手段1805を呼び出した結果をチェックする。処理の結果が有効な状態となった場合は、有効状態605で指定された条件の一つを満たしているため、ステップS2207に進んで別の状態検証手段1805を利用した検証に進む。無効な状態と判断された場合は、ステップS2210に進んで、無効な状態として処理を終了する。
ステップS2207にて外部アクセス制御手段508の状態検証手段呼出手段1801は、ループカウンタFの値を1だけインクリメントする。
ステップS2208にて外部アクセス制御手段508の状態検証手段呼出手段1801は、ループカウンタFと状態検証手段1805の個数Lを比較する。もし、F<Lの場合は、検証が完了していない状態検証手段1805があるため、ステップS2204の処理に戻る。F≧Lの場合は、全ての状態検証手段1805を用いた状態確認処理が終了した事になるので、ステップS2209に進み、有効状態の確認結果として有効な状態という処理結果にて処理を終了する。
以上のように、アクセス権限が有効状態にあるかどうかを検証するための状態検証手段1805を外部アクセス制御手段508と独立に実装し、状態検証手段管理手段1802を用いて必要に応じて動的に読み込みできるような仕組みとする事により、外部アクセス制御手段508を有効状態605の判定処理とは独立に実装する事ができる。そのため、外部アクセス制御手段508のプログラムを改修することなく、監視会社やサービス会社のサービスの要件に応じて、独自の有効状態605を設定する事が可能となる。例えば、車載PC111に事前にインストールされているJava(登録商標)実行環境502と本発明のアクセス制御方式では「車が停車中」という条件のみ設定可能であった時、車載PC111のソフトウェアを改修することなく、新たに「一般道走行中」や「ドアロック中」等の条件を、サービス会社やユーザ自身によって容易に追加可能となる。
なお、本実施例では、アクセス権限認証の際に外部アクセス制御手段508が実行される様にするために、外部アクセス制御手段登録手段512を提供する形態を示した。しかし、Java(登録商標)提供アクセス制御コントローラ504のソースが改修可能なケースにおいては、アクセス権限一覧保持手段511を呼び出す処理を、直接にJava(登録商標)提供アクセス制御コントローラ504のソースに追記する事も可能である。機能構成や処理の流れの修正は、実施例1で示した場合と同様のため、ここでは省略する。
また、本実施例では、外部アクセス制御手段登録手段512をポリシープロバイダクラスの仕様を満たす形で実装して、Java(登録商標)提供アクセス制御コントローラ504に対して外部アクセス制御手段508を登録する方法を示した。しかし、外部アクセス制御手段登録手段512の実装形態はポリシープロバイダクラスに限定されるものではなく、セキュリティマネージャ等、他の実装形態として提供しても良い。
また、本実施例では、アプリケーションプログラムの実行環境としてJava(登録商標)実行環境502を利用する事を想定し、そのJava(登録商標)実行環境502で最適となる実施例を示した。しかし、本発明は、Java(登録商標)実行環境502への適用に限定されるものではなく、例えばWindows(登録商標)やMacOS(登録商標)やLinux(登録商標)やSymbian(登録商標)等、他のアプリケーション実行環境に対しても適用する事が可能である。
また、本実施例では、外部アクセス制御手段508がアクセス制御のために用いる外部アクセス権限管理テーブルを、Java(登録商標)実行環境502が提供するアクセス権限管理テーブル506に統合した場合に関して説明を行った。しかし、外部アクセス制御手段508が用いる外部アクセス権限管理テーブルは、Java(登録商標)実行環境502が提供するアクセス権限管理テーブル506と同一ファイルにする必要はなく、個別にファイルを保持して管理しても良い。
また、本実施例では、本発明のアクセス制御の適用機器を車載PC111にして説明を行ったが、適用先は車載PC111に限定されるものではなく、例えばホームサーバや携帯電話等、有線や無線を通して様々なデバイスと接続するような機器に適用する事ができる。
また、図20で示した処理フローのステップS2002では、アクセス権限管理テーブル506に有効状態605が指定されているかどうかにかかわらず、全ての付与アクセス権限を取得して、ステップS2003からステップS2012にて処理を行っていた。これを、始めに有効状態605が設定されてない付与アクセス権限の取得と検証を行い、次に有効状態605が設定されている付与アクセス権限の取得と検証を行うなど、2ステップに分けて行っても構わない。
また、本実施例では、状態検証手段1805に関する情報を、状態検証手段管理テーブル1804に有効状態名1901を関連づけて格納する方式とした。しかし、状態検証手段1805に関する情報を、直接にアクセス権限管理テーブル506の有効状態605に記述しても良い。
また、本実施例では、図21に示したように、状態検証手段管理テーブル1804の読み込み処理を、初めて状態検証手段管理手段1803が利用される時とした。しかし、この処理は、初めて状態検証手段管理手段1803が利用されるより前であればいつでも良く、例えば、Java(登録商標)実行環境502が起動した時に実施しても良い。
また、本実施例では、状態検証手段呼出手段1801は、状態検証手段読込み手段1803を用いて状態検証手段1805の読み込みを行う様にしたが、あらかじめ状態検証手段1805が分かっているものに関しては、状態検証手段読込み手段1803を用いずに状態検証手段1805を取得しても構わない。
実施例3.
上記実施例では、車載PC111や車両システム101の状態に応じてアクセス制御を行う場合について説明したが、本実施例ではアプリケーションが何回もしくは何秒間隔でアクセス権限を利用しようとしたかに応じてアクセス制御を行う場合について説明する。
本実施例3では、実施例2に加えて、Java(登録商標)提供各種API503や各種車載API507を実行する際にアクセス権限を行使するが、その行使回数や行使間隔に応じてアクセス制御を行う場合について説明する。図24は、本実施例3におけるJava(登録商標)実行環境502の構成を示した説明図である。
アプリケーション501、Java(登録商標)実行環境502、Java(登録商標)提供各種API503、Java(登録商標)提供アクセス制御コントローラ504、セキュリティプロパティファイル505、アクセス権限管理テーブル506、各種車載API507、外部アクセス制御手段508、アクセス権限判定手段509、アクセス権限一覧保持手段511、外部アクセス制御手段登録手段512、各種車両システムリソース513、状態検証手段呼出手段1801、状態検証手段管理手段1802、状態検証手段読込み手段1803、状態検証手段管理テーブル1804、状態検証手段1805に関しては、実施例1及び実施例2で示したものと同一であるので、説明は省略する。
アクセス権限行使状況管理手段2401は、Java(登録商標)提供各種API503や各種車載API507をコールした時に行使した付与アクセス権限に関して記憶する手段である。内部に、記憶するテーブルとして権限行使状況管理テーブル2402を持つ。
権限行使状況管理テーブル2402は、Java(登録商標)提供各種API503や各種車載API507をコールした時に行使した付与アクセス権限に関して、最後に行使した時刻と、今まで行使した回数等の情報を格納するテーブルである。
次に、図25を用いて、アクセス権限行使状況管理テーブル2402の構成について説明する。
コードソース2501は、付与アクセス権限を行使したJava(登録商標)プログラムに関する情報を格納するエントリである。実施例1の図9のステップS902にて生成した、実行しているJava(登録商標)プログラムの属性であるコードソースを格納する。
アクセス権限情報2502は、コードソース2501にて表されるJava(登録商標)プログラムが行使した付与アクセス権限に関する情報を格納するエントリである。実施例1の図6のアクセス権限管理テーブル506に格納されている付与アクセス権限情報602を格納する。
最終行使時刻2503は、コードソース2501で表されるJava(登録商標)プログラムが、アクセス権限情報2502で表される付与アクセス権限を、最後に行使した時刻を管理するエントリである。
行使回数は、コードソース2501で表されるJava(登録商標)プログラムが、アクセス権限情報情報2502で表される付与アクセス権限を、今までに何回行使したかを管理するエントリである。
次に、本実施例におけるアクセス制御の流れについて説明する。
始めに、Java(登録商標)実行環境502が起動された時に、本発明のアクセス制御方法が外部アクセス制御手段508をJava(登録商標)実行環境502に対して登録する場合の動作に関しては、実施例1で示した図8、図9と同様であるため、説明を省略する。ただし、図9のステップS907にてアクセス権限一覧保持手段511作成のために、パラメータとして付与アクセス権限一覧に加えてコードソースも与える点が異なる。
次に、Java(登録商標)実行環境502上で動作するアプリケーション501が、Java(登録商標)提供各種API503や各種車載API507をコールした時に、車の状態に応じてアクセス制御を行う場合の動作のうち、アプリケーション501からJava(登録商標)提供アクセス制御コントローラ504までの処理に関しては、実施例1で示した図10の処理の流れと同様であるので、説明は省略する。
図26で示した処理フローは、Java(登録商標)提供アクセス制御コントローラ504の処理である。この処理フロー以降は、実施例1で示した図11の処理フローから若干の変更がなされるため、以下で相違点を中心に説明する。
始めに、図10のステップS1004の処理が開始されると、図26のステップS2601が呼び出される。
ステップS2601からステップS2608までの処理は、図11のステップS1101からS1108までの処理と同様であるため、説明は省略する。ただし、ステップS2605の内部で図20の処理が呼ばれ、さらに図20のステップS2009の中で図22の処理が呼ばれるが、この図22のステップS2205にて、状態検証手段1805が付与アクセス権限の行使回数や間隔の確認を行うクラスであった場合に、状態検証手段1805にパラメータとして付与アクセス権限とコードソースを与える点が異なる。
ステップS2609にてJava(登録商標)提供アクセス制御コントローラ504は、ステップS2605で処理を行った全てのドメインに関して、アクセス権限行使状況管理手段2401に対して権限行使状況管理テーブル2402の更新を要求する。
ステップS2610にてJava(登録商標)提供アクセス制御コントローラ504は、アクセス権限認証処理の結果、アクセス権限有として処理を終了する。
以上により、Java(登録商標)提供アクセス制御コントローラ504において、アクセス権限認証の処理が完了する。
次に、図27は、有効状態にあるかどうかの検証を行う状態検証手段1805において、付与アクセス権限の行使回数もしくは行使間隔の検証を行う場合の処理フローである。
始めに、ステップS2701にて状態検証手段1805は、外部アクセス制御手段508の状態検証手段呼出手段1801からの要求により、有効状態の確認処理を開始する。この時、入力としてコードソースと付与アクセス権限を受け取る。
ステップS2702にて状態検証手段1805は、アクセス権限行使状況管理手段2401に対して、付与アクセス権限の最終行使時刻2503もしくは行使回数2504の取得を要求する。
ここで、図27の処理の流れに関して一時説明を中断して、図28を用いてステップS2502にて行われる処理の詳細に関して説明する。
図28の処理は、アクセス権限行使状況管理手段2401において、付与アクセス権限の最終行使時刻2503もしくは行使回数2504を取得する際の処理の流れである。
始めに、ステップS2801にてアクセス権限行使状況管理手段2401は、状態検証手段1805から入力としてコードソースと付与アクセス権限の対を受け取り、処理を開始する。
ステップS2802にてアクセス権限行使状況管理手段2401は、権限行使状況管理テーブル2402からコードソース2501が一致する行エレメントの検索を行う。
ステップS2803にてアクセス権限行使状況管理手段2401は、ステップS2802の処理の結果、コードソースが一致する行エレメントが見つかったかどうかの判定を行う。判定の結果、見つかった場合はステップS2804の処理に進む。見つからなかった場合はS2808に進み、未行使として処理を終了する。
ステップS2804にてアクセス権限行使状況管理手段2401は、ステップS2802にて検索したコードソース2501が一致する行エレメントから、更に、行エレメントのアクセス権限情報2502が、付与アクセス権限の付与アクセス権限情報602と一致する行エレメントの検索を行う。
ステップS2805にてアクセス権限行使状況管理手段2401は、ステップS2804の処理の結果、コードソース2501とアクセス権限情報2502が一致する行エレメントが見つかったかどうかの判定を行う。判定の結果、見つかった場合はステップS2806の処理に進む。見つからなかった場合はS2808に進み、未行使として処理を終了する。
ステップS2806にてアクセス権限行使状況管理手段2401は、ステップS2805で検索した行エレメントから、付与アクセス権限の最終行使時刻2503と行使回数2504を取得する。
ステップS2807にてアクセス権限行使状況管理手段2401は、ステップS2806にて取得した最終行使時刻2503と行使回数2504を出力として処理を終了する。
次に、図27のステップS2702の処理の続きに関して、説明を再開する。
ステップS2703にて状態検証手段1805は、ステップS2702の結果として、未行使が返ってきたかどうかの検証を行う。もし未行使であった場合はステップS2707に進み、有効な状態として処理を終了する。もし未行使でなかった場合は、ステップS2704に進む。
ステップS2704にて状態検証手段1805は、現在時刻を取得する。なお、付与アクセス権限の行使間隔の検証を行わない状態検証手段1805の場合は、本ステップはスキップして良い。
ステップS2705にて状態検証手段1805は、ステップS2702で取得した付与アクセス権限の最終行使時刻2503と行使回数2504、及び、ステップS2704にて取得した現在時刻、及び、状態検証手段1805の生成時に受け取ったパラメータから、付与アクセス権限が有効となる条件を満たしているかどうかの検証を行う。
ステップS2706にて状態検証手段1805は、ステップS2705の検証の結果、付与アクセス権限が有効となる条件を満たしている場合は、ステップS2706に進み、有効な状態として処理を終了する。付与アクセス権限が有効となる条件を満たしてない場合は、ステップS2707に進み、無効な状態として処理を終了する。
以上の図27と図28に示した処理により、付与アクセス権限が有効となる有効状態として、付与アクセス権限の行使回数や行使間隔といった条件が指定された場合に、状態検証手段1805において、有効状態にあるかどうかの確認を行う事が可能となる。
次に、図29では、ある付与アクセス権限が有効と判定された場合に、その付与アクセス権限を行使する履歴を、権限行使状況管理テーブル2402に格納する際の処理を示す。これは、図26のステップS2609の処理の詳細である。
始めに、ステップS2901にてアクセス権限行使状況管理手段2401は、図26のステップS2609から入力としてドメイン一式と付与アクセス権限を受け取る事により、処理を開始する。
ステップS2902にてアクセス権限行使状況管理手段2401は、ステップS2901にて受け取ったドメインの個数Nを算出する。そして、そのドメインに対して、0からN-1までの番号を割り振る。以降の処理では、このドメインに割り当てられた付与アクセス権限を行使した履歴を残す処理となる。
ステップS2903にてアクセス権限行使状況管理手段2401は、現在時刻を取得する。
ステップS2904にてアクセス権限行使状況管理手段2401は、ループカウンタGを0に初期化する。
ステップS2905にてアクセス権限行使状況管理手段2401は、ステップS2902にて番号を割り当てたドメインからG番目のドメインを取り出し、さらにドメインのコードソースを取得する。
ステップS2906にてアクセス権限行使状況管理手段2401は、権限行使状況管理テーブル2402からコードソース2501が一致する行エレメントの検索を行う。
ステップS2907にてアクセス権限行使状況管理手段2401は、ステップS2906の処理の結果、コードソース2501が一致する行エレメントが見つかったかどうかの判定を行う。判定の結果、見つかった場合はステップS2908の処理に進む。見つからなかった場合はS2911に進む。
ステップS2908にてアクセス権限行使状況管理手段2401は、ステップS2906にて検索したコードソース2501が一致する行エレメントから、更に、アクセス権限情報2502が付与アクセス権限と一致する行エレメントの検索を行う。
ステップS2909にてアクセス権限行使状況管理手段2401は、ステップS2908の処理の結果、コードソース2501とアクセス権限情報2502が一致する行エレメントが見つかったかどうかの判定を行う。判定の結果、見つかった場合はステップS2910の処理に進む。見つからなかった場合はS2911に進む。
ステップS2910にてアクセス権限行使状況管理手段2401は、ステップS2908にて見つかった行エレメントに対して、行使回数2504の要素を1だけインクリメントする。更に、最終行使時刻2503に対して、ステップS2903にて取得した現在時刻を格納し、ステップS2912の処理に進む。
ステップS2911にてアクセス権限行使状況管理手段2401は、ステップS2905にて取得したコードソース、ステップS2901にて受け取った付与アクセス権限のアクセス権限情報、行使回数として1、最終行使時刻としてステップS2903にて取得した現在時刻を設定して、権限行使状況管理テーブル2402に対して行エレメントの追加を行う。そして、ステップS2912の処理に進む。
ステップS2912にてアクセス権限行使状況管理手段2401は、ループカウンタGを1だけインクリメントする。
ステップS2913にてアクセス権限行使状況管理手段2401は、ループカウンタGとステップS2902で算出したドメインの個数Nを比較する。もし、G<Nの場合は、権限行使状況管理テーブル2401の中に、更新が完了していない行エレメントがあるため、ステップS2905の処理に戻る。G≧Nの場合は、全ての行エレメントの更新が終了した事になるので、ステップS2914に進み、処理を終了する。
以上により、付与アクセス権限が行使される時に、その行使の履歴を権限行使状況管理テーブル2202に格納する事ができる。
以上のように、付与アクセス権限を行使する直前に、Java(登録商標)アクセス制御コントローラ504から付与アクセス権限を行使した履歴をアクセス権限行使状況管理手段2401の権限行使状況管理テーブル2402に格納する処理を呼び出す。そして、付与アクセス権限の検証の際に、その権限行使状況管理テーブル2402に格納された情報を元に、権限行使回数や間隔を検証する事により、付与アクセス権限の行使回数や行使間隔に応じて有効となるアクセス権限を利用する事が可能となる。
なお、本実施例では、アクセス権限認証の際に外部アクセス制御手段508が実行される様にするために、外部アクセス制御手段登録手段512を提供する形態を示した。しかし、Java(登録商標)提供アクセス制御コントローラ504のソースが改修可能なケースにおいては、アクセス権限一覧保持手段511を呼び出す処理を、直接にJava(登録商標)提供アクセス制御コントローラ504のソースに追記する事も可能である。機能構成や処理の流れの修正は、実施例1で示した場合と同様のため、ここでは省略する。
また、本実施例では、外部アクセス制御手段登録手段512をポリシープロバイダクラスの仕様を満たす形で実装して、Java(登録商標)提供アクセス制御コントローラ504に対して外部アクセス制御手段508を登録する方法を示した。しかし、外部アクセス制御手段登録手段512の実装形態はポリシープロバイダクラスに限定されるものではなく、セキュリティマネージャ等、他の実装形態として提供しても良い。
また、本実施例では、アプリケーションプログラムの実行環境としてJava(登録商標)実行環境502を利用する事を想定し、そのJava(登録商標)実行環境502で最適となる実施例を示した。しかし、本発明は、Java(登録商標)実行環境502への適用に限定されるものではなく、例えばWindows(登録商標)やMacOS(登録商標)やLinux(登録商標)やSymbian(登録商標)等、他のアプリケーション実行環境に対しても適用する事が可能である。
また、本実施例では、外部アクセス制御手段508がアクセス制御のために用いる外部アクセス権限管理テーブルを、Java(登録商標)実行環境502が提供するアクセス権限管理テーブル506に統合した場合に関して説明を行った。しかし、外部アクセス制御手段508が用いる外部アクセス権限管理テーブルは、Java(登録商標)実行環境502が提供するアクセス権限管理テーブル506と同一ファイルにする必要はなく、個別にファイルを保持して管理しても良い。
また、本実施例では、本発明のアクセス制御の適用機器を車載PC111にして説明を行ったが、適用先は車載PC111に限定されるものではなく、例えばホームサーバや携帯電話等、有線や無線を通して様々なデバイスと接続するような機器に適用する事ができる。
また、図20で示した処理フローのステップS2002では、アクセス権限管理テーブル506に有効状態605が指定されているかどうかにかかわらず、全ての付与アクセス権限を取得して、ステップS2003からステップS2012にて処理を行っていた。これを、始めに有効状態605が設定されてない付与アクセス権限の取得と検証を行い、次に有効状態605が設定されている付与アクセス権限の取得と検証を行うなど、2ステップに分けて行っても構わない。
また、本実施例では、状態検証手段1805に関する情報を、状態検証手段管理テーブル1804に有効状態名1901を関連づけて格納する方式とした。しかし、状態検証手段1805に関する情報を、直接にアクセス権限管理テーブル506の有効状態605に記述しても良い。
また、本実施例では、図21に示したように、状態検証手段管理テーブル1804の読み込み処理を、初めて状態検証手段管理手段1803が利用される時とした。しかし、この処理は、初めて状態検証手段管理手段1803が利用されるより前であればいつでも良く、例えば、Java(登録商標)実行環境502が起動した時に実施しても良い。
また、本実施例では、状態検証手段呼出手段1801は、状態検証手段読込み手段1803を用いて状態検証手段1805の読み込みを行う様にしたが、あらかじめ状態検証手段1805が分かっているものに関しては、状態検証手段読込み手段1803を用いずに状態検証手段1805を取得しても構わない。
また、本実施例では、図9のステップS907にてアクセス権限一覧保持手段511作成のために、パラメータとして付与アクセス権限一覧に加えてコードソースを与えるようにした。しかし、ここで設定したコードソースは、実際には図27で示した利用アクセス権限の行使回数もしくは行使間隔の検証を行う状態検証手段が利用するため、この状態検証手段にコードソースが送付されるようであれば、他にどの様なタイミングで通知されても良い。
また、本実施例では、図25に示したように、付与アクセス権限のアクセス権限情報のみを保存しておき、再度同一のアクセス権限情報を持つ付与アクセス権限が利用されようとした時に、その最終行使時刻2503と行使回数2504を見て付与アクセス権限が有効となる状態かどうかの確認を行っていた。しかし、権限行使状況管理テーブル2402に保存する情報は、付与アクセス権限のアクセス権限情報だけではなく、そのリソース指定情報や操作内容情報も含めて保存して、それらの情報も用いて付与アクセス権限が有効となるかどうかを判定しても良い。
また、本実施例では、図29で示したように、権限行使状況管理テーブル2402に記録する付与アクセス権限が一個の言う場合について、その処理の流れを示した。しかし、利用する利用アクセス権限に対して、行使履歴を残す必要がある付与アクセス権限は、同一ドメイン内においても複数存在する場合も考えられる。この場合、図29に示した処理を、行使履歴を残す必要がある全ての付与アクセス権限について繰り返し実行する必要がある。