(57)【特許請求の範囲】
【請求項１】
所定の内部デバイスを有するとともに、所定の外部デバイスに接続されたコンピュータであり、
アプリケーションを実行するための実行環境を提供するアプリケーション実行環境であって、コンピュータのリソースへのアクセス権限を管理する情報が格納されたアクセス権限管理テーブルと、前記アクセス権限管理テーブルに格納された情報に基づいてアクセス制御を行うアクセス制御コントローラとを備えるアプリケーション実行環境と、
前記内部デバイスと前記外部デバイスとの少なくともいずれかの状況に基づいてアクセス権限の有効状態を判定し、判定した結果に基づいて前記アクセス制御コントローラにアクセス制御を行わせる外部アクセス制御手段と
を備えることを特徴とするコンピュータ。
【請求項２】
前記コンピュータは、さらに、
前記アクセス制御コントローラが前記アクセス権限管理テーブルを用いて前記アクセス制御を行う際、前記アクセス制御コントローラに前記外部アクセス制御手段を呼び出させる外部アクセス制御手段登録手段と
を備えることを特徴とする請求項１記載のコンピュータ。
【請求項３】
前記コンピュータは、さらに、
前記内部デバイスと前記外部デバイスとの少なくともいずれかの状況に基づいてアクセス権限の有効状態を判定するための情報が格納された状態検証手段管理テーブルを備え、
前記外部アクセス制御手段は、前記状態検証手段管理テーブルに格納された情報に基づいて、動的に有効状態を判定する
ことを特徴とする請求項１又は２記載のコンピュータ。
【請求項４】
前記コンピュータは、さらに、
前記アクセス権限を行使した履歴を保存するアクセス権限行使状況管理手段を備え、
前記外部アクセス制御手段は、前記アクセス権限行使状況管理手段に保存された履歴に基づいて有効状態を判定する
ことを特徴とする請求項１から３までのいずれかに記載のコンピュータ。
【請求項５】
前記アプリケーション実行環境は、Ｊａｖａ（登録商標）実行環境である
ことを特徴とする請求項１から４までのいずれかに記載のコンピュータ。
【請求項６】
アプリケーションを実行するための実行環境を提供するアプリケーション実行環境であって、コンピュータのリソースへのアクセス権限を管理する情報が格納されたアクセス権限管理テーブルと、前記アクセス権限管理テーブルに格納された情報に基づいてアクセス制御を行うアクセス制御コントローラとを備えるアプリケーション実行環境を備え、所定の内部デバイスを有するとともに、所定の外部デバイスに接続されたコンピュータのリソースへのアクセス制御方法であり、
前記アプリケーション実行環境の外部に設けられたプログラムが、前記内部デバイスと前記外部デバイスとの少なくともいずれかの状況に基づいてアクセス権限の有効状態を判定し、
前記アクセス制御コントローラが、判定されたアクセス権限の有効状態に基づいてアクセス制御を行うことで、前記外部デバイスの状況に基づいてアクセス制御を行う
ことを特徴とするコンピュータのリソースへのアクセス制御方法。
【請求項７】
アプリケーションを実行するための実行環境を提供するアプリケーション実行環境であって、コンピュータのリソースへのアクセス権限を管理する情報が格納されたアクセス権限管理テーブルと、前記アクセス権限管理テーブルに格納された情報に基づいてアクセス制御を行うアクセス制御コントローラとを備えるアプリケーション実行環境を備え、所定の内部デバイスを有するとともに、所定の外部デバイスに接続されたコンピュータのリソースへのアクセス制御プログラムであり、
前記アプリケーション実行環境の外部に設けられたプログラムが、前記内部デバイスと前記外部デバイスとの少なくともいずれかの状況に基づいてアクセス権限の有効状態を判定する有効状態判定処理と、
前記アクセス制御コントローラに、前記有効状態判定処理で判定されたアクセス権限の有効状態に基づいてアクセス制御を行わせることで、前記外部デバイスの状況に基づいてアクセス制御を行うアクセス制御処理と
を前記コンピュータに実行させることを特徴とするアクセス制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータリソースへのアクセス制御機能を備えたコンピュータ及びコンピュータリソースへのアクセス制御方法及びコンピュータに実行させるアクセス制御プログラムに関するものである。
【背景技術】
【０００２】
従来のアクセス制御方法では、ユーザID／グループID／ロール（役割）／リソース名／操作内容等の情報を条件として、事前にアクセス権限管理テーブル（ACL:Access Control List）に付与アクセス権限を定義していた（例えば、非特許文献１：David F.Ferraiolo, D.Richard Kuhn, Ramaswamy Chandramouli著「Role-Based Access Control」ARTECH HOUSE,INC.,2003年、P6〜16）。【０００３】
そして、アプリケーションがリソースへのアクセスを試みた際に、リソースアクセスのためにコールされたAPIが、API実行に必要な利用アクセス権限をアプリケーションが保持しているかどうかの判定を、アクセス権限認証機構を利用して行う。アクセス権限認証機構では、具体的には、APIをコールしたアプリケーションの属性情報として、起動者のユーザID／グループID／ロール等の属性情報、操作対象のリソース名、操作内容等の操作属性情報を取得する。次に、利用アクセス権限に関する情報が、アクセス権限管理テーブルに許可する付与アクセス権限として記載されているかどうかの判定を行う事により、アクセス権限の認証を行う。【０００４】
このアクセス権限認証の結果にてアクセス権限があると判定された場合にのみ、リソースアクセスのためにコールされたAPIは、コンピュータリソースへのアクセスを行っていた。これにより、アプリケーションが処理を行う際にアクセス権限の認証を行い、リソースへのアクセスを制御する事ができた。【０００５】
また、アプリケーションがOSのAPIをコールするのを補足し、補足した際に独自のアクセス権限認証を行う事によって、OSがサポートしていないアクセス権限の認証を行う方法も提案されている（例えば、特許文献１：特開2003-44297号公報  第12頁〜21頁、第２図）。【０００６】
この方法では、事前にアクセス権限管理テーブルに対して、OSがサポートしてない独自の付与アクセス権限を定義する。そして、アプリケーションがリソースへのアクセスを試みた際に、そのAPIコールを補足して、独自に用意したアクセス権限認証機構（図中アクセス制御CTRL）を用いて、アクセス権限認証を行う。このアクセス権限認証は、非特許文献１に記載された従来の技術と同様に行う。そのアクセス権限認証の結果、アクセス権限があると判断された場合は、本来呼ばれるべきAPIコールを実行して、リソースへのアクセスを行う。【０００７】
これにより、様々なリソースへのアクセス（APIのコール）に対して、OSが提供していない独自のアクセス権限を与え、独自のアクセス制御を行う事ができた。【０００８】
また、アクセスの可否を、ユーザID／グループID／ロール等のアクセス者の属性、操作対象となるリソース名、実行しようとしている操作内容以外のパラメータで判断する方法も開示されている（例えば、非特許文献２：ACM Transactions on Information and System Security, Vol.7, No.3, August 2004, Pages 392-427 「An Integrated Approach to Engineer and Enforce Context Constraints in RBAC Environments」）。【０００９】
この方法では、独自の構成の中で、アクセスの可否を判断するパラメータとして、ユーザID／グループID／ロール等のアクセス者の属性、操作対象となるリソース名、実行しようとしている操作内容（非特許文献２中のPermission）以外のパラメータ（非特許文献２中のContext Condition）を設けることを提案しており、より汎用的なアクセス制御を行っている。【００１０】
【非特許文献１】David F.Ferraiolo, D.Richard Kuhn, Ramaswamy Chandramouli著「Role-Based Access Control」ARTECH HOUSE,INC.,2003年
【非特許文献２】ACM Transactions on Information and System Security, Vol.7, No.3, August 2004, Pages 392-427 「An Integrated Approach to Engineer and Enforce Context Constraints in RBAC Environments」
【特許文献１】特開2003-44297号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
非特許文献１及び特許文献１に示される従来のアクセス制御方法では、アクセスの可否を、ユーザID／グループID／ロール等のアクセス者の属性、操作対象となるリソース名、実行しようとしている操作内容のみで判断しており、そのリソースが置かれているPC等のプログラム実行環境の状況を考慮していないという問題点があった。【００１２】
例えば、Java(登録商標)搭載カーナビでは、運転者が自由にJava(登録商標)プログラムをダウンロードして実行する事ができる。更にプログラムから、車のドアロックの解除等の操作を行う方式も検討されつつある。しかし、安全運転の観点から、車が停車中はドアロックの解除を許可するが、車が走行中にはドアロックが解除されてはならないケースがある。また同様に、停車中は多くの画面描画を伴うゲームの実行を許可するが、走行中はゲームの実行等を許可したくないケースがあり得る。【００１３】
また、たとえ車が停車中であっても、カーナビ本来の処理を円滑に行うために、新たに他の処理を受け付けたくはないケースも考えられる。【００１４】
この様な要件に対しては、非特許文献１及び特許文献１で示したようなアクセス者の属性、リソース名、操作内容のみでアクセスの可否を判断するアクセス制御方法では、リソースが置かれているPC等のプログラム実行環境の状態を考慮しないため、十分なアクセス制御ができないという問題点があった。【００１５】
このような問題点を解決するものとして、非特許文献２のようなアクセス制御方法が存在するが、非特許文献２に開示されたアクセス制御方法では、独自の構成の中でアクセス者の属性、リソース名、操作内容以外のパラメータを定義しているため、例えばJava(登録商標)搭載カーナビに適用しようとした場合、非特許文献２の構成となるようJava(登録商標)本体のプログラムを修正必要がある。このような修正作業は非常に困難で、もし修正可能であったとしても、多くの手間と費用を要することとなる。【００１６】
この発明は上記のような問題点を解決するためになされたもので、プログラムが動作するPCの状態や、それに接続されたデバイスの状態も考慮に入れて、かつJava(登録商標)等の本体のプログラムを修正することなく、メンテナンスが容易で、コスト的に有利なアクセス制御を実現する事を目的とする。
【課題を解決するための手段】
【００１７】
本発明にかかわるコンピュータは、実行環境の状況に基づいてアクセス権限の有効状態を判定する有効状態判定手段と、前記有効状態判定手段による有効状態に基づいて、コンピュータリソースへのアクセス権限を指定するアクセス権限管理テーブルと、前記アクセス権限管理テーブルに基づいてアクセス制御を行うアクセス制御実行環境とを備えるものである。
【発明の効果】
【００１８】
実行環境の状況に基づいてアクセス権限の有効状態を判定する有効状態判定手段と、前記有効状態判定手段による有効状態に基づいて、コンピュータリソースへのアクセス権限を指定するアクセス権限管理テーブルと、前記アクセス権限管理テーブルに基づいてアクセス制御を行うアクセス制御実行環境とを備えることにより、メンテナンスが容易で、コスト的に有利で、細かいアクセス制御を行うことができる。
【図面の簡単な説明】
【００１９】
【図１】本発明のアクセス制御方法を適用したシステム全体の構成を示す説明図である。
【図２】監視・制御の処理の流れを示す説明図である。
【図３】監視サーバ105が車両システム101を監視する場合の処理の流れを示す説明図である。
【図４】スマートキー103を用いてドアのロック解除を行う場合の処理の流れを示す説明図である。
【図５】車載PC111に搭載された本発明のアクセス制御方法を適用したJava(登録商標)実行環境の構成を示す説明図である。
【図６】アクセス権限管理テーブル506の構成を示した説明図である。
【図７】セキュリティプロパティファイル505の構成を示す説明図である。
【図８】Java(登録商標)実行環境502の初期化と、アクセス権限管理テーブル506の読み込み処理における処理の流れを示したシーケンス図である。
【図９】アプリケーション501を構成するクラスが読み込まれた時に、アプリケーションに与える付与アクセス権限一式を決定する時の処理の流れを示したシーケンス図である。
【図１０】アプリケーション501がJava(登録商標)提供各種API503もしくは各種車載API507をコールした時に、どの様にしてJava(登録商標)提供アクセス制御コントローラ504が呼ばれるかを示した説明図である。
【図１１】アクセス権限認証実施である図１０のS1004の詳細を示す処理フローである。
【図１２】アクセス権限一覧保持手段[C]に格納されているアクセス権限を用いてアクセス権限認証を行う図１１のS1105の詳細を示す処理フローである。
【図１３】車載PC111に搭載された本発明のアクセス制御方法を適用したJava(登録商標)実行環境の別の構成を示す説明図である。
【図１４】図１３の場合の、Java(登録商標)実行環境502の初期化と、アクセス権限管理テーブル506の読み込み処理における処理の流れを示したシーケンス図である。
【図１５】図１３の場合の、アプリケーション501を構成するクラスが読み込まれた時に、アプリケーションに与える付与アクセス権限一式を決定する時の処理の流れを示したシーケンス図である。
【図１６】Java(登録商標)実行環境502の初期化と、アクセス権限管理テーブル506の読み込み処理における別の処理の流れを示したシーケンス図である。
【図１７】アプリケーション501を構成するクラスが読み込まれた時に、アプリケーションに与える付与アクセス権限一式を決定する時の別の処理の流れを示したシーケンス図である。
【図１８】実施例２におけるJava(登録商標)実行環境502の機能構成を示した説明図である。
【図１９】状態検証手段管理テーブル1604の構成を示した説明図である。
【図２０】Java(登録商標)提供アクセス制御コントローラ504から呼び出された外部アクセス制御手段508の処理フローである。
【図２１】付与アクセス権限が有効となる有効状態605を元に、その有効状態605が成り立つかどうかを検証するための状態検証手段1605一式を読み込む場合の処理フローである。
【図２２】状態検証手段1605一式を用いて、車載PC111や車両システム101において付与アクセス権限が有効となる状態にあるかどうかを検証するための処理フローである。
【図２３】状態検証手段1605において、状態確認メソッドがコールされた時に行われる処理フローである。
【図２４】本実施例３におけるJava(登録商標)実行環境502の構成を示した説明図である。
【図２５】アクセス権限行使状況管理テーブル2202の構成を示す説明図である。
【図２６】Java(登録商標)提供アクセス制御コントローラ504の処理フローである。
【図２７】有効状態にあるかどうかの検証を行う状態検証手段1605において、付与アクセス権限の行使回数もしくは行使間隔の検証を行う場合の処理フローである。
【図２８】アクセス権限行使状況管理手段2201において、付与アクセス権限の最終行使時刻2303もしくは行使回数2304を取得する際の処理フローである。
【図２９】ある付与アクセス権限が有効と判定された場合に、その付与アクセス権限を行使する履歴を、権限行使状況管理テーブル2202に格納する際の処理フローである。
【符号の説明】
【００２０】
１０１  車両システム
１０２  携帯電話C
１０３  スマートキー
１０４  配信サーバ
１０５  監視サーバ
１０６  携帯電話B
１０７  インターネット
１１１  車載PC
１１２  記憶装置
１１３  ディスプレイ
１１４  入力装置
１１５  携帯電話A
１１６  無線デバイス
１１７  情報系LAN
１１８  エンジン
１１９  ドアロック
１２０  イモビライザ
１２１  速度メータ
１２２  ヘッドライト
１２３  制御系LAN
１２４  車載GW
５０１  アプリケーション
５０２  Java(登録商標)実行環境
５０３  Java(登録商標)提供各種API
５０４  Java(登録商標)提供アクセス制御コントローラ
５０５  セキュリティプロパティファイル
５０６  アクセス権限管理テーブル
５０７  各種車載API
５０８  外部アクセス制御手段
５０９  アクセス権限判定手段
５１０  有効状態判定手段
５１１  アクセス権限一覧保持手段
５１２  外部アクセス制御手段登録手段
５１３  各種車両システムリソース
６０１  権限付与対象
６０２  付与アクセス権限情報
６０３  リソース指定情報
６０４  操作内容情報
６０５  有効状態
７０１  暗号プロバイダ設定値
７０２  ポリシープロバイダ設定値
１８０１  状態検証手段呼出手段
１８０２  状態検証手段管理手段
１８０３  状態検証手段読込み手段
１８０４  状態検証手段管理テーブル
１８０５  状態検証手段
１９０１  有効状態名
１９０２  状態検証手段名
１９０３  パラメータ
２４０１  アクセス権限行使状況管理手段
２４０２  権限行使状況管理テーブル
２５０１  コードソース
２５０２  アクセス権限情報
２５０３  最終行使時刻
２５０４  行使回数
【発明を実施するための最良の形態】
【００２１】
実施例１．
図１は、この発明のアクセス制御方法を適用したJava(登録商標)実行環境（アクセス制御実行環境に相当）を、車の監視・制御を実現するために車載PCに搭載して、監視・制御システムを構成した場合のシステム構成図である。【００２２】
図１において、車両システム101は車であって、車載PC111やエンジン118や速度メータ121などの各種車載機器によって構成される。【００２３】
車載PC111は、車両システム101に搭載された車載機器であって、本発明のアクセス制御機能、及び車両システム101に搭載された各種車載機器を制御するためのAPI（Application Programming Interface）を備えたJava(登録商標)実行環境を備える。更に、各種Java(登録商標)プログラムやアクセス権限管理テーブルを記憶する記憶装置112を備える。【００２４】
ディスプレイ113は、車両システム101に搭載された車載機器であって、車載PC111等の車載機器からの要求により、運転者や同乗者（以降、まとめて運転者と呼ぶ）に対して、道路情報や各種車載機器の監視情報を提示するための表示装置である。【００２５】
入力装置114は、キーボードや操作パネル等、運転者から制御コマンド等の指示を入力するための機器である。物理的には、タッチパネル型ディスプレイとして、ディスプレイと統合されているケースもある。【００２６】
携帯電話Ａ115は、車両システム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は、上記で述べた様な、車の走行に必須となる各種車載機器を接続するためのネットワークである。【００３５】
車載ＧＷ124は、車両システム101に搭載された車載機器であって、情報系LAN117と制御系LAN123を接続するＧＷ（ゲートウェイ）としての役割を果たし、通信プロトコルの変換等を行うための機器である。【００３６】
携帯電話Ｃ102は、運転者が保持する機器であって、車両システム101に搭載された無線デバイス116を通して車載PC111と通信する機能と、監視・制御コマンドの送受信を行う機能を持つ機器である。【００３７】
スマートキー103は、運転者が保持する鍵に相当する機器であって、車両システム101の無線デバイス116を通して車載PC111と通信する機能と、ドアの開閉コマンドを送信するための機能を持つ機器である。【００３８】
配信サーバ104は、インターネット107に接続された機器であって、車載PC111で動作するJava(登録商標)プログラムや、動画や音楽などの各種コンテンツを配信するためのサーバである。【００３９】
監視サーバ105は、インターネット107に接続された機器であって、車載PC111で動作するJava(登録商標)プログラムを提供すると共に、車両システム101上の各種機器の遠隔監視・制御を行うためのサーバである。【００４０】
携帯電話Ｂ106は、インターネット107に接続された機器であって、車の遠隔監視・制御を行うための機器である。通常は車の保有者が保持している。【００４１】
インターネット107は、上記で述べた車両システム101や各種サーバや携帯電話Ｂ106を接続するための汎用ネットワークである。【００４２】
なお、情報系LAN117や制御系LAN123に接続される各種車載機器は、上記で述べた機器に限定されるものではなく、車の構成要素に応じて様々な車載機器を接続する事ができる。更に、車両システム101のネットワーク構成も、上記構成に限定されるものではなく、単一ネットワークや、さらに分割したネットワークを構成しても良い。【００４３】
また、インターネット107上に設置されるサーバも、配信サーバ104や監視サーバ105や携帯電話Ｂ106に限定されるものではなく、車に提供するサービスに応じて、様々なサーバやクライアントを設置しても良い。同様に、無線デバイスに接続する機器として携帯電話Ｃ102やスマートキー103を示したが、提供するサービスに応じて様々なデバイスを接続出来るようにしても良い。【００４４】
次に、この車の監視・制御システムの利用形態について、代表的なものを説明する。【００４５】
始めの利用形態は、車載PC上で動作する監視・制御プログラムによる監視・制御である。図２は、監視・制御の処理の流れを示す説明図である。図２を用いて以下に処理の流れを説明する。【００４６】
車載PC111が起動した時、もしくは、運転者の指示に応じて、監視・制御を行う監視・制御プログラムを車載PC111上で起動する（ステップS201からステップS203）。ここで起動する監視・制御プログラムは、事前に車載PC111の記憶装置112に搭載されている場合もあれば、インターネット107を経由して、配信サーバ104や監視サーバ105から入手したプログラムの場合もある。【００４７】
監視・制御プログラムが起動されると、プログラムは自動で、もしくは運転者の指示によって、各種車載機器に対して監視情報を取得するための監視コマンドを送信する（ステップS204からステップS206）。その結果、車載機器より監視情報を取得し（ステップS207）、ディスプレイに対して表示の指示をする（ステップS208）。そして、この動作を繰り返す事により、運転者は各種車載機器の監視を行う事ができる。【００４８】
更に、運転者が入力装置114を操作する事により、車載機器の制御を指示したとする（ステップS209）。その運転者の指示を受け取った監視・制御プログラムは（ステップS210）、運転者の指示を元に制御コマンドを作成し、制御対象となる車載機器に制御コマンドを送信し（ステップS211）、制御が完了した事を確認する（ステップS212）。そして、その制御結果をディスプレイに表示する（ステップS213）。これによって、運転者は各種車載機器の制御を行う事ができる。【００４９】
他の利用形態として、監視サーバ105や携帯電話B106による遠隔監視・制御がある。図３は、監視サーバ105が車両システム101を監視する場合の処理の流れを示す説明図である。図３を用いて以下に処理の流れを説明する。【００５０】
車載PC111が起動した時、もしくは、運転者の指示に応じて、遠隔操作を受け付ける遠隔監視・制御プログラムを車載PC111上で起動する（ステップS301）。ここで起動する遠隔監視・制御プログラムは、事前に車載PC111の記憶装置112に搭載されている場合もあれば、インターネット107を経由して、監視サーバ105から入手したプログラムの場合もある。また、起動のタイミングは、監視サーバ105からの監視コマンドを受信した時でも良い。【００５１】
監視サーバ105がインターネット107と携帯電話Ａ115を通じて、車載PC111に対して監視コマンドを送信すると（ステップS302）、遠隔監視・制御プログラムは、監視サーバ105の監視コマンドを解釈して、車載機器に対して制御コマンドを送付して（ステップS303）、車載機器の情報を取得して（ステップS304）、その情報を監視サーバに送信する（ステップS305）。これにより、監視サーバ105は、車両システム111の遠隔監視を行う事ができる。【００５２】
さらに監視サーバ105が制御を行う場合、車載PC111に対して制御コマンドを送信する（ステップS306）。その制御コマンドを受信した遠隔監視・制御プログラムは、監視サーバ105の制御コマンドを解釈して、車載機器に対して送信する制御コマンドに変換して、その制御コマンドを車載機器に送信し（ステップS307）、制御が完了した事を確認する（ステップS308）。車載機器に制御コマンドを送った結果は、別途監視サーバに送信する（ステップS309）。これにより、監視サーバ105は、車両システム101の遠隔制御を行う事ができる。【００５３】
その他の利用形態として、携帯電話Ｃ102やスマートキー103を用いた狭域監視・制御がある。図４は、スマートキー103を用いてドアのロック解除を行う場合の処理の流れを示す説明図である。図４を用いて以下に処理の流れを説明する。【００５４】
車載PC111が起動した時、もしくは、運転者の指示に応じて、狭域操作を受け付ける狭域監視・制御プログラムを車載PC111上で起動する（ステップS401）。ここで起動する狭域監視・制御プログラムは、事前に車載PC111の記憶装置112に搭載されている場合もあれば、インターネット107を経由して、監視サーバ105や配信サーバ104から入手したプログラムの場合もある。また、起動のタイミングは、スマートキー103からの制御コマンドを受信した時でも良い。【００５５】
運転者がスマートキー103を操作する事によって（ステップS403）、もしくは車に近づく事によって自動的に、ドアロック解除コマンドが無線デバイス116経由で車載PC111に送信されると（ステップS404）、狭域監視・制御プログラムは、ドアロック解除コマンドを解釈して、車載機器の一つであるドアロック119に対して送信する制御コマンドに変換して、その制御コマンドをドアロック119に送信する（ステップS405）。ドアロック119は、その制御コマンドを解釈して、ロアのロックを解除する。これによって、運転者は、ドアロックの解除を行う事ができる。【００５６】
以上、車載PC111が搭載された車両システム101において、どの様に遠隔監視・制御が利用されるかについて説明した。【００５７】
次に、図５は車載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や携帯電話Ａ115やエンジン118や車載GW124等の情報系LAN117／制御系LAN123に接続された全ての車載機器を指す。この各種車両システムリソース513は、Java(登録商標)提供各種API503や各種車載API507を用いて監視・制御する事が可能である。【００７２】
図６は、アクセス権限管理テーブル506の構成を示した説明図である。
権限付与対象601は、付与アクセス権限を付与する対象となるアプリケーション501や各種車載API507等の条件を、一つ、もしくは複数の条件の組合せで指定する。例えば、クラス名やJarファイル名、クラスやJarファイルが格納された記憶装置112内やネットワーク上の場所、プログラム作成者や運転者や利用者（監視サーバ105や携帯電話Ｃ102の操作者を含む）のユーザ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の１行に記載された情報のうち、付与アクセス権限情報602とリソース指定情報603と操作内容情報604と有効状態605を併せて付与アクセス権限と呼ぶ。この付与アクセス権限が、同一行に記載された権限付与対象601に対して与えられる。【００７８】
図７は、Java(登録商標)実行環境502に含まれるセキュリティプロパティファイル505の構成を示す説明図である。【００７９】
セキュリティプロパティファイル505は、暗号プロバイダ設定値701やポリシープロバイダ設定値702を含む様々な情報から構成される。【００８０】
暗号プロバイダ設定値701は、暗号アルゴリズムが実装されているプロバイダのマスタクラス名一式を指定する。本設定値は、本発明の利用には無関係である。【００８１】
ポリシープロバイダ設定値702は、アクセス権限管理テーブル506が保存されたファイルを読み込み、更に、Java(登録商標)のクラスに対して与える付与アクセス権限を抽出する機能を持つクラス名を指定する設定値である。【００８２】
次に、図８と図９を用いて、Java(登録商標)実行環境502が起動された時に、外部アクセス制御手段508をJava(登録商標)実行環境502に対して登録する場合の動作について説明する。Java(登録商標)実行環境が起動された場合、始めにJava(登録商標)実行環境の初期化とアクセス権限管理テーブルの読み込み処理が行われ、その後、アプリケーションがロードされた時にアプリケーションに与える付与アクセス権限一式が決定される。【００８３】
図８は、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が提供するクラスのインスタンス化が完了した事によって通知する。【００９２】
図９は、アプリケーション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の実行には数多くのクラスが必要となるため、全てのクラスに対して以上の処理を行う事によって、クラスのロードを行う。【０１０８】
以上の様に、図８と図９に示した手順を実行する事によって、Java(登録商標)実行環境502の起動、及び、アプリケーション501を実行するために必要なクラスのロードが完了して、Java(登録商標)実行環境502によってアプリケーション501の実行が開始される。【０１０９】
次に、図１０、図１１、図１２を用いて、Java(登録商標)実行環境502上で動作するアプリケーション501が、Java(登録商標)提供各種API503や各種車載API507をコールした時に、車の状態に応じてアクセス制御を行う場合の動作について説明する。【０１１０】
図１０は、アプリケーション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が呼び出され、アクセス権限認証が行われる事を示す処理の流れを示した。【０１１９】
次に、図１１及び図１２を用いて、図１０のステップS1004の処理の詳細な流れを説明する。図１１はアクセス権限認証実施である図１０のS1004の詳細を示す説明図であり、図１２はアクセス権限一覧保持手段[C]に格納されているアクセス権限を用いてアクセス権限認証を行う図１１のS1105の詳細を示す説明図である。【０１２０】
始めに、図１０のステップS1004の処理が開始されると、図１１のステップS1101が呼び出される。ステップS1101でJava(登録商標)提供アクセス制御コントローラ504は、Java(登録商標)提供各種API503もしくは各種車載API507から、アプリケーション501に付与されている付与アクセス権限一覧に含まれているかどうかを調べる利用アクセス権限を受け取る。【０１２１】
ステップS1102にてJava(登録商標)提供アクセス制御コントローラ504は、利用アクセス権限が含まれているかどうかの検索対象ドメインの一覧を抽出する。この時、抽出した検索対象ドメインの個数をNとし、各検証対象ドメインには0からN-1までの番号を付加する。なお、検索対象ドメインとは、図９のステップS911で作成したドメインと同一であって、利用アクセス権限が含まれているかどうかを検索する対象となるドメインの事を指す。このステップS1102では、アプリケーション501からJava(登録商標)提供アクセス制御コントローラ504が呼ばれるまでに通った全てのクラスに対して、各クラスが属するドメインを抽出する。ただし、Java(登録商標)仕様で定められた特権ブロックが利用されている場合は、その特権ブロックからアプリケーション寄りのクラスに関して、ドメインを抽出する処理は行わない。【０１２２】
ステップS1103にてJava(登録商標)提供アクセス制御コントローラ504は、ループ処理を行うためのループカウンタCを0に設定する。【０１２３】
ステップS1104にてJava(登録商標)提供アクセス制御コントローラ504は、ステップS1102で抽出した検証対象ドメイン一覧の中からC番目の検証対象ドメインを取得し、その検証対象ドメインに割り当てられたアクセス権限一覧保持手段511を取得する。ここで取得したアクセス権限一覧保持手段511は、図９のステップS908にて作成したアクセス権限一覧保持手段511であって、外部アクセス制御手段508のアクセス権限判定手段509と有効状態判定手段510を用いてアクセス権限認証を行う機能も持っている事がポイントである。【０１２４】
ステップS1105にてJava(登録商標)提供アクセス制御コントローラ504は、ステップS1104にて取得したアクセス権限一覧保持手段511に対して利用アクセス権限を送付し、アクセス権限の認証を要求する。【０１２５】
次に、図１１の処理の流れの説明を一時中断して、図１２を用いて、上記図１１のステップ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の値を１だけインクリメントする。【０１３７】
ステップS1212にて外部アクセス制御手段508のアクセス権限一覧保持手段511は、ループカウンタDと付与アクセス権限の個数Mを比較する。もし、D＜Mの場合は、未検証の付与アクセス権限があるため、ステップS1204の処理に戻る。D≧Mの場合は、全ての付与アクセス権限の検証が終了し、かつ、有効となる付与アクセス権限が見つからなかった事になるため、ステップS1214に進み、アクセス権限無として処理を終了する。【０１３８】
次に、図１１のステップS1105の処理の続きに関して、説明を再開する。【０１３９】
ステップS1116にてJava(登録商標)提供アクセス制御コントローラ504は、ステップS1105の結果としてアクセス権限有と判定されたかどうかを検証する。もし、アクセス権限有と判定された場合は、ステップS1107の処理に進む。アクセス権限無と判定された場合は、ステップS1110に進み、アクセス権限無として処理を終了する。【０１４０】
ステップS1107にてJava(登録商標)提供アクセス制御コントローラ504は、ループカウンタCを１だけインクリメントする。【０１４１】
ステップS1108にてJava(登録商標)提供アクセス制御コントローラ504は、ループカウンタCと検証対象ドメイン一覧の個数Nを比較する。もし、C＜Nの場合は、未検証の検証対象ドメインがあるため、ステップS1104の処理に戻る。C≧Nの場合は、全ての検証対象ドメインの検証が終了し、かつ、全ての検証対象ドメインでアクセス権限有と判定された事になるので、ステップS1109に進み、アクセス権限有として処理を終了する。【０１４２】
以上の図１１と図１２に示した手順により、Java(登録商標)アクセス制御コントローラ504と外部アクセス制御手段508が連携して、アクセス権限の認証を行う。【０１４３】
また、外部アクセス制御手段登録手段512を起動するためには、図７に示すような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のソースに追記する事も可能である。【０１５０】
この場合、図５で示した機能構成は、図１３に示したようになる。具体的には、外部アクセス制御手段登録手段512が不要となる。【０１５１】
また、アプリケーション501起動の処理に関しても、外部アクセス制御手段登録手段512の介在が不要となる。具体的には、図１２で示したポリシープロバイダ設定値702はJava(登録商標)実行環境502の初期設定値のままとする。さらに、図８で示した処理フローは図１４に示したように、Java(登録商標)実行環境502が外部アクセス制御手段登録手段512を呼び出すことなく、直接にアクセス権限管理テーブル506を読み込む。さらに、図９で示した処理フローは図１５に示したように、Java(登録商標)実行環境502が直接に外部アクセス制御手段508のアクセス権限一覧保持手段511を生成して、ドメインが生成される。
また、図１０、図１１、図１２に示した処理の流れは基本的に同一である。【０１５２】
また、図８で示した処理フローは、図１６に示したように、外部アクセス制御手段登録手段512からアクセス権限管理テーブル506へ直接アクセス権限管理テーブル読込み要求を送ってもよい。この場合、図９で示した処理フローは、図１７に示したように、Java(登録商標)実行環境502における付与アクセス権限一覧取得の動作が不要となる。
また、図１０、図１１、図１２に示した処理の流れは基本的に同一である。【０１５３】
また、外部アクセス制御手段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に限定されるものではなく、例えばホームサーバや携帯電話等、有線や無線を通して様々なデバイスと接続するような機器に適用する事ができる。【０１５８】
また、図１２で示した処理フローのステップS1202では、アクセス権限管理テーブル506に有効状態が指定されているかどうかにかかわらず、全ての付与アクセス権限を取得して、ステップS1203からステップS1212にて処理を行っていた。これを、始めに有効状態605が設定されてない付与アクセス権限の取得と検証を行い、次に有効状態605が設定されている付与アクセス権限の取得と検証を行うなど、２ステップに分けて行っても構わない。【０１５９】
実施例２．
上記実施例１では、外部アクセス制御手段508に実装した有効状態判定手段510にて、車載PC111や車両システム101の状態が有効な状態にあるかどうかの検証を行う場合について説明した。【０１６０】
本実施例２では、さらに加えて、外部アクセス制御手段508の有効状態判定手段510のプログラムをカスタマイズすることなく、簡単に有効状態605として設定出来る条件を追加出来る仕組みを提供する場合について説明する。図１８は、本実施例２におけるJava(登録商標)実行環境502の機能構成を示した説明図である。【０１６１】
アプリケーション501、Java(登録商標)実行環境502、Java(登録商標)提供各種API503、Java(登録商標)提供アクセス制御コントローラ504、セキュリティプロパティファイル505、アクセス権限管理テーブル506、各種車載API507、外部アクセス制御手段登録手段512、各種車両システムリソース513に関しては、実施例１で示したものと同一であるので、説明は省略する。【０１６２】
外部アクセス制御手段508は、車載PC111や車両システム101に搭載された各種車載機器の状態に応じて有効となる付与アクセス権限の判定を行う機能である。これは、あらかじめ車載PC111の記憶装置112に格納されているJava(登録商標)プログラムであって、車載PC111上のJava(登録商標)実行環境502と組み合わせて動作させる。この外部アクセス制御手段508の構成要素として、アクセス権限判定手段509とアクセス権限一覧保持手段511と状態検証手段呼出手段1801がある。【０１６３】
アクセス権限判定手段509は、実施例１で示したものと同様であって、アクセス権限管理テーブル509に記載された付与アクセス権限の情報を元に、アプリケーション501がJava(登録商標)提供各種API503や各種車載API507を実行する利用アクセス権限を保持しているかどうかを判定するための機能である。【０１６４】
アクセス権限一覧保持手段511は、実施例１で示したものと同様であって、Java(登録商標)提供アクセス制御コントローラ504がアクセス権限管理テーブル506から読み込んだ付与アクセス権限を保持するための機能、及び、アプリケーション501に与える付与アクセス権限一覧を抽出した時に、その付与アクセス権限一覧を保持する機能である。さらに、外部から利用アクセス権限を受け取り、その利用アクセス権限が内部で保持している付与アクセス権限一覧に含まれるかどうかを認証する機能も持つ。ただし、外部アクセス制御手段508に含まれるアクセス権限判定手段509と状態検証手段呼出手段1801を用いる点が、実施例１とは異なる。【０１６５】
状態検証手段呼出手段1801は、アクセス権限管理テーブル506に記載された有効状態605を元に、状態検証手段管理手段1802から状態検証手段1805の一式を取得する。そして、取得した状態検証手段1805の一式を利用して、アクセス権限判定手段509にて有効と判定された付与アクセス権限に対して、車載PC111や車両システム101に搭載された各種車載機器の状態が、付与アクセス権限に割り当てられた有効状態605にあるかどうかを判定するための手段である。【０１６６】
状態検証手段管理手段1802は、実施例２にて新しく導入した手段で、アクセス権限管理テーブル506に設定された有効状態605が成り立つかどうかを検証するための状態検証手段1805を管理し、外部アクセス制御手段508からの要求に応じて動的に状態検証手段1805を読み込むための機能である。これは、あらかじめ車載PC111の記憶装置112に格納されているJava(登録商標)プログラムであって、車載PC111上のJava(登録商標)実行環境502と、外部アクセス制御手段508と組み合わせて動作させる。この状態検証手段管理手段1802の構成要素として、状態検証手段読込み手段1803と状態検証手段管理テーブル1804がある。【０１６７】
状態検証手段読込み手段1803は、外部アクセス制御手段508からの要求に応じて、状態検証手段1805を１個以上、動的に読み込むための機能を提供する。また、状態検証手段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が存在しないケースもある。【０１７２】
図１９は、状態検証手段管理テーブル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に対して登録する場合の動作に関しては、上記実施例１で示した図８、図９と同様であるため、説明を省略する。【０１７８】
次に、Java(登録商標)実行環境502上で動作するアプリケーション501が、Java(登録商標)提供各種API503や各種車載API507をコールした時に、車の状態に応じてアクセス制御を行う場合の動作のうち、アプリケーション501からJava(登録商標)提供アクセス制御コントローラ504の処理に関しては、上記実施例１で示した図１０、図１１の処理の流れと同様であるので、説明は省略する。【０１７９】
なお、図２０で示した処理フローは、Java(登録商標)提供アクセス制御コントローラ504から呼び出された外部アクセス制御手段508の処理である。この処理フロー以降は、実施例１で示した図１２の処理フローから若干の変更がなされるため、以下で相違点を中心に説明する。【０１８０】
始めに、ステップS2001からステップS2007までの処理は、実施例１の図１２で示したステップS1201からS1207までの処理と同一であるため、説明は省略する。【０１８１】
ステップS2008にて外部アクセス制御手段508の状態検証手段呼出手段1801は、付与アクセス権限に設定された有効状態605を取り出し、状態検証手段管理手段1802の状態検証手段読み込み手段1803に対して状態検証手段1805一式の読み込みを依頼する。この処理の詳細に関しては、図２１を用いて後述する。【０１８２】
ステップS2009にて外部アクセス制御手段508の状態検証手段呼出手段1801は、ステップS2008にて取得した状態検証手段1805一式を用いて、車載PC111や車両システム101の状態が、付与アクセス権限が有効となる状態にあるかどうかの検証を行う。この処理の詳細に関しては、図２２と図２３を用いて後述する。【０１８３】
ステップS2010からステップS2014までの処理に関しては、実施例１で示した図１２のステップS1210からステップS1214までと同様であるため、説明は省略する。【０１８４】
図２１は、付与アクセス権限が有効となる有効状態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を１だけインクリメントする。【０１９６】
ステップS2112にて状態検証手段読込み手段1803は、ループカウンタEと状態検証手段名1902の個数Lを比較する。もし、E＜Lの場合は、読み込みが完了していない状態検証手段1805があるため、ステップS2108の処理に戻る。E≧Lの場合は、全ての状態検証手段1805の読み込みが終了した事になるので、ステップS2113に進み、状態検証手段1805一式を返却して処理を終了する。【０１９７】
以上の流れにて、付与アクセス権限が有効となる有効状態605を元に、車載PC111や車両システム101において付与アクセス権限が有効となる状態にあるかどうかを検証するための状態検証手段1805一式を読み込む事ができる。【０１９８】
次に、図２２と図２３を用いて、状態検証手段1805一式を用いて、車載PC111や車両システム101において付与アクセス権限が有効となる状態にあるかどうかを検証するための処理フローについて説明する。【０１９９】
始めに、ステップS2201にて外部アクセス制御手段508の状態検証手段呼出手段1801は、図２１で示した処理を実行した結果として受け取った状態検証手段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において付与アクセス権限が有効となる状態にあるかどうかを検証する。【０２０４】
ここで、図２２の処理の流れに関して一時説明を中断して、図２３を用いてステップS2205にて行われる処理の詳細に関して説明する。【０２０５】
図２３の処理は、状態検証手段1805において、状態確認メソッドがコールされた時に行われる処理の流れである。【０２０６】
始めに、ステップS2301にて状態検証手段1805は、外部アクセス制御手段508の状態検証手段呼出手段1801からのメソッドコールによって、処理を開始する。【０２０７】
ステップS2302にて状態検証手段1805は、車載PC111や車両システム101の状態情報のうち、付与アクセス権限が有効となる状態にあるかどうかを検証するために必要な状態情報を取得する。この状態情報は、Java(登録商標)実行環境502に実装されたJava(登録商標)提供各種API503や、各種車載API507をコールする事によって取得する。【０２０８】
ステップS2303にて状態検証手段1805は、図２１のステップS2119にて状態検証手段1805に設定されたパラメータと、ステップS2302にて取得した状態情報を元に、車載PC111や車両システム101において付与アクセス権限が有効となる状態にあるかどうかを検証する。【０２０９】
ステップS2304にて状態検証手段1805は、ステップS2303を実行した結果、アクセス権限が有効となる状態にあるかどうかをチェックする。アクセス権限が有効となる状態にある場合、ステップS2305に進み、有効な状態として処理を終了する。アクセス権限が有効とならない状態にある場合、ステップS2306に進み、無効な状態として処理を終了する。【０２１０】
次に、図２２のステップS2205の処理の続きに関して、説明を再開する。【０２１１】
ステップS2206にて外部アクセス制御手段508の状態検証手段呼出手段1801は、ステップS2205にて状態検証手段1805を呼び出した結果をチェックする。処理の結果が有効な状態となった場合は、有効状態605で指定された条件の一つを満たしているため、ステップS2207に進んで別の状態検証手段1805を利用した検証に進む。無効な状態と判断された場合は、ステップS2210に進んで、無効な状態として処理を終了する。【０２１２】
ステップS2207にて外部アクセス制御手段508の状態検証手段呼出手段1801は、ループカウンタFの値を１だけインクリメントする。【０２１３】
ステップ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のソースに追記する事も可能である。機能構成や処理の流れの修正は、実施例１で示した場合と同様のため、ここでは省略する。【０２１６】
また、本実施例では、外部アクセス制御手段登録手段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に限定されるものではなく、例えばホームサーバや携帯電話等、有線や無線を通して様々なデバイスと接続するような機器に適用する事ができる。【０２２０】
また、図２０で示した処理フローのステップS2002では、アクセス権限管理テーブル506に有効状態605が指定されているかどうかにかかわらず、全ての付与アクセス権限を取得して、ステップS2003からステップS2012にて処理を行っていた。これを、始めに有効状態605が設定されてない付与アクセス権限の取得と検証を行い、次に有効状態605が設定されている付与アクセス権限の取得と検証を行うなど、２ステップに分けて行っても構わない。【０２２１】
また、本実施例では、状態検証手段1805に関する情報を、状態検証手段管理テーブル1804に有効状態名1901を関連づけて格納する方式とした。しかし、状態検証手段1805に関する情報を、直接にアクセス権限管理テーブル506の有効状態605に記述しても良い。【０２２２】
また、本実施例では、図２１に示したように、状態検証手段管理テーブル1804の読み込み処理を、初めて状態検証手段管理手段1803が利用される時とした。しかし、この処理は、初めて状態検証手段管理手段1803が利用されるより前であればいつでも良く、例えば、Java(登録商標)実行環境502が起動した時に実施しても良い。【０２２３】
また、本実施例では、状態検証手段呼出手段1801は、状態検証手段読込み手段1803を用いて状態検証手段1805の読み込みを行う様にしたが、あらかじめ状態検証手段1805が分かっているものに関しては、状態検証手段読込み手段1803を用いずに状態検証手段1805を取得しても構わない。【０２２４】
実施例３．
上記実施例では、車載PC111や車両システム101の状態に応じてアクセス制御を行う場合について説明したが、本実施例ではアプリケーションが何回もしくは何秒間隔でアクセス権限を利用しようとしたかに応じてアクセス制御を行う場合について説明する。【０２２５】
本実施例３では、実施例２に加えて、Java(登録商標)提供各種API503や各種車載API507を実行する際にアクセス権限を行使するが、その行使回数や行使間隔に応じてアクセス制御を行う場合について説明する。図２４は、本実施例３におけるJava(登録商標)実行環境502の構成を示した説明図である。【０２２６】
アプリケーション501、Java(登録商標)実行環境502、Java(登録商標)提供各種API503、Java(登録商標)提供アクセス制御コントローラ504、セキュリティプロパティファイル505、アクセス権限管理テーブル506、各種車載API507、外部アクセス制御手段508、アクセス権限判定手段509、アクセス権限一覧保持手段511、外部アクセス制御手段登録手段512、各種車両システムリソース513、状態検証手段呼出手段1801、状態検証手段管理手段1802、状態検証手段読込み手段1803、状態検証手段管理テーブル1804、状態検証手段1805に関しては、実施例１及び実施例２で示したものと同一であるので、説明は省略する。【０２２７】
アクセス権限行使状況管理手段2401は、Java(登録商標)提供各種API503や各種車載API507をコールした時に行使した付与アクセス権限に関して記憶する手段である。内部に、記憶するテーブルとして権限行使状況管理テーブル2402を持つ。【０２２８】
権限行使状況管理テーブル2402は、Java(登録商標)提供各種API503や各種車載API507をコールした時に行使した付与アクセス権限に関して、最後に行使した時刻と、今まで行使した回数等の情報を格納するテーブルである。【０２２９】
次に、図２５を用いて、アクセス権限行使状況管理テーブル2402の構成について説明する。【０２３０】
コードソース2501は、付与アクセス権限を行使したJava(登録商標)プログラムに関する情報を格納するエントリである。実施例１の図９のステップS902にて生成した、実行しているJava(登録商標)プログラムの属性であるコードソースを格納する。【０２３１】
アクセス権限情報2502は、コードソース2501にて表されるJava(登録商標)プログラムが行使した付与アクセス権限に関する情報を格納するエントリである。実施例１の図６のアクセス権限管理テーブル506に格納されている付与アクセス権限情報602を格納する。【０２３２】
最終行使時刻2503は、コードソース2501で表されるJava(登録商標)プログラムが、アクセス権限情報2502で表される付与アクセス権限を、最後に行使した時刻を管理するエントリである。【０２３３】
行使回数は、コードソース2501で表されるJava(登録商標)プログラムが、アクセス権限情報情報2502で表される付与アクセス権限を、今までに何回行使したかを管理するエントリである。【０２３４】
次に、本実施例におけるアクセス制御の流れについて説明する。【０２３５】
始めに、Java(登録商標)実行環境502が起動された時に、本発明のアクセス制御方法が外部アクセス制御手段508をJava(登録商標)実行環境502に対して登録する場合の動作に関しては、実施例１で示した図８、図９と同様であるため、説明を省略する。ただし、図９のステップS907にてアクセス権限一覧保持手段511作成のために、パラメータとして付与アクセス権限一覧に加えてコードソースも与える点が異なる。【０２３６】
次に、Java(登録商標)実行環境502上で動作するアプリケーション501が、Java(登録商標)提供各種API503や各種車載API507をコールした時に、車の状態に応じてアクセス制御を行う場合の動作のうち、アプリケーション501からJava(登録商標)提供アクセス制御コントローラ504までの処理に関しては、実施例１で示した図１０の処理の流れと同様であるので、説明は省略する。【０２３７】
図２６で示した処理フローは、Java(登録商標)提供アクセス制御コントローラ504の処理である。この処理フロー以降は、実施例１で示した図１１の処理フローから若干の変更がなされるため、以下で相違点を中心に説明する。【０２３８】
始めに、図１０のステップS1004の処理が開始されると、図２６のステップS2601が呼び出される。【０２３９】
ステップS2601からステップS2608までの処理は、図１１のステップS1101からS1108までの処理と同様であるため、説明は省略する。ただし、ステップS2605の内部で図２０の処理が呼ばれ、さらに図２０のステップS2009の中で図２２の処理が呼ばれるが、この図２２のステップS2205にて、状態検証手段1805が付与アクセス権限の行使回数や間隔の確認を行うクラスであった場合に、状態検証手段1805にパラメータとして付与アクセス権限とコードソースを与える点が異なる。【０２４０】
ステップS2609にてJava(登録商標)提供アクセス制御コントローラ504は、ステップS2605で処理を行った全てのドメインに関して、アクセス権限行使状況管理手段2401に対して権限行使状況管理テーブル2402の更新を要求する。【０２４１】
ステップS2610にてJava(登録商標)提供アクセス制御コントローラ504は、アクセス権限認証処理の結果、アクセス権限有として処理を終了する。【０２４２】
以上により、Java(登録商標)提供アクセス制御コントローラ504において、アクセス権限認証の処理が完了する。【０２４３】
次に、図２７は、有効状態にあるかどうかの検証を行う状態検証手段1805において、付与アクセス権限の行使回数もしくは行使間隔の検証を行う場合の処理フローである。【０２４４】
始めに、ステップS2701にて状態検証手段1805は、外部アクセス制御手段508の状態検証手段呼出手段1801からの要求により、有効状態の確認処理を開始する。この時、入力としてコードソースと付与アクセス権限を受け取る。【０２４５】
ステップS2702にて状態検証手段1805は、アクセス権限行使状況管理手段2401に対して、付与アクセス権限の最終行使時刻2503もしくは行使回数2504の取得を要求する。【０２４６】
ここで、図２７の処理の流れに関して一時説明を中断して、図２８を用いてステップS2502にて行われる処理の詳細に関して説明する。【０２４７】
図２８の処理は、アクセス権限行使状況管理手段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を出力として処理を終了する。【０２５５】
次に、図２７のステップS2702の処理の続きに関して、説明を再開する。【０２５６】
ステップS2703にて状態検証手段1805は、ステップS2702の結果として、未行使が返ってきたかどうかの検証を行う。もし未行使であった場合はステップS2707に進み、有効な状態として処理を終了する。もし未行使でなかった場合は、ステップS2704に進む。【０２５７】
ステップS2704にて状態検証手段1805は、現在時刻を取得する。なお、付与アクセス権限の行使間隔の検証を行わない状態検証手段1805の場合は、本ステップはスキップして良い。【０２５８】
ステップS2705にて状態検証手段1805は、ステップS2702で取得した付与アクセス権限の最終行使時刻2503と行使回数2504、及び、ステップS2704にて取得した現在時刻、及び、状態検証手段1805の生成時に受け取ったパラメータから、付与アクセス権限が有効となる条件を満たしているかどうかの検証を行う。【０２５９】
ステップS2706にて状態検証手段1805は、ステップS2705の検証の結果、付与アクセス権限が有効となる条件を満たしている場合は、ステップS2706に進み、有効な状態として処理を終了する。付与アクセス権限が有効となる条件を満たしてない場合は、ステップS2707に進み、無効な状態として処理を終了する。【０２６０】
以上の図２７と図２８に示した処理により、付与アクセス権限が有効となる有効状態として、付与アクセス権限の行使回数や行使間隔といった条件が指定された場合に、状態検証手段1805において、有効状態にあるかどうかの確認を行う事が可能となる。【０２６１】
次に、図２９では、ある付与アクセス権限が有効と判定された場合に、その付与アクセス権限を行使する履歴を、権限行使状況管理テーブル2402に格納する際の処理を示す。これは、図２６のステップS2609の処理の詳細である。【０２６２】
始めに、ステップS2901にてアクセス権限行使状況管理手段2401は、図２６のステップ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の要素を１だけインクリメントする。更に、最終行使時刻2503に対して、ステップS2903にて取得した現在時刻を格納し、ステップS2912の処理に進む。【０２７２】
ステップS2911にてアクセス権限行使状況管理手段2401は、ステップS2905にて取得したコードソース、ステップS2901にて受け取った付与アクセス権限のアクセス権限情報、行使回数として１、最終行使時刻としてステップS2903にて取得した現在時刻を設定して、権限行使状況管理テーブル2402に対して行エレメントの追加を行う。そして、ステップS2912の処理に進む。【０２７３】
ステップS2912にてアクセス権限行使状況管理手段2401は、ループカウンタGを１だけインクリメントする。【０２７４】
ステップ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のソースに追記する事も可能である。機能構成や処理の流れの修正は、実施例１で示した場合と同様のため、ここでは省略する。【０２７８】
また、本実施例では、外部アクセス制御手段登録手段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に限定されるものではなく、例えばホームサーバや携帯電話等、有線や無線を通して様々なデバイスと接続するような機器に適用する事ができる。【０２８２】
また、図２０で示した処理フローのステップS2002では、アクセス権限管理テーブル506に有効状態605が指定されているかどうかにかかわらず、全ての付与アクセス権限を取得して、ステップS2003からステップS2012にて処理を行っていた。これを、始めに有効状態605が設定されてない付与アクセス権限の取得と検証を行い、次に有効状態605が設定されている付与アクセス権限の取得と検証を行うなど、２ステップに分けて行っても構わない。【０２８３】
また、本実施例では、状態検証手段1805に関する情報を、状態検証手段管理テーブル1804に有効状態名1901を関連づけて格納する方式とした。しかし、状態検証手段1805に関する情報を、直接にアクセス権限管理テーブル506の有効状態605に記述しても良い。【０２８４】
また、本実施例では、図２１に示したように、状態検証手段管理テーブル1804の読み込み処理を、初めて状態検証手段管理手段1803が利用される時とした。しかし、この処理は、初めて状態検証手段管理手段1803が利用されるより前であればいつでも良く、例えば、Java(登録商標)実行環境502が起動した時に実施しても良い。【０２８５】
また、本実施例では、状態検証手段呼出手段1801は、状態検証手段読込み手段1803を用いて状態検証手段1805の読み込みを行う様にしたが、あらかじめ状態検証手段1805が分かっているものに関しては、状態検証手段読込み手段1803を用いずに状態検証手段1805を取得しても構わない。【０２８６】
また、本実施例では、図９のステップS907にてアクセス権限一覧保持手段511作成のために、パラメータとして付与アクセス権限一覧に加えてコードソースを与えるようにした。しかし、ここで設定したコードソースは、実際には図２７で示した利用アクセス権限の行使回数もしくは行使間隔の検証を行う状態検証手段が利用するため、この状態検証手段にコードソースが送付されるようであれば、他にどの様なタイミングで通知されても良い。【０２８７】
また、本実施例では、図２５に示したように、付与アクセス権限のアクセス権限情報のみを保存しておき、再度同一のアクセス権限情報を持つ付与アクセス権限が利用されようとした時に、その最終行使時刻2503と行使回数2504を見て付与アクセス権限が有効となる状態かどうかの確認を行っていた。しかし、権限行使状況管理テーブル2402に保存する情報は、付与アクセス権限のアクセス権限情報だけではなく、そのリソース指定情報や操作内容情報も含めて保存して、それらの情報も用いて付与アクセス権限が有効となるかどうかを判定しても良い。【０２８８】
また、本実施例では、図２９で示したように、権限行使状況管理テーブル2402に記録する付与アクセス権限が一個の言う場合について、その処理の流れを示した。しかし、利用する利用アクセス権限に対して、行使履歴を残す必要がある付与アクセス権限は、同一ドメイン内においても複数存在する場合も考えられる。この場合、図２９に示した処理を、行使履歴を残す必要がある全ての付与アクセス権限について繰り返し実行する必要がある。
【産業上の利用可能性】
【０２８９】
この発明は、アクセス制御を行うコンピュータに適用することが可能である。
【図１】
0004755181.tif 000002
【図２】
0004755181.tif 000003
【図３】
0004755181.tif 000004
【図４】
0004755181.tif 000005
【図５】
0004755181.tif 000006
【図６】
0004755181.tif 000007
【図７】
0004755181.tif 000008
【図８】
0004755181.tif 000009
【図９】
0004755181.tif 000010
【図１０】
0004755181.tif 000011
【図１１】
0004755181.tif 000012
【図１２】
0004755181.tif 000013
【図１３】
0004755181.tif 000014
【図１４】
0004755181.tif 000015
【図１５】
0004755181.tif 000016
【図１６】
0004755181.tif 000017
【図１７】
0004755181.tif 000018
【図１８】
0004755181.tif 000019
【図１９】
0004755181.tif 000020
【図２０】
0004755181.tif 000021
【図２１】
0004755181.tif 000022
【図２２】
0004755181.tif 000023
【図２３】
0004755181.tif 000024
【図２４】
0004755181.tif 000025
【図２５】
0004755181.tif 000026
【図２６】
0004755181.tif 000027
【図２７】
0004755181.tif 000028
【図２８】
0004755181.tif 000029
【図２９】
0004755181.tif 000030