(57)【要約】      （修正有）【課題】中核地点（例えば本社）に設けられた計算機システムでなく、拠点（例えば工場又は支社）に設けられた計算機システムにおいて分析プログラムを実行しても、分析に関するデータの漏洩を防ぐことができるようにする。【解決手段】分析元データを管理する計算機システムが、分析プログラムを受信し実行する。計算機システムは、分析プログラムの挙動から１種類以上の乖離を計算する。計算機システムは、算出された前記１種類以上の乖離を基に、分析プログラムによる分析の結果として出力されたデータである出力データをこの計算機システム外に出力するか否かを制御する。【選択図】図３
2018147444.tif 000002
【特許請求の範囲】
【請求項１】
分析元データを管理する計算機システムであって、
分析プログラムを受信する１以上のインターフェースであるインターフェース部と、
前記インターフェース部に接続された１以上のプロセッサであり前記分析プログラムを実行するプロセッサ部と
を有し、
前記プロセッサ部が、
（Ａ）前記分析プログラムの挙動から１種類以上の乖離を計算し、
（Ｂ）算出された前記１種類以上の乖離を基に、前記分析プログラムによる分析の結果として出力されたデータである出力データを前記計算機システム外に出力するか否かを制御する、
計算機システム。
【請求項２】
前記１種類以上の乖離は、入力指標と出力指標との乖離である指標乖離を含み、
前記入力指標は、前記分析プログラムに分析のために入力される入力データに関する指標であり、
前記出力指標は、前記出力データに関する指標であり、
（Ｂ）において、前記プロセッサ部が、
（ｂ１）前記指標乖離が閾値以上か否かを判断し、
（ｂ２）（ｂ１）の判断結果が真の場合、前記出力データを前記計算機システム外に出力する、
請求項１記載の計算機システム。
【請求項３】
前記指標乖離は、データ量乖離であり、
前記データ量乖離は、前記入力データの量と前記出力データの量との乖離であり、
（ｂ１）において、前記プロセッサ部が、
（ｂ１−１）前記データ量乖離が第１閾値以上か否かを判断する、
請求項２記載の計算機システム。
【請求項４】
前記指標乖離は、前記データ量乖離の他に、前記入力データのエントロピと前記出力データのエントロピとの乖離であるエントロピ乖離であり、
（ｂ１）において、前記プロセッサ部が、
（ｂ１−２）（ｂ１−１）の判断結果が真の場合、更に、前記エントロピ乖離が第２閾値以上か否かを判断し、
（ｂ１−２）の判断結果も真の場合、（ｂ２）において、前記プロセッサ部が、前記出力データを前記計算機システム外に出力する、
請求項３記載の計算機システム。
【請求項５】
前記受信した分析プログラムには、データ需要情報が関連付けられており、
前記データ需要情報は、前記分析プログラムの挙動と、前記第１閾値及び前記第２閾値のうちの少なくとも１つとを示す情報を含み、
前記１種類以上の乖離は、前記分析プログラムの実際の挙動と前記データ需要情報が示す挙動との乖離である挙動乖離を含み、
（Ｂ）において、前記プロセッサ部が、
（ｂ３）前記挙動乖離が第３閾値未満か否かを判断し、
更に（ｂ３）の判断結果も真の場合、（ｂ２）において、前記プロセッサ部が、前記出力データを前記計算機システム外に出力する、
請求項４記載の計算機システム。
【請求項６】
前記プロセッサ部が、
１以上の分析プログラムにそれぞれ対応した１以上のポリシのうち、前記受信した分析プログラムに対応するポリシを特定し、
前記１以上のポリシの各々は、そのポリシに対応する分析プログラムの挙動に関するポリシを含み、
前記データ需要情報が前記特定されたポリシに適合するか否かを判断し、
その判断結果が真の場合、（Ａ）及び（Ｂ）を実行する、
請求項５記載の計算機システム。
【請求項７】
前記特定されたポリシが示す挙動は、前記分析プログラムの過去の挙動である、
請求項６記載の計算機システム。
【請求項８】
前記指標乖離は、前記入力データのエントロピと前記出力データのエントロピとの乖離であるエントロピ乖離であり、
（ｂ１）において、前記プロセッサ部が、前記エントロピ乖離が閾値以上か否かを判断する、
請求項２記載の計算機システム。
【請求項９】
前記受信した分析プログラムには、データ需要情報が関連付けられており、
前記データ需要情報は、前記分析プログラムの挙動を示す情報を含み、
前記１種類以上の乖離は、前記分析プログラムの実際の挙動と前記データ需要情報が示す挙動との乖離である挙動乖離を含み、
（Ｂ）において、前記プロセッサ部が、更に、前記挙動乖離が閾値未満か否かを判断し、
その判断結果も真の場合、前記プロセッサ部が、前記出力データを前記計算機システム外に出力する、
請求項１記載の計算機システム。
【請求項１０】
分析プログラムの実行を監視する方法であって、
分析元データを管理する計算機システムが、分析プログラムを受信し、
前記分析プログラムを実行し、
前記分析プログラムの挙動から１種類以上の乖離を計算し、
算出された前記１種類以上の乖離を基に、分析プログラムによる分析の結果として出力されたデータである出力データをこの計算機システム外に出力するか否かを制御する、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、分析に関わるデータの保護に関する。
【背景技術】
【０００２】
分析に関わるデータ（例えば、分析元データ及び分析結果データの少なくともいずれか）は適切に保護されることが望ましい。データの保護に関する技術として、例えば、特許文献１に開示の技術が知られている。特許文献１に開示のシステムは、秘匿対象のデータを保護しながら、開示可能なデータを開示して解析を可能としつつ、その結果得られた情報を、アクセスレベルが異なる者や組織等に通知する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2014-095931号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
複数のエッジシステムと、複数のエッジシステムと通信可能なコアシステムとが知られている。各エッジシステムは、拠点（例えば工場又は支社）に設けられた計算機システムである。コアシステムは、中核地点（例えば本社）に設けられた計算機システムである。
【０００５】
複数のエッジシステムの各々において、分析元データが蓄積されている。コアシステムが、複数のエッジシステムの各々から分析元データを収集し、分析プログラムを実行することで、収集された分析元データを用いた分析を実行することができる。
【０００６】
しかし、少なくとも１つのエッジシステムにおいて、分析元データは、しばしば大量である（例えば、多数のセンサの各々から収集された時系列データ）。このため、分析元データをエッジシステムからコアシステムに転送することは効率が悪い。
【０００７】
そこで、各エッジシステムが、分析システムとなること、具体的には、コアシステム提供の分析プログラムを実行することで、そのエッジシステムが管理する分析元データを用いた分析を実行し、分析結果データをコアシステムに送信することが考えられる。
【０００８】
しかし、実行される分析プラグラムが常に信頼できるプログラムであるとは限らない。例えば、他社のシステムから提供された分析プログラムを使用することも考えられるが、そのような分析プログラムが必ずしも信頼できるプログラムとは限らない。また、受信（導入）されたときには分析プログラムは信頼できるプログラムであっても、その後に信頼できないプログラムになること（例えばマルウェアに感染すること）が考えられる。
【０００９】
信頼できない分析プログラムが実行されると、分析に関するデータが漏洩するおそれがある。具体的には、例えば、分析元データの少なくとも一部の漏洩、分析結果データの少なくとも一部の漏洩、及び、分析結果データが不適切である（分析結果が間違っている）のうちの少なくとも１つが生じ得る。
【課題を解決するための手段】
【００１０】
分析元データを管理する計算機システムが、分析プログラムを受信し実行する。計算機システムは、分析プログラムの挙動から１種類以上の乖離を計算する。計算機システムは、算出された前記１種類以上の乖離を基に、分析プログラムによる分析の結果として出力されたデータである出力データをこの計算機システム外に出力するか否かを制御する。
【発明の効果】
【００１１】
分析に関するデータの漏洩を防ぐことができる。
【図面の簡単な説明】
【００１２】
【図１】実施形態に係るシステム全体の構成を示す。
【図２】エッジシステムの物理構成を示す。
【図３】エッジシステム及びコアシステムの各々の論理構成を示す。
【図４】エッジシステムの論理構成の詳細を示す。
【図５】データ需要情報の具体例を示す。
【図６】エッジシステムが行う処理の流れを示す。
【発明を実施するための形態】
【００１３】
以下の説明では、「インターフェース部」は、１以上のインターフェースを含む。１以上のインターフェースは、１以上の同種のインターフェースデバイス（例えば１以上のＮＩＣ（Network Interface Card））であってもよいし２以上の異種のインターフェースデバイス（例えばＮＩＣとＨＢＡ（Host Bus Adapter））であってもよい。
【００１４】
また、以下の説明では、「記憶部」は、１以上のメモリを含む。記憶部に関して少なくとも１つのメモリは、揮発性メモリでよい。記憶部は、主に、プロセッサ部による処理の際に使用される。記憶部は、更に、１以上の不揮発性記憶デバイス（例えばＨＤＤ（Hard Disk Drive）又はＳＳＤ（Solid State Drive））を含んでもよい。
【００１５】
また、以下の説明では、「プロセッサ部」は、１以上のプロセッサを含む。少なくとも１つのプロセッサは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセッサである。１以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
【００１６】
また、以下の説明では、「ｋｋｋ部」の表現にて機能を説明することがあるが、機能は、１以上のコンピュータプログラムがプロセッサ部によって実行されることで実現されてもよいし、１以上のハードウェア回路（例えばＦＰＧＡ（Field-Programmable Gate Array）又はＡＳＩＣ（Application Specific Integrated Circuit））によって実現されてもよい。機能がプロセッサ部によって実現される場合、定められた処理が、適宜に記憶部（例えばメモリ）及び／又はインターフェース部（例えば通信ポート）等を用いながら行われるため、機能はプロセッサ部の少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサ部又はそのプロセッサ部を有する装置が行う処理としてもよい。また、プロセッサ部は、処理の一部又は全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースからプロセッサにインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機又は計算機が読み取り可能な記録媒体（例えば非一時的な記録媒体）であってもよい。各機能の説明は一例であり、複数の機能が１つの機能にまとめられたり、１つの機能が複数の機能に分割されたりしてもよい。
【００１７】
また、以下の説明では、「計算機システム」は、１以上の計算機でよい。少なくとも１つの計算機は、汎用計算機でよい。例えば、少なくとも１つの物理的な計算機が、仮想的な計算機（例えばＶＭ（Virtual Machine））を実行してもよいし、ＳＤｘ（Software-Defined anything）を実行してもよい。ＳＤｘとしては、例えば、ＳＤＳ（Software Defined Storage）（仮想的なストレージ装置の一例）又はＳＤＤＣ（Software-defined Datacenter）を採用することができる。
【００１８】
図１は、実施形態に係るシステム全体の構成を示す。
【００１９】
通信ネットワーク（例えばインターネット）１０００に、エッジシステム１００、コアシステム７００Ｃ及び代行システム２０００が接続される。システム１００、７００及び２０００の各々は、計算機システムである。システム１００、７００及び２０００のいずれも１又は複数存在する。説明を簡単にするために、本実施形態の説明では、システム１００、７００及び２０００のいずれも１つであるとする。
【００２０】
エッジシステム１００は、分析システムの一例、すなわち、分析プログラムを実行する計算機システムの一例である。エッジシステム１００は、拠点に存在する計算機システムでよい。本実施形態では、エッジシステム１００は、分析プログラムを、コアシステム７００から通信ネットワーク１０００を通じて受信して実行したり、分析結果データをコアシステム７００に通信ネットワーク１０００を通じて送信したりする。なお、分析プログラムの提供元は、コアシステム７００に代えて又は加えて、代行システム２０００のような、システム１００及び７００以外の計算機システムでもよい。
【００２１】
コアシステム７００は、通信ネットワーク１０００を通じてエッジシステム１００に分析プログラムを提供したり、通信ネットワーク１０００を通じてエッジシステム１００から分析結果データを受信して格納したりする。
【００２２】
代行システム２０００は、分析プログラムの提供及び実行のうちの少なくとも１つを代行する計算機システムである。具体的には、例えば、代行システム２０００は、複数の分析プログラムのうちの選択された分析プログラムをエッジシステム１００に提供してもよい。また、代行システム２０００は、エッジシステム１００に代わって分析プログラムを受信及び実行し、分析結果データをコアシステム７００に送信してもよい。代行システム２０００は、オプションである（つまり必ずしも無くてもよい）。以下、代行システム２０００の説明は省略する。
【００２３】
図２は、エッジシステム１００の物理構成を示す。
【００２４】
エッジシステム１００は、ネットワークインターフェース６０、Ｉ／Ｏ（Input/Output）デバイス５０、ストレージ装置４０、中継デバイス３０、メモリ２０及びマイクロプロセッサ１０を有する。
【００２５】
ネットワークインターフェース６０は、インターフェース部の一例であり、通信ネットワーク１０００に接続される。Ｉ／Ｏデバイス５０は、入力デバイス（例えば、キーボード及びポインティングデバイス）及び出力デバイス（例えば表示デバイス）である。ストレージ装置４０は、分析元データを格納する。ストレージ装置４０は、エッジシステム１００と通信可能にエッジシステム１００外に存在してもよい。中継デバイス３０は、ネットワークインターフェース６０、Ｉ／Ｏデバイス５０、ストレージ装置４０及びプロセッサ１０の各々の通信を中継する。プロセッサ１０は、メモリ２０に格納されているプログラムを実行することにより、ストレージ装置４０からメモリ２０にデータを読み出したり、メモリ２０内のデータを参照または更新したりする。メモリ２０は、例えば、ＤＲＡＭ（Dynamic Random Access Memory）のような揮発性半導体メモリであるが、フラッシュメモリのような不揮発性半導体メモリでもよい。メモリ２０及びストレージ装置４０のうちの少なくともメモリ２０が、記憶部の一例である。プロセッサ１０が、プロセッサ部の一例である。
【００２６】
なお、エッジシステム１００の物理構成を詳細に説明したが、コアシステム７００も同様の物理構成を有してよい。
【００２７】
図３は、エッジシステム１００及びコアシステム７００の各々の論理構成を示す。
【００２８】
コアシステム７００は、分析プログラム記憶資源８１０と、分析プログラム管理部８００と、分析結果記憶資源８３０とを有する。記憶資源８１０及び８３０の各々は、コアシステム７００が有する記憶部が提供する記憶空間の少なくとも一部でもよいし、コアシステム７００外に存在するストレージ装置が提供する記憶空間の少なくとも一部でもよい。
【００２９】
分析プログラム記憶資源８１０は、１以上の分析プログラムを記憶している。分析プログラム管理部８００は、分析プログラム記憶資源８１０から提供対象の分析プログラムを取得し、取得した分析プログラムをエッジシステム１００に提供する。また、分析プログラム管理部８００は、提供した分析プログラムの実行結果としての分析結果データを受信し、受信した分析結果データを分析結果記憶資源８３０に格納する。
【００３０】
エッジシステム１００は、分析元記憶資源６００と、認証ポリシ記憶資源５００と、分析プログラム認証部３００と、分析プログラム実行部２００と、データ管理部４００とを有する。記憶資源６００及び５００の各々は、エッジシステム１００が有する記憶部（メモリ２０及びストレージ装置４０のうちの少なくともメモリ２０）が提供する記憶空間の少なくとも一部でもよいし、エッジシステム１００外に存在するストレージ装置が提供する記憶空間の少なくとも一部でもよい。
【００３１】
分析元記憶資源６００は、分析元データを記憶する。認証ポリシ記憶資源５００は、認証ポリシを示すデータである認証ポリシデータ（例えばデータベース）を記憶する。
【００３２】
分析プログラム認証部３００は、コアシステム７００から分析プログラムを受信し、受信した分析プログラムが正しいか否かを、認証ポリシデータを基に判断する。判断結果が真の場合、分析プログラム認証部３００は、受信した分析プログラムを分析プログラム実行部２００に提供する。
【００３３】
分析プログラム実行部２００は、分析プログラム認証部３００をパスした分析プログラムを実行する。分析プログラムの実行結果としての影響は、分析プログラム実行部２００に閉じる。具体的には、例えば、分析プログラム実行部２００はサンドボックスである。
【００３４】
データ管理部４００は、分析プログラム実行部２００を監視し、監視結果に応じた制御を実行する。データ管理部４００は、入力管理部４１０及び出力管理部４６０を含む。入力管理部４１０は、分析プログラムが使用するデータである入力データ（分析元データの少なくとも一部）を分析元記憶資源６００から取得し分析プログラム実行部２００に入力する。出力管理部４６０は、分析プログラムの実行結果としての分析結果データを分析プログラム実行部２００から受けてコアシステムに送信する。入力管理部４１０及び出力管理部４６０のうちの少なくとも１つが、必要に応じて、認証ポリシデータに応じた制御を実行する。
【００３５】
図４は、エッジシステム１００の論理構成の詳細を示す。
【００３６】
分析プログラム実行部２００は、分析プログラム認証部３００をパスした（つまり認証部３００により認証された）分析プログラム２３０を実行する。分析プログラム２３０には、データ需要情報２４０が紐付いている。データ需要情報２４０は、その情報２４０が紐付いている分析プログラム２３０の挙動を示す情報（別の言い方をすれば、分析プログラム２３０の自己申告の内容）を含んだ情報である。図５が、データ需要情報２４０の具体例を示す。すなわち、データ需要情報２４０は、例えば、入力定義２４０１、処理定義２４０２及び出力定義２４０３を含む。入力定義２４０１は、分析プログラム２３０が分析において参照する入力データに関する定義（例えば、データベース毎のデータベース名、データ数及びデータ型）を示す情報である。処理定義２４０２は、入力データを用いた処理（分析）に関する定義（例えば、データ処理単位、ＡＰＩ（Application Programming Interface）コールシーケンス（ＡＰＩの呼び出し順序））を示す情報である。出力定義４０３は、分析の結果として出力される出力データに関する定義（例えば、データ数、データ型、入出力エントロピ差分（入力データのエントロピと出力データのエントロピとの差分））を示す情報である。
【００３７】
入力管理部４１０は、需要認証部４２０、データ入力制御部４３０、入力指標計算部４４０及び入力バッファ４５０を有する。
【００３８】
分析プログラム２３０へ入力される入力データの管理は、例えば、下記の通りである。
【００３９】
需要認証部４２０は、認証ポリシ記憶資源５００から、分析プログラム２３０に関する認証ポリシを取得する。認証ポリシ記憶資源５００内の認証ポリシデータは、分析プログラム毎の認証ポリシを示す。認証ポリシは、例えば、動的ＡＰＩ呼び出しシーケンス、及び、分析元記憶資源６００から分析のために読み出すデータのデータ量及び範囲（例えばアドレス範囲）を示す。需要認証部４２０は、取得した認証ポリシと、分析プログラム２３０に紐付いたデータ需要情報２４０とに基づき、分析元記憶資源６００内の分析元データへのアクセス可否を決定する。アクセス可が決定された場合、需要認証部４２０は、分析プログラム２３０に紐付いたデータ需要情報２４０に基づき、分析元記憶資源６００内の分析元データのうちのリード対象データ（例えばリード元アドレス範囲）も決定する。アクセス可が決定された場合、需要認証部４２０は、リード対象データにアクセスすることのリード指示（例えば、リード元アドレス範囲を関連付けたリード指示）を、データ入力制御部４３０に送信する。
【００４０】
データ入力制御部４３０は、需要認証部４２０からのリード指示に応答して、分析元記憶資源６００からデータを読み出す。データ入力制御部４３０は、読み出したデータを、入力バッファ４５０に格納する。
【００４１】
入力指標計算部４４０は、入力指標を計算し、算出した入力指標を、需要認証部４２０に通知する。「入力データ」は、分析元記憶資源６００から分析のために読み出された全データである。例えば、データの読出しが、所定のデータ単位で行われた場合（別の言い方をすれば、複数回行われた場合）、読み出された個々のデータは、入力データ要素であり、読み出された全データ（入力データ要素の集合）が、入力データである。「入力指標」は、入力データに関する指標である。入力指標は、例えば、入力データ量（入力データのデータ量）、及び、入力データエントロピである。入力指標計算部４４０は、例えば、入力バッファ４５０に入力データ要素が格納される都度に、入力指標を更新し、全ての入力データ要素が読み出された場合に、入力データについての入力指標を算出（確定）し、その入力指標を需要認証部４２０に通知してよい。
【００４２】
入力バッファ４５０に一定量又は一定範囲のデータが格納される都度に、分析プログラム実行部２００が実行する分析プログラム２３０により、入力バッファ４５０から分析プログラム２３０にデータが入力され、分析が行われる。需要認証部４２０は、その分析プログラム２３０の挙動を監視し、監視された挙動を表す情報を、その分析プログラム２３０の認証ポリシの一部として、認証ポリシ記憶資源５００に蓄積する。つまり、分析プログラム２３０についての認証ポリシが更新される。更新後の認証ポリシを基に、将来再び同一の分析プログラム２３０が分析プログラム実行部２００により実行される場合、その分析プログラム２３０についての認証処理速度の向上、及び、その分析プログラム２３０の挙動が正常な挙動（分析動作）から逸脱してもその逸脱事象を検出することが期待できる。
【００４３】
分析プログラム２３０から出力される出力データの管理は、例えば、下記の通りである。
【００４４】
需要認証部４２０は、挙動乖離の大きさと指標乖離の大きさとのうちの少なくとも１つに基づき、データ出力の可否を決定し、決定したデータ出力可否を、データ出力制御部４７０に通知する。
【００４５】
「挙動乖離」とは、分析プログラム２３０について監視された挙動と、分析プログラム２３０に対応した認証ポリシが示す正常な挙動との乖離である。もし、分析プログラム認証部３００をパスした分析プログラム２３０（つまり、認証されたプログラム２３０）が、実行の際にマルウェアに感染していた場合、挙動乖離が大きくなると考えられる。このような場合、データ出力が拒否（禁止）されることで、不正なデータ漏洩を防ぐことができる。
【００４６】
「指標乖離」とは、入力指標と出力指標との乖離、具体的には、入力データ量と出力データ量との乖離であるデータ量乖離、及び、入力データエントロピと出力データエントロピとの乖離であるエントロピ乖離である。分析の特性として、入力データ量よりも出力データ量が小さくなる傾向がある。このため、データ量乖離が所定量より小さいと、分析プログラム２３０が信頼できないプログラムである可能性が高い。一方、出力データが圧縮されると出力データ量は小さくなるので、見かけ上、データ量乖離を大きくすることができる。そこで、エントロピ乖離の大きさに基づくチェックは有効である。例えば、下記が採用されてよい。
（ｂ１−１）需要認証部４２０は、データ量乖離が第１閾値以上か否かを判断する。
（ｂ１−２）（ｂ１−１）の判断結果が真の場合、更に、需要認証部４２０は、エントロピ乖離が第２閾値以上か否かを判断する。
（ｂ２）（ｂ１−２）の判断結果も真の場合、需要認証部４２０は、データ出力制御部４７０に対して、データ出力許可を通知する。その通知を受けたデータ出力制御部４７０が、出力バッファ４９０内の出力データをコアシステム７００に送信する。
【００４７】
挙動乖離及び指標乖離の少なくとも１つの大きさと比較される閾値は、所定のユーザインタフェース（例えばＧＵＩ（Graphical User Interface））を介してユーザにより認証ポリシの一部として設定されてよい。
【００４８】
また、本実施形態では、既知の分析プログラムを監視し監視結果に応じてデータ出力の可否を制御する第１モードに加えて、未知の分析プログラムをテスト監視し監視結果に関わらずデータ出力を拒否（禁止）する第２モードが定義される。第１及び第２モードの各々については、図６を参照して後に説明する。
【００４９】
データ出力制御部４７０は、需要認証部４２０からの通知（データ出力可否の通知）に従い、出力バッファ４９０からのデータ出力を制御する。
【００５０】
出力指標計算部４８０は、出力指標を計算し、算出した出力指標を、需要認証部４２０に通知する。「出力データ」は、入力データを用いて行われた分析の結果としてのデータである。例えば、データ出力が、入力データの部分毎に行われた場合、出力されたデータは出力データ要素であり、出力された全データが集約されたデータが、出力データである。出力データは、分析プログラム２３０により出力バッファ４９０に格納される。「出力指標」は、出力データに関する指標である。出力指標は、例えば、出力データ量（出力データのデータ量）、及び、出力データエントロピである。
【００５１】
図６は、エッジシステム１００が行う処理の流れを示す。
【００５２】
分析プログラム認証部３００が、分析要求を受けた場合（Ｓ１０１０：Ｙ）、その分析要求で指定されている分析プログラム（以下、対象分析プログラム）が正しいか否かを判断する（Ｓ１０２０）。この判断は、例えば、分析プログラムのメタデータ（例えば、分析プログラムの提供元又は作成者）を基に行われてよい。Ｓ１０２０の判断結果が偽の場合（Ｓ１０２０：Ｎ）、分析プログラム認証部３００が、認証失敗通知を、分析要求の要求元（コアシステム７００）に送信する（Ｓ１１１０）。
【００５３】
Ｓ１０２０の判断結果が真の場合（Ｓ１０２０：Ｙ）、分析プログラム認証部３００が、分析プログラム実行部２００に、対象分析プログラムの実行を命じる。なお、対象分析プログラムが、過去に受信し実行されたことのある分析プログラムである場合、上述の分析要求には、分析プログラムを特定可能な情報（例えばプログラムＩＤ）が指定されていてよいし、或いは、対象分析プログラム（及びそれのデータ需要情報）が関連付けられていてよい（後者の場合、分析の終了の都度にデータ管理部４００によって分析プログラムがエッジシステム１００から削除されてもよい）。一方、対象分析プログラムが、初めて受信し実行することになる分析プログラムである場合、上述の分析要求には、対象分析プログラム（及びそれのデータ需要情報）が関連付けられていてよい。
【００５４】
分析プログラム実行部２００に対象分析プログラムの実行が命じられると、分析プログラム実行部２００が対象分析プログラムの実行命令を受けたことが、分析プログラム実行部２００を監視しているデータ管理部４００によって検出される。分析プログラム実行部２００は閉じた環境（例えばサンドボックス）であるため、仮に対象分析プログラムが信頼できないプログラムであったとしても、その実行結果の影響範囲は、分析プログラム実行部２００内に閉じることになる。
【００５５】
データ管理部４００が、対象分析プログラムが未知の分析プログラムか否かを判断する（Ｓ１０４０）。例えば、認証ポリシ記憶資源５００に、対象分析プログラムを過去に実行した履歴（挙動）が認証ポリシの一部として登録されていなければ、対象分析プログラムは未知の分析プログラムであると判断される。
【００５６】
Ｓ１０４０の判断結果が真の場合（Ｓ１０４０：Ｙ）、データ管理部４００は、第２モード（Ｓ１０５０〜Ｓ１０８０）に入る。
【００５７】
まず、データ管理部４００は、対象分析プログラムの実行のためのテストデータの少なくとも一部を入力バッファ４５０に準備し、且つ、データ出力抑止を設定する（Ｓ１０５０）。テストデータは、データ需要情報の入力定義から特定されるデータ量と同じデータ量のダミーデータでもよいし、分析元データからデータ需要情報の入力定義に従い読み出されたデータでもよい。データ出力抑止の設定により、分析の結果として出力され出力バッファ４９０に格納されたデータがデータ管理部４００外（エッジシステム１００外）に出力されることがデータ管理部４００により抑止される。
【００５８】
次に、データ管理部４００は、分析プログラム実行部２００に対象分析プログラムの実行を許可する（Ｓ１０６０）。これにより、分析プログラム実行部２００が対象分析プログラムを実行する。
【００５９】
次に、データ管理部４００は、Ｓ１０７０を実行する。例えば、データ管理部４００は、認証ポリシ記憶資源５００から、対象分析プログラムに関する認証ポリシを取得する。入力バッファ４５０に格納されたデータが分析プログラム２３０に入力され分析が行われ、分析結果としてのデータが出力バッファ４９０に格納される。データ管理部４００は、対象分析プログラムの挙動を監視する。
【００６０】
最後に、データ管理部４００は、対象分析プログラムの認証ポリシを更新する（Ｓ１０８０）。例えば、認証ポリシに、対象分析プログラムの特定された挙動（例えば、テストデータのうち入力されたデータのアドレス範囲）を表す情報、算出された入力指標を表す情報、及び、算出された出力指標を表す情報が追加される。なお、データ管理部４００は、データ需要情報が、対象分析プログラムの開発側と分析データの提供側との間で事前に合意されたデータ需要情報であれば、対象分析プログラムを実行する前に、データ需要情報を、対象分析プログラムの認証ポリシの一部として認証ポリシデータに登録しておいてよい。その認証ポリシ内のデータ需要情報が表す挙動が、第１モードにおいて、実行される分析プログラムのデータ需要情報（又は分析プログラムの実際の挙動）と照合されてもよい。
【００６１】
Ｓ１０８０の後（第２モードから抜けた後）、データ管理部４００は、対象分析プログラムに紐付いたデータ需要情報（対象分析プログラムの挙動を示す情報を含む）と、対象分析プログラムについて取得された認証ポリシとを照合することで、対象分析プログラムが信頼できるプログラムか否かを判断する（Ｓ１１００）。例えば、以下のＳ１１００−１〜Ｓ１１００−３のうちの少なくとも１つが行われる。Ｓ１１００−１〜Ｓ１１００−３のうち実行された全てのステップについて判断結果が真の場合、Ｓ１１００の判断結果が真となる。実行されたステップのうちの少なくとも１つのステップについて判断結果が偽の場合、Ｓ１１００の判断結果が偽となる。
（Ｓ１１００−１）データ管理部４００は、監視された挙動が、対象分析プログラムに紐付いているデータ需要情報通りであるか否かを判断する。
（Ｓ１１００−２）データ管理部４００は、対象分析プログラムに紐付いているデータ需要情報が、対象分析プログラムに対応した認証ポリシに適合するか否かを判断する。データ需要情報が不正に書き換えられている可能性があり、故に、そのような危険性の無い認証ポリシにデータ需要情報が適合するか否かを判断することは有意である。
（Ｓ１１００−３）データ管理部４００は、対象分析プログラムに紐付いているデータ需要情報が予め指定された情報（例えば、高リスクの懸念が無い情報）であるか否かを判断する。
【００６２】
Ｓ１１００の判断結果が偽の場合（Ｓ１１００：Ｎ）、データ管理部４００が分析プログラム認証部３００にＳ１１１０を実行させる。これにより、分析プログラム認証部３００が、認証失敗通知を、分析要求の要求元（コアシステム７００）に送信する（Ｓ１１１０）。
【００６３】
Ｓ１０４０の判断結果が偽の場合（Ｓ１０４０：Ｎ）、データ管理部４００は、第２モード（Ｓ１０５０〜Ｓ１０８０）に入ること無しに、Ｓ１１００を実行する。但し、対象分析プログラムは実行されていないので、Ｓ１１００では、例えば、上記のＳ１１００−２及びＳ１１００−３のうちの少なくとも１つが実行される。Ｓ１１００−２及びＳ１１００−３のうち実行された全てのステップについて判断結果が真の場合、Ｓ１１００の判断結果が真となる。実行されたステップのうちの少なくとも１つのステップについて判断結果が偽の場合、Ｓ１１００の判断結果が偽となる。
【００６４】
Ｓ１１００の判断結果が真の場合（Ｓ１１００：Ｙ）、データ管理部４００は、第１モード（Ｓ１１３０〜Ｓ１１６０）に入る。
【００６５】
まず、データ管理部４００は、対象分析プログラムの実行のための入力データの少なくとも一部を入力バッファ４５０に読み出し、且つ、データ出力有効を設定する（Ｓ１１３０）。入力データは、分析元データからデータ需要情報の入力定義に従い読み出されたデータである。データ出力有効の設定により、分析の結果として出力され出力バッファ４９０に格納されたデータがデータ管理部４００外（エッジシステム１００外）にデータ管理部４００により出力され得る。
【００６６】
次に、データ管理部４００は、分析プログラム実行部２００に対象分析プログラムの実行を許可する（Ｓ１１４０）。これにより、分析プログラム実行部２００が対象分析プログラムを実行する。
【００６７】
次に、データ管理部４００は、Ｓ１１５０を実行する。例えば、データ管理部４００は、認証ポリシ記憶資源５００から、対象分析プログラムに関する認証ポリシを取得する。また、データ管理部４００は、取得した認証ポリシと、対象分析プログラムに紐付いたデータ需要情報とのうちの少なくとも１つに基づき、入力データのアクセス可否を決定する。アクセス可の場合、入力バッファ４５０に格納されたデータが分析プログラム２３０に入力され分析が行われ、分析結果としてのデータが出力バッファ４９０に格納される。データ管理部４００は、対象分析プログラムの挙動を監視する。データ管理部４００は、入力指標（例えば入力データ量及び入力データエントロピ）及び出力指標（例えば出力データ量及び出力データエントロピ）を計算する。データ管理部４００は、指標乖離及び挙動乖離を計算する。
【００６８】
最後に、データ管理部４００は、対象分析プログラムの認証ポリシを更新する（Ｓ１１６０）。例えば、認証ポリシに、対象分析プログラムの特定された挙動（例えば、テストデータのうち入力されたデータのアドレス範囲）を表す情報、算出された入力指標を表す情報、及び、算出された出力指標を表す情報が追加される。
【００６９】
Ｓ１１６０の後（第１モードから抜けた後）、データ管理部４００は、対象分析プログラムが信頼できるプログラムか否か、具体的には、出力バッファ４９０内のデータの出力を許可するか否かを判断する（Ｓ１１８０）。例えば、以下のＳ１１８０−１〜Ｓ１１８０−３のうちの少なくとも１つが行われる。Ｓ１１８０−１〜Ｓ１１８０−３のうち実行された全てのステップについて判断結果が真の場合、Ｓ１１８０の判断結果が真となる。実行されたステップのうちの少なくとも１つのステップについて判断結果が偽の場合、Ｓ１１８０の判断結果が偽となる。なお、下記の閾値Ａ、Ｂ（Ｂ１及びＢ２）のいずれも、ＧＵＩのようなユーザインタフェース経由でユーザにより指定された情報に従い決められ認証ポリシに設定されてもよいし、データ需要情報に含まれていてもよい。
（Ｓ１１８０−１）データ管理部４００は、挙動乖離が閾値Ａ未満か否かを判断する。例えば、データ管理部４００は、監視された挙動も、認証ポリシが示す挙動も、特徴量のような値とし、値同士の差分が、閾値Ａ未満か否かを判断する。
（Ｓ１１８０−２）データ管理部４００は、出力データが、データ需要情報内の出力定義に適合するか否かを判断する。
（Ｓ１１８０−３）データ管理部４００は、指標乖離が閾値Ｂ以上か否かを判断する。例えば、下記のうちの少なくとも１つの判断が行われる。Ｓ１１８０−３−２の判断は、Ｓ１１８０−３−１の判断結果が真の場合に実行されてよい。
（Ｓ１１８０−３−１）データ管理部４００は、入力データ量と出力データ量との差分であるデータ量乖離が閾値Ｂ１以上か否かを判断する。
（Ｓ１１８０−３−２）データ管理部４００は、入力データエントロピと出力データエントロピとの差分であるエントロピ乖離が閾値Ｂ２（例えば、図５に例示の入出力エントロピ差分）以上か否かを判断する。
【００７０】
Ｓ１１８０の判断結果が偽の場合（Ｓ１１８０：Ｎ）、データ管理部４００が分析プログラム認証部３００にＳ１１１０を実行させる。これにより、分析プログラム認証部３００が、認証失敗通知を、分析要求の要求元（コアシステム７００）に送信する（Ｓ１１１０）。
【００７１】
Ｓ１１８０の判断結果が真の場合（Ｓ１１８０：Ｙ）、データ管理部４００が、出力データ（分析結果データ）を、分析要求の要求元（コアシステム７００）に送信する（Ｓ１１９０）。
【００７２】
上述した実施形態によれば、対象分析プログラムが信頼できない場合、そのことを特定し、分析に関するデータの漏洩を防ぐことができる。具体的には、例えば、分析プログラムに紐付けられたデータ需要情報（プログラムの挙動を示す情報）と、分析プログラムに対応し予め登録されている認証ポリシとを照合することで、当該プログラムの動作が正規の分析動作であることを認証し、セキュリティを向上させることができる。また、分析プログラムが出力するデータについても監視し、予め設定された基準を満たさない場合にはそのデータの出力を抑止することができる。
【００７３】
以上、一実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【符号の説明】
【００７４】
１００：エッジシステム
【図１】
2018147444.tif 000003
【図２】
2018147444.tif 000004
【図３】
2018147444.tif 000005
【図４】
2018147444.tif 000006
【図５】
2018147444.tif 000007
【図６】
2018147444.tif 000008