(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-07
(45)【発行日】2023-07-18
(54)【発明の名称】APIを利用するためのプログラム、装置、及び方法
(51)【国際特許分類】
G06F 21/62 20130101AFI20230710BHJP
【FI】
G06F21/62 318
(21)【出願番号】P 2023502001
(86)(22)【出願日】2021-02-26
(86)【国際出願番号】 JP2021007533
(87)【国際公開番号】W WO2022180841
(87)【国際公開日】2022-09-01
【審査請求日】2023-01-18
【早期審査対象出願】
(73)【特許権者】
【識別番号】519444100
【氏名又は名称】株式会社KPMG Ignition Tokyo
(74)【代理人】
【識別番号】100126572
【氏名又は名称】村越 智史
(72)【発明者】
【氏名】茶谷 公之
【審査官】田名網 忠雄
(56)【参考文献】
【文献】国際公開第2018/092226(WO,A1)
【文献】特開2012-252452(JP,A)
【文献】特開2011-128949(JP,A)
【文献】米国特許第10757139(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
G06F 9/445
G06F 15/16
(57)【特許請求の範囲】
【請求項1】
一又は複数のプロセッサに、
処理対象データセットに設定された少なくとも一つの秘密度を表す秘密区分情報を含む処理リクエストを受信する機能と、
前記秘密区分情報に応じて外部の複数のAPIの中から前記処理リクエストを処理させる実行APIを選択する
第1選択機能と、
を実行させるプログラム。
【請求項2】
前記一又は複数のプロセッサに、前記実行APIを呼び出し、前記実行APIからのレスポンスを受信する機能をさらに実行させる、
請求項1に記載のプログラム。
【請求項3】
前記実行APIは、前記秘密区分情報、及び、前記複数のAPIの各々について設定されたセキュリティレベルに基づいて、前記複数のAPIの中から選択される、
請求項1又は2に記載のプログラム。
【請求項4】
前記一又は複数のプロセッサに、前記秘密区分情報、及び、前記複数のAPIの各々について設定されたセキュリティレベルに基づいて、前記複数のAPIの中から前記秘密度に適合するセキュリティレベルを有する複数の候補APIを選択する
第2選択機能をさらに実行させ、
前記実行APIは、前記複数の候補APIの中から選択される、
請求項
1から3のいずれか1項に記載のプログラム。
【請求項5】
前記処理リクエストはクライアントアプリケーションによって生成され、
前記実行APIは、前記クライアントアプリケーションについて定められた希望条件に応じて前記複数の候補APIの中から選択される、
請求項4に記載のプログラム。
【請求項6】
前記処理対象データセットに複数の秘密度が設定されている場合、前記複数の候補APIの各々は、前記複数の秘密度のうち最も高い秘密度に適合するセキュリティレベルを有するように前記複数のAPIの中から選択される、
請求項4又は5に記載のプログラム。
【請求項7】
前記一又は複数のプロセッサの各々は、オンプレミス環境に配置されており、
前記
第1選
択機能は、前記処理リクエストに含まれるフラグが処理対象データセットを前記オンプレミス環境において処理すべきことを示す場合に、前記オンプレミス環境にある一又は複数のオンプレミスAPIの中から前記実行APIを選択する機能を含む、
請求項1から5のいずれか1項に記載のプログラム。
【請求項8】
前記複数のAPIの各々について、提供機能及びセキュリティレベルが設定されており、
前記
第1選
択機能は、前記処理リクエストで要求される機能および前記秘密区分情報に応じて前記実行APIを選択する機能を含む、
請求項1から7のいずれか1項に記載のプログラム。
【請求項9】
処理対象データセットに設定された少なくとも一つの秘密度を表す秘密区分情報を含む処理リクエストを受信する受信部と、
前記秘密区分情報に応じて外部の複数のAPIの中から前記処理リクエストを処理させる実行APIを選択するAPI選択部と、
を備える装置。
【請求項10】
一又は複数のプロセッサがコンピュータ読み取り可能な命令を実行することによりAPIを選択する方法であって、
処理対象データセットに設定された少なくとも一つの秘密度を表す秘密区分情報を含む処理リクエストを受信する工程と、
前記秘密区分情報に応じて外部の複数のAPIの中から前記処理リクエストを処理させる実行APIを選択する工程と、
を備える方法。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書の開示は、APIを利用するためのプログラム、装置、及び方法に関する。本明細書の開示は、より具体的には、処理対象データセットの秘密度に応じたAPIを利用するためのプログラム、装置、及び方法に関する。
【背景技術】
【0002】
アプリケーションソフトウェアの構築を効率良く行うために、API(Application Programming Interface)が広く利用されている。例えば、複数のWebAPIをマッシュアップすることでアプリケーションソフトウェアを構築することができる。開発者は、公開されているAPIの仕様に基づいて、所望の機能を提供するAPIを呼び出し、そのAPIからのレスポンスを処理するようにアプリケーションソフトウェアを設計することができる。既に開発され公開されているAPIを利用することにより、APIと同等の機能を実行するためのプログラムを自らコーディングする場合と比べて、アプリケーションソフトウェアの開発を効率化することができる。
【0003】
APIは、リバースプロキシとして機能するAPIゲートウェイを介してデプロイされることがある。従来のAPIゲートウェイは、例えば、特開2018-029241号公報(特許文献1)に記載されている。APIゲートウェイは、クライアントアプリケーションからのAPIリクエストをバックエンドのAPIに渡し、APIからのレスポンスをリクエスト元のクライアントアプリケーションに返すことができる。つまり、アプリケーションソフトウェアは、APIゲートウェイを介してAPIを呼び出し、APIからのレスポンスを受け取ることができる。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
クライアントアプリケーションがAPI又はそのAPIを提供するベンダーに要求する情報セキュリティのレベルは、処理対象のデータによって変わり得る。例えば、クライアントアプリケーションが秘密度の高いデータを処理させるためにAPIを呼び出す場合には、その呼び出されるAPIは、高いレベルの情報セキュリティを確保していることが必要である。このため、クライアントアプリケーションの開発者は、APIに受け渡す処理データの秘密度に応じたセキュリティレベルを確保しているAPIを選定し、その選定されたAPIが呼び出されるように当該クライアントアプリケーションを設計する。そのためには、クライアントアプリケーションの開発者は、公開されているAPIの仕様を検討した上で、要求する情報セキュリティの要件に適合するAPIを選定しなければならず、この工程に多大な労力が必要とされる。
【0006】
また、APIの仕様は随時変更され得るから、クライアントアプリケーションの開発時に秘密度の高い処理データを処理させるAPIを選定し、秘密度の高い処理データの処理時にそのAPIを呼び出すようにクライアントアプリケーションが構築されたとしても、その選択されたAPIについてセキュリティレベルを低下させる改変がなされる可能性がある。この場合、秘密度の高いデータを別のAPIによって処理させるようにクライアントアプリケーションを改変する必要がある。しかしながら、クライアントアプリケーションの開発者や管理者が、クライアントアプリケーションによって利用されているAPIの全てについてセキュリティレベルを常時監視し、適時に必要な改変を行うことは困難を伴う。
【0007】
従来のAPIゲートウェイは、APIキー認証やトラフィック制御などのクライアントアプリケーションにとって有用な様々な機能を提供している。しかしながら、これまでのところAPIの選択を支援する機能を提供するAPIゲートウェイ、特に処理データの秘密度に応じたAPIの選択を支援するAPIゲートウェイは知られていない。
【0008】
本明細書に開示される発明の目的は、クライアントアプリケーションによるAPIの利用における上記の問題の少なくとも一部を解決又な緩和することである。本明細書に開示される発明のより具体的な目的の一つは、処理データセットの秘密度に応じてAPIを選択することができるプログラム、装置、及び方法を提供することである。
【0009】
本明細書に開示される発明の前記以外の目的は、本明細書全体を参照することにより明らかになる。本明細書に開示される発明は、前記の課題に代えて又は前記の課題に加えて、本明細書の記載から把握される課題を解決するものであってもよい。
【課題を解決するための手段】
【0010】
本発明の一又は複数の実施形態は、会計データを分析するための分析プログラムに関する。本発明の一又は複数の実施形態における分析プログラムは、一又は複数のプロセッサに、処理対象データセットに設定された少なくとも一つの秘密度を表す秘密区分情報を含む処理リクエストを受信する機能と、前記秘密区分情報に応じて外部の複数のAPIの中から前記処理リクエストを処理させる実行APIを選択する機能と、を実行させる。
【0011】
本発明の一実施形態におけるプログラムは、一又は複数のプロセッサに、前記実行APIを呼び出し、前記実行APIからのレスポンスを受信する機能をさらに実行させる。
【0012】
本発明の一実施形態において、前記実行APIは、前記秘密区分情報、及び、前記複数のAPIの各々について設定されたセキュリティレベルに基づいて、前記複数のAPIの中から選択される。
【0013】
本発明の一実施形態におけるプログラムは、一又は複数のプロセッサに、前記秘密区分情報、及び、前記複数のAPIの各々について設定されたセキュリティレベルに基づいて、前記複数のAPIの中から前記秘密度に適合するセキュリティレベルを有する複数の候補APIを選択する機能をさらに実行させる。本発明の一実施形態において、前記実行APIは、前記複数の候補APIの中から選択される。
【0014】
本発明の一実施形態において、前記処理リクエストはクライアントアプリケーションによって生成され、前記実行APIは、前記クライアントアプリケーションについて定められた希望条件に応じて前記複数の候補APIの中から選択される。
【0015】
本発明の一実施形態において、前記処理対象データセットに複数の秘密度が設定されている場合、前記複数の候補APIの各々は、前記複数の秘密度のうち最も高い秘密度に適合するセキュリティレベルを有するように前記複数のAPIの中から選択される。
【0016】
本発明の一実施形態において、前記一又は複数のプロセッサの各々は、オンプレミス環境に配置されている。本発明の一実施形態において、前記選択する機能は、前記処理リクエストに含まれるフラグが処理対象データセットを前記オンプレミス環境において処理すべきことを示す場合に、前記オンプレミス環境にある一又は複数のオンプレミスAPIの中から前記実行APIを選択する機能を含む。
【0017】
本発明の一実施形態においては、前記複数のAPIの各々について、提供機能及びセキュリティレベルが設定されている。本発明の一態様において、前記選択する機能は、前記処理リクエストで要求される機能および前記秘密区分情報に応じて前記実行APIを選択する機能を含む。
【0018】
本発明の一実施形態における装置は、処理対象データセットに設定された少なくとも一つの秘密度を表す秘密区分情報を含む処理リクエストを受信する受信部と、前記秘密区分情報に応じて外部の複数のAPIの中から前記処理リクエストを処理させる実行APIを選択するAPI選択部と、を備える。
【0019】
本発明の一実施形態は、一又は複数のプロセッサがコンピュータ読み取り可能な命令を実行することによりAPIを選択する方法に関する。本発明の一実施形態における方法は、処理対象データセットに設定された少なくとも一つの秘密度を表す秘密区分情報を含む処理リクエストを受信する工程と、前記秘密区分情報に応じて外部の複数のAPIの中から前記処理リクエストを処理させる実行APIを選択する工程と、を備える。
【発明の効果】
【0020】
本発明の実施形態によれば、クライアントアプリケーションから処理データの秘密度に応じたAPIを簡便に利用できるようにするためのプログラム、装置、及び方法が提供される。
【図面の簡単な説明】
【0021】
【
図1】本発明が適用可能なAPI提供システムの一実施形態を概略的に示すブロック図である。
【
図2】
図1のAPI提供システムに含まれるAPIプラットフォーム装置を示すブロック図である。
【
図3】
図1のAPI提供システムにおいて用いられるAPI管理データの一例を示す図である。
【
図4】クライアントアプリケーションから送信される処理リクエストを説明する模式図である。
【
図5】一実施形態において、クライアントアプリケーションがAPIプラットフォーム装置を介してAPIを呼び出し、APIからレスポンスを受け取る処理の流れを示すフロー図である。
【
図6】一実施形態において、実行APIを選択する処理の流れを示すフロー図である。
【
図7】本発明が適用可能なAPI提供システムの別の実施形態を概略的に示すブロック図である。
【
図8】
図7のAPI提供システムに含まれるAPIプラットフォーム装置を示すブロック図である。
【
図9】処理リクエストにクリアランスフラグが含まれる実施形態において、実行APIを選択する処理の流れを示すフロー図である。
【発明を実施するための形態】
【0022】
以下、適宜図面を参照し、本明細書に開示される発明が適用されるAPI提供システムの実施形態について説明する。以下、各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付するものとし、適宜重複した説明は省略する。まず、
図1~
図6を参照して、本発明の一実施形態によるAPI提供システム1について説明する。API提供システム1では、クライアントと複数の外部ベンダーが提供する複数の外部APIとの間にAPIプラットフォーム装置が設けられ、APIプラットフォーム装置はクライアントのデータの秘密度に応じた外部APIを選択し、選択した外部APIを呼び出すことができる。この仕組みにより、APIプラットフォーム装置を介してエコシステムを外部ベンダーにまで広げつつ、クライアントのセキュリティ・プライバシー要求に対応可能となる。
【0023】
図1は、API提供システム1の概略を示すブロック図である。
図1に示されているとおり、API提供システム1は、クライアントアプリケーション10aを実行するユーザ端末10が配置されているオンプレミス環境5と、オンプレミス環境5の所有者(または管理者)とは異なるベンダーA、ベンダーB、ベンダーC、及びベンダーDの各々の情報機器が配置されているベンダー環境A、ベンダー環境B、ベンダー環境C、及びベンダー環境Dを含む。オンプレミス環境5に配置されている情報機器の各々は、ベンダー環境A~Dに配置されている情報機器の各々とネットワーク40を介して互いに通信可能に接続されている。ネットワーク40は、単一のネットワークであってもよく、複数のネットワークが接続されて構成されていてもよい。ネットワーク40は、例えば、インターネット、移動通信網、及びこれらの組み合わせである。ネットワーク40として、情報機器間の通信を可能とする任意のネットワークが適用され得る。
【0024】
APIは、あるコンピュータプログラム(ソフトウェア)の機能や管理するデータなどを、外部の他のプログラムから呼び出して利用するためのインタフェースである。本明細書における「API」は、リクエストにより呼び出された機能を実行するイネーブラを含むことができる。
【0025】
オンプレミス環境5は、ユーザ端末10と、APIプラットフォーム装置20と、を含む。ユーザ端末10は、パーソナルコンピュータ(PC)、タブレット端末、スマートフォン、またはこれら以外の各種情報処理装置である。ユーザ端末10は、不図示のプロセッサを備え、当該プロセッサにより所定の命令セットを実行することにより、クライアントアプリケーション10aの機能を実現する。クライアントアプリケーション10aは、例えば、会計監査業務を支援する監査アプリケーションソフトウェアである。監査アプリケーションソフトウェアは、監査調書の作成を支援する機能、会計データのサンプリングや統計分析を行う機能、及び前記以外の監査業務を支援する機能を備えることができる。API提供システム1において使用可能なクライアントアプリケーション10aは、監査アプリケーションソフトウェアには限られず、例えば税務を支援する税務アプリケーションソフトウェアであってもよい。APIプラットフォーム装置20は、オンプレミス環境5の外部に設けられてもよい。
【0026】
クライアントアプリケーション10aは、必要に応じて外部の(またはオフプレミス環境の)APIを呼び出しそのAPIから受け取ったレスポンスを処理することで所定の機能を実現するように設計及び開発される。図示の実施形態では、クライアントアプリケーション10aは、API31~36のうちの少なくとも一つを呼び出し、その呼び出したAPIからのレスポンスを受け取ることができる。クライアントアプリケーション10aは、例えば複数のWeb APIをマッシュアップすることで構築されてもよい。後述するように、クライアントアプリケーション10aは、APIを直接呼び出すのではなく、APIによる処理対象データセットの処理を要求する処理リクエストをAPIプラットフォーム装置20に送信し、APIプラットフォーム装置20を介してAPI(つまり、当該APIのイネーブラ)からのレスポンスを受け取る。つまり、クライアントアプリケーション10aは、APIプラットフォーム装置20を介してAPIを呼び出し、APIからのリクエストを受け取る。
【0027】
クライアントアプリケーション10aは、APIプラットフォーム装置20をバイパスしてAPI31~36のうちの少なくとも一つを呼び出すことができてもよい。言い換えると、クライアントアプリケーション10aは、APIプラットフォーム装置20を介さずにAPI31~36を直接呼び出すことができてもよい。例えば、Web APIが直接呼び出される場合には、クライアントアプリケーション10aは、利用するWeb APIのエンドポイントを指定してAPIリクエストを送信することができる。クライアントアプリケーション10aは、APIプラットフォーム装置20を介してAPIを呼び出す機能と、APIを直接呼び出す機能と、を両方とも備えてもよい。
【0028】
クライアントアプリケーション10aからAPIプラットフォーム装置20を介して呼び出し可能なAPI31~36の各々は、クライアントアプリケーション10aに対して所定の機能またはサービスを提供する。例えば、API31~36は、監査アプリケーションソフトウェアに対して、一致するはずの2つの数値が一致するかを検証する突合(バウチング)、画像データのテキスト部分を認識しデジタルの文字データに変換するOCR(Optical Character Recognition)、会計データの機械学習による分析、及びこれら以外の機能を提供してもよい。本明細書においては、API31,33、35がOCR機能を提供し、API32、34、36が突合機能を提供するものとしてAPI提供システム1の説明を行う。
【0029】
図示の実施形態において、API31~36は、オフプレミス環境、すなわちオンプレミス環境5の外に配置されている。具体的には、API31、32はベンダー環境Aに配置され、API33はベンダー環境Bに配置され、API34はベンダー環境Cに配置され、API35、36はベンダー環境Dに配置されている。ベンダー環境A~Dの各々には、ベンダーA~Dによってそれぞれ管理されている情報機器が配置されている。各ベンダー環境から公開されているAPIは、当該ベンダー環境に配置されている情報機器によって実行される。例えば、API31は、ベンダー環境A内にあるため、ベンダー環境Aに配置された不図示のプロセッサによって実行される。API31~36によって処理されるデータ及び/又は処理されたデータは、各ベンダー環境に配置されているストレージに記憶されてもよいし、外部ストレージ41、42等の外部ストレージに記憶されてもよい。各ベンダーは、自らの情報セキュリティポリシーに基づいて、外部ストレージ41、42等の外部ストレージを利用するか否かを決めることができる。図示の実施形態では、ベンダー環境Aが外部ストレージ41を利用し、ベンダー環境Dが外部ストレージ42を利用している。他方、ベンダー環境B、ベンダー環境Cは、外部ストレージを利用していない。よって、ベンダー環境Bで実行されるAPI33で処理されるデータ及びAPI33が処理したデータは、ベンダー環境B内のストレージに保存され、ベンダー環境Cで実行されるAPI34で処理されるデータ及びAPI34が処理したデータは、ベンダー環境C内のストレージに保存される。
【0030】
ベンダー環境A~Dの各々は、APIゲートウェイを備えてもよい。APIゲートウェイは、クライアントアプリケーション10a及びその他のクライアントアプリケーションに対してエンドポイントを提供する。また、APIゲートウェイは、API提供システム1においてリバースプロキシとして機能する。よって、APIゲートウェイは、クライアントアプリケーションからの処理リクエストをバックエンドのAPIに渡し、APIからのレスポンスをリクエスト元のクライアントアプリケーションに返すことができる。さらに、APIゲートウェイは、自らを通じて公開されるAPIの各々に対して、APIキー認証、トラフィック制御、及びこれら以外の公知のAPIゲートウェイの機能を提供することができる。
【0031】
API31~36は、API提供システム1に適用可能なAPIの例である。API提供システム1は、API31~36よりも多い数のAPIを備えてもよく、API31~36より少ない数のAPIを備えてもよい。オンプレミス環境5に対してオフプレミス環境となる環境は、ベンダー環境A~Dには限られない。オンプレミス環境5は、より多い数の又はより少ない数のベンダー環境とネットワーク40を介して接続されてもよい。
【0032】
APIプラットフォーム装置20は、クライアントアプリケーション10aからの処理リクエストで処理要求がなされている処理対象データセットに設定された秘密度に応じて当該処理リクエストを処理させるAPIを選択する機能、及びこれら以外の機能をクライアントアプリケーション10aに対して提供することができる。
【0033】
図2をさらに参照してAPIプラットフォーム装置20について説明する。
図2は、APIプラットフォーム装置20を示すブロック図である。図示のように、APIプラットフォーム装置20は、プロセッサ21、メモリ22、ユーザインタフェース23、通信インタフェース24、及びストレージ25を備えている。
【0034】
プロセッサ21は、ストレージ25又はそれ以外のストレージからオペレーティングシステムやそれ以外の様々なプログラムをメモリ22にロードし、ロードしたプログラムに含まれる命令を実行する演算装置である。プロセッサ21は、例えば、CPU、MPU、DSP、GPU、これら以外の各種演算装置、又はこれらの組み合わせである。プロセッサ11は、ASIC、PLD、FPGA、MCU等の集積回路により実現されてもよい。後述するように、API管理プログラム25bに含まれる命令もプロセッサ21により実行される。
【0035】
メモリ22は、プロセッサ21が実行する命令及びそれ以外の各種データを格納するために用いられる。メモリ22は、プロセッサ21が高速にアクセス可能な主記憶装置(メインメモリ)である。メモリ22は、例えば、DRAMやSRAM等のRAMによって構成される。
【0036】
ユーザインタフェース23は、ユーザの入力を受け付ける入力インタフェースと、プロセッサ11の制御により様々な情報を出力する出力インタフェースと、を備える。入力インタフェースは、例えば、キーボード、マウス等のポインティングデバイス、タッチパネル、又は前記以外のユーザの入力を入力可能な任意の情報入力装置である。出力インタフェースは、例えば、液晶ディスプレイ、表示パネル、又は前記以外のプロセッサ21の演算結果を出力可能な任意の情報出力装置である。
【0037】
通信インタフェース24は、ハードウェア、ファームウェア、又はTCP/IPドライバやPPPドライバ等の通信用ソフトウェア又はこれらの組み合わせとして実装される。ユーザ端末10は、通信インタフェース24を介して、ベンダー環境A~Dに配置されている情報機器及びオンプレミス環境5内に配置されている情報機器とデータを送受信することができる。
【0038】
ストレージ25は、プロセッサ21によりアクセスされる外部記憶装置である。ストレージ25は、例えば、磁気ディスク、光ディスク、半導体メモリ、又はデータを記憶可能な前記以外の各種記憶装置である。ストレージ25には、API管理データ25a、API管理プログラム25b、及びこれら以外の様々なデータが格納され得る。
【0039】
API管理データ25aは、API提供システム1において利用されるAPIを管理するための様々なデータを含むデータセットである。API管理データ25aについて、さらに
図3を参照して説明する。API管理データ25aにおいては、APIを提供するベンダーを識別するベンダーIDに、当該ベンダーに関するデータ、及び、当該ベンダーが提供する一又は複数のAPIに関するデータが関連付けられる。
図3に示されている実施形態において、API管理データ25aは、ベンダーに関するデータ項目として「ベンダー名」を含んでおり、当該ベンダーが提供するAPIに関するデータ項目として、各APIの「API名」、「提供機能」、「セキュリティレベル」、「応答性」、及び「コスト」を含んでいる。API管理データ25aの各データ項目のデータ値は、数値データ、テキストデータ、又はこれらの組み合わせであってもよい。
【0040】
「ベンダー名」は、ベンダーの名称を示すテキストデータである。
図3の例では、ベンダーID「001」と対応付けて、ベンダー環境Aを提供する「ベンダーA」がベンダー名として格納されている。同様に、ベンダーID「002」~「004」の各々と対応付けて、ベンダー環境B~ベンダー環境Dをそれぞれ提供する「ベンダーB」~「ベンダーD」がそれぞれベンダー名として格納されている。
【0041】
上記のとおり、API管理データ25aにおいては、各ベンダーのベンダーIDと対応付けて、各ベンダーから公開されているAPIに関する情報が格納される。
図1を参照して説明したとおり、ベンダーAは、ベンダー環境AにおいてOCR機能を提供するAPI31と突合機能を提供するAPI32を公開しているため、ベンダーAのベンダーID「001」と対応付けて、ベンダーAが公開しているAPIのAPI名として「API31」及び「API32」が格納されている。他のベンダー及びオンプレミス環境5についても同様に、各ベンダー及びオンプレミス環境5から公開されているAPIのAPI名がベンダーIDと対応付けて格納されている。
【0042】
「提供機能」は、APIが提供する機能を示すためのデータ項目である。提供機能のデータ値は、機能を示すテキストデータ又は機能を特定する機能IDがデータ値であってもよい。図示の例では、「提供機能」に、「OCR」(Optical Character Recognition)及び「突合」が含まれている。既述のとおり、API管理データ25aにおいてAPIによって提供される機能は、OCRと突合には限られない。したがって、API管理データ25aの提供機能の項目には、OCR及び突合以外のデータが含まれ得る。
【0043】
「セキュリティレベル」は、APIごとに、そのAPIに設定されたセキュリティレベルを表すためのデータ項目である。図示の例では、セキュリティレベルのデータ値が「高」と「低」の二段階で表されている。セキュリティレベルは、三段階以上に分けて分類されてもよい(例えば、「高」、「中」、「低」等)し、セキュリティの高さをスコアで表したデータであってもよい。各APIに対応付けられるセキュリティレベルは、例えば、10点満点で当該APIのセキュリティの高さを示してもよい。セキュリティレベルは、ベンダーごとに定められてもよい。例えば、ベンダーがISO/IEC 27001:2005に基づく認証又はそれに対応する日本国内のJIS Q 27001:2006に基づく認証を受けている場合に、当該ベンダーから提供されるAPIのセキュリティレベルを「高」に設定し、これらの認証を受けていないベンダーから提供されるAPIのセキュリティレベルを「低」に設定してもよい。あるベンダーから提供されているAPIのセキュリティレベルを決定する際に、当該APIが当該ベンダーから見てオフプレミスにあるストレージを利用している場合に、当該APIのセキュリティレベルを低く設定してもよい。ただし、あるベンダーが提供するAPIが処理データの格納のために外部ストレージを利用していても、当該ベンダーがISO/IEC 27017:2015に基づくISMSクラウドセキュリティ認証を受けていれば、当該APIのセキュリティレベルを高く設定してもよい。あるベンダーとAPIプラットフォーム装置20との通信における暗号化の強度が高いほどそのベンダーが提供するAPIのセキュリティレベルを高く設定してもよい。準同型暗号やMPC(Multi Party Computation)などの秘密計算の技術を用いることでAPIの処理が秘匿された状態で行われる場合は、そうでない場合よりも当該APIのセキュリティレベルを高く設定してもよい。このように、あるベンダーから提供されるAPIのセキュリティレベルは、当該ベンダーがISO/IEC 27001:2005に基づく認証を受けているか否か、当該APIが当該ベンダーにとってのオフプレミス環境にある外部ストレージを処理データの格納に利用しているか否か、当該ベンダーがISO/IEC 27017:2015に基づくISMSクラウドセキュリティ認証を受けているか否か、当該ベンダーに係る情報流出や情報漏洩などのインシデントの有無、当該ベンダーとの通信や処理の秘匿性、及びこれら以外の様々な要素に基づいて設定され得る。APIのセキュリティレベルは、例えば、APIプラットフォーム装置20の運営者が定める基準に従って当該APIを評価することにより設定される。あるAPIについてセキュリティレベルが一度設定された後であっても、当該APIの情報セキュリティに影響を与える変更があった場合には当該セキュリティレベルは変更され得る。APIの情報セキュリティに影響を与える変更には、当該APIの仕様の変更、当該APIを提供するベンダーが新たに情報セキュリティ認証を受けたこと、当該APIを提供するベンダーに対する情報セキュリティ認証が取り消されたこと、及びこれら以外のAPIの情報セキュリティに影響を与える様々な変更が含まれ得る。
【0044】
セキュリティレベルは、ベンダーごとに設定されてもよく、APIごとに設定されてもよい。
図3に示されている例では、ベンダーA~ベンダーCについては、ベンダーごとセキュリティレベルが設定されており、ベンダーDについてはAPIごとにセキュリティレベルが設定されている。具体的には、ベンダーAの2つのAPI31、32はいずれもセキュリティレベルが「低」とされているが、ベンダーDが公開しているAPIのうちAPI35についてはセキュリティレベルが「高」に設定されている一方で、API36についてはセキュリティレベルが「低」に設定されている。例えば、API35がベンダー環境D内に処理データを格納する一方でAPI36が処理データをベンダー環境Dの外部にあるストレージ(例えば、ストレージ42)に格納する場合に、API35についてセキュリティレベルを「高」に設定する一方でAPI36についてセキュリティレベルを「低」に設定してもよい。
【0045】
APIの「応答性」は、APIの応答速度を示すデータ項目である。APIの応答性は、当該APIを呼び出してから正しいレスポンス(エラーではないレスポンス)を受けるまでの応答時間に基づいて定められ得る。図示の実施形態において、APIの応答性は、「高」、「中」、「低」の三段階で評価されており、その評価結果が「応答性」の項目のデータ値とされている。APIの応答性は、二段階で評価されてもよく、四段階以上に分けて評価されてもよい。APIの応答性は、APIの応答時間を正規化した値であってもよい。
【0046】
APIの「コスト」は、当該APIを利用するために支払う費用についての評価示すデータ項目である。図示の実施形態では、APIのコストは、「高い」、「中」、「安い」の三段階で評価されており、その評価結果がコストのデータ項目のデータ値として格納されている。APIは、ベンダーの収益のために有償で公開される場合もあるし、無償で公開される場合もある。例えば、無償で公開されているAPIや、利用料金を支払わずに利用できるAPIについては、コストを「安い」と評価することができる。有償で公開されているAPIについては、支払いが必要な金額に応じて、「高い」、「中」、「安い」のいずれかの評価が与えられ、このようにして与えられた評価が「コスト」の項目のデータ値として設定される。APIのコストは、二段階で評価されてもよく、四段階以上に分けて評価されてもよい。APIのコストは、APIを利用するために支払う金額を正規化した値であってもよい。
【0047】
図3に示されているAPI管理データ25aは例示であり、API提供システム1において使用可能なAPI管理データ25aは、
図3に示されているものには限られない。API管理データ25aは、
図3に示されているデータ項目の一部を含まなくてもよいし
図3に記載されていないデータ項目を含んでもよい。例えば、API管理データ25aは、「応答性」及び「コスト」以外に、APIが利用するストレージに関するデータ項目を含んでもよい。API管理データ25aに含められるAPIが利用するストレージに関するデータ項目には、当該APIが利用するストレージの信頼性及び当該ストレージが設置されている設置国を含めることができる。例えば、ベンダーAは、外部のストレージ41を利用しているため、ベンダー環境Aのストレージとストレージ41とを組み合わせることにより、ストレージを冗長化することが可能である。このようにAPIの処理データを保存するストレージの冗長化が図られている場合に、当該APIのストレージの信頼性が高いと判断することができる。また、APIの処理データを保存するストレージに使用しているRAIDのレベルに応じてストレージの信頼性を評価することができる。例えば、RAID-6を使用している場合に、ストレージの信頼性が高いと評価することができる。ストレージの設置国としては、例えば、日本、米国、豪州、中国、及びこれら以外の国または地域がデータ値として設定される。
【0048】
API管理データ25aに含められているAPIに関するデータ項目のデータ値は、例えばAPIプラットフォーム装置20の運営者によって設定される。例えば、APIのコストは、APIプラットフォーム装置20の運営者がAPIごとに利用料金を調査することで評価を定めることができる。
【0049】
API提供システム1において、データの格納場所には特段の制限はない。例えば、ストレージ25に記憶され得る各種データは、オンプレミス環境5内又はオンプレミス環境5外のAPIプラットフォーム装置20とは物理的に別体のストレージやデータベースサーバに格納されてもよい。ただし、クライアントアプリケーション10aがオフプレミス環境に送信することができないデータを取り扱っている場合には、当該データは、オンプレミス環境5内のストレージに格納される。
図2においては、ストレージ25が単一のユニットとして図示されているが、ストレージ25は、複数の物理的に別体のストレージが集合したものであってもよい。つまり、本明細書において、ストレージ25に記憶されるデータは、単一のストレージに記憶されてもよいし、複数のストレージに分散して記憶されてもよい。また、本明細書及び特許請求の範囲において、単に「ストレージ」という場合には、文脈上許される限り、単一のストレージと複数のストレージの集合のいずれを指し示すこともある。API管理プログラム25bは、ストレージ25以外にも様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)に格納され得る。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例には、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、Compact Disc Read Only Memory(CD-ROM)、CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、Programmable ROM(PROM)、Erasable PROM(EPROM)、フラッシュROM、Random Access Memory(RAM))を含む。
【0050】
続いて、APIプラットフォーム装置20の機能について説明する。APIプラットフォーム装置20のプロセッサ21は、API管理プログラム25bに含まれる命令及び必要に応じてそれ以外の命令を実行することにより、リクエスト受信部21a、API選択部21b、リクエスト送信部21c、レスポンス受信部21d、及びレスポンス送信部21eとして機能する。本明細書において、プロセッサ21によって実行されるとして説明されるプログラム又は当該プログラムに含まれる命令は、単一のコンピュータプロセッサで実行されてもよいし、複数のコンピュータプロセッサにより分散して実行されてもよい。また、プロセッサ21によって実行されるプログラム又は当該プログラムに含まれる命令は、複数の仮想コンピュータプロセッサにより分散して実行されてもよい。ただし、上述したように、クライアントアプリケーション10aがオフプレミス環境に送信することができないデータを取り扱っている場合には、当該データは、オンプレミス環境5内のプロセッサによって処理され、オフプレミス環境のプロセッサによる分散処理は行われない。
【0051】
リクエスト受信部21aは、クライアントアプリケーション10aから送信された処理リクエストを受信する。
図4は、処理リクエストの一例を模式的に示すデータ構造図である。処理リクエストは、ヘッダ部51と、ボディ部52と、を有する。クライアントアプリケーション10aから送信される処理リクエストのヘッダ部51には、処理対象データセットに設定された少なくとも一つの秘密度を表す秘密区分情報と、当該処理対象データセットを処理すべきAPIの機能を特定する機能IDと、が含まれる。
【0052】
処理対象データセットは、クライアントアプリケーション10aで利用されている様々なデータのうち、APIでの処理のためにAPIに受け渡されるデータセットである。処理リクエストにおいては、処理対象データセットに含められるファイルのファイル名が指定されてもよい。処理対象データセットは、PDF、CSV、JSON及びこれら以外の公知の形式の一又は複数のファイルを含むことができる。処理対象データセットは、処理リクエストのボディ部に含められて、処理リクエストとともにAPIに送信されてもよいし、処理リクエストにおいて指定された格納場所からAPIによって取得されてもよい。
【0053】
処理対象データセットには、一又は複数の秘密度が設定される。処理対象データセットの秘密度は、情報セキュリティの国際規格であるISO27001(JISQ27001)に従って区分されてもよい。ISO27001(JISQ27001)では、「極秘」、「秘」、「社外秘」、「一般」の4区分に情報が分類されている。処理対象データセットの秘密度は、この4区分に従って設定されてもよい。処理対象データセットの秘密度の設定は、クライアントアプリケーション10aのユーザによってなされてもよい。処理対象データセット全体に一つの秘密度が設定されてもよいし、処理対象データセットに含まれる単位データセット(例えば、ファイル)ごとに秘密度が設定されてもよい。処理対象データセットに含まれるファイルごとに秘密度が設定される場合には、処理リクエストには、ファイル名と対応付けてそのファイルに設定された秘密度が含められてもよい。あるいはまた、処理対象データセットの秘密度は、当該処理対象データセットの送信元のクライアントアプリケーション10aに応じた値に設定されてもよい。この場合、クライアントアプリケーション10aから送信される処理リクエストに含まれる処理対象データセットは全て同じ秘密度を有する一方、別のクライアントアプリケーションから送信される処理リクエストに含まれる処理対象データセットは前記秘密度とは異なる秘密度を有しうる。例えば、企業内で使用する業務用アプリケーションから送信される処理リクエストに含まれる処理対象データセットの秘密度は一様に「極秘」に設定される一方、業務用アプリケーション以外のアプリケーション(例えば、個人が使用するSNSアプリケーション、ゲームアプリケーション)から送信される処理リクエストに含まれる処理対象データセットの秘密度は一様に「一般」に設定されてもよい。あるいはまた、処理対象データセットの秘密度は当該処理対象データセットの送信元のユーザに応じた値に設定されてもよい。この場合、ユーザAがクライアントアプリケーション10aを用いて送信する処理リクエストに含まれる処理対象データセットは全て同じ秘密度を有する一方、別のユーザBがクライアントアプリケーション10aを用いて送信する処理リクエストに含まれる処理対象データセットは前記秘密度とは異なる秘密度を有しうる。例えば、監査法人がクライアントアプリケーション10aを用いて送信する処理リクエストに含まれる処理対象データセットは一様に「極秘」に設定される一方、一般企業の内部監査担当がクライアントアプリケーション10aを用いて送信する処理リクエストに含まれる処理対象データセットの秘密度は一様に「社外秘」に設定されてもよい。
【0054】
処理リクエストに含まれる機能IDは、その処理リクエストに含まれる又はその処理リクエストで特定されている処理対象データセットに対してどのような処理が行われるかを特定する識別子である。機能IDにより、処理対象データセットを受け取ったAPIがどのような機能を提供すべきかを特定することができる。上記のとおり、API提供システム1に含まれる各APIが突合又はOCRのいずれかの機能を提供する場合には、機能IDは、突合又はOCRのいずれかを識別する。API提供システム1において公開されるAPIがより多くの機能を提供する場合には、それに応じて機能IDが拡張される。つまり、機能IDは、3種類以上のAPIにより提供されるべき機能を識別することができるように設計されてもよい。機能IDは、例えば、APIプラットフォーム装置20の運営者がAPI提供システム1において公開されている複数のAPIの仕様に基づいてAPIの機能を評価し、その評価に応じて各APIに割り当てられてもよい。
【0055】
図2に戻り、API選択部21bは、クライアントアプリケーション10aから受信した処理リクエストに基づいて、API提供システム1において公開されている複数のAPIの中から、当該処理リクエストに含まれる処理対象データセットを処理させるAPIを選択する。本明細書では、API選択部21bによって選択されるAPIを「実行API」と呼ぶことがある。
図1に示されている実施形態では、API提供システム1においてAPI31~36が公開されているので、API選択部21bは、API31~36の中から実行APIを選択する。
【0056】
本発明の一実施形態において、API選択部21bは、処理リクエストに含まれている機能ID及び秘密区分情報に基づいて実行APIを選択することができる。API選択部21bは、例えば、処理リクエストに含まれている機能IDに基づいて要求されている機能を特定し、API管理データ25aを参照して特定された機能を提供するAPIを抽出し、その抽出されたAPIのうち処理リクエストに含まれている秘密区分情報により特定される秘密度に適合するAPIを実行APIとして選択する。つまり、処理リクエストに含まれる機能IDにより特定される機能を提供し、且つ、秘密区分情報で指定される秘密度に適合するセキュリティレベルを有するAPIが実行APIとして選択され得る。
【0057】
APIのセキュリティレベルが秘密区分情報で指定される秘密度に適合するかを判断する適合判断基準には少なくとも以下の2つの基準がある。API提供システム1においては、いずれの基準が採用されてもよい。
【0058】
適合判断基準の第1の例においては、APIのセキュリティレベルの各々は、各セキュリティレベルに適合する秘密度の上限を指定する。例えば、APIのセキュリティレベル「高」は、セキュリティレベル「高」に適合する秘密度の上限として「極秘」を指定し、セキュリティレベル「低」は、セキュリティレベル「低」に適合する秘密度の上限として「一般」を指定することができる。この場合、API選択部21bは、セキュリティレベルとして「高」が設定されているAPIは、セキュリティレベル「高」が指定する上限の「極秘」と同じかそれより低い秘密度(秘密度が高い方から順に「極秘」、「秘」、「社外秘」及び「一般」の4段階に分けられている場合には、「極秘」及び「極秘」よりも秘密度が低い「秘」、「社外秘」及び「一般」)の秘密度に適合し、また、セキュリティレベルとして「低」が設定されているAPIは、セキュリティレベル「低」が指定する「一般」と同じかそれよりも低い秘密度(上記の4段階の例においては、「一般」の秘密度のみ)に適合すると判断することができる。このように、適合判断基準の第1の例においては、秘密区分情報で指定される秘密度が、その秘密度に適合するAPIのセキュリティレベルの下限を指定する。 APIのセキュリティレベルが高い方から順に、「最高」、「高」、「中」、「低」の4区分に分類される別の例では、セキュリティレベルと秘密度との対応関係は、例えば以下の表1のように設定することが可能である。
【表1】
【0059】
適合判断基準の第2の例においては、秘密度の各々に対してAPIのセキュリティレベルが特定可能なように対応付けられる。この場合、複数の秘密度が一つのセキュリティレベルと対応付けられていてもよいし、各秘密度とAPIのセキュリティレベルとの対応は、1対1に対応付けられていてもよい。前者の例として、「極秘」、「秘」、及び「社外秘」の3つの秘密度の各々がセキュリティレベル「高」と対応付けられ、「一般」の秘密度がセキュリティレベル「低」と対応付けられる設定が挙げられる。この場合、API選択部21bは、セキュリティレベルとして「高」が設定されているAPIが「極秘」、「秘」、及び「社外秘」の秘密度に適合し、セキュリティレベルとして「低」が設定されているAPIが「一般」の秘密度に適合すると判断することができる。後者の例として、秘密度が「極秘」、「秘」、「社外秘」、及び「一般」の4段階に区分されている場合に、APIのセキュリティレベルも「最高」、「高」、「中」、「低」の4区分に分類し、「極秘」、「秘」、「社外秘」、及び「一般」の秘密度の各々が「最高」、「高」、「中」、「低」のセキュリティレベルとそれぞれ1対1に対応付けられる設定が挙げられる。
【0060】
処理リクエストに含まれる機能IDにより特定される機能を提供し、且つ、秘密区分情報で指定される秘密度に適合するセキュリティレベルを有するAPIが複数存在する場合には、その複数のAPIの各々を候補APIとし、この複数の候補APIの中から所定の基準に従って実行APIが選択される。例えば、クライアントアプリケーション10aから受信される処理リクエストは、実行APIの選択時に重視すべき項目を定めた希望条件情報を含んでもよく、API選択部21bは、この希望条件情報に基づいて複数の候補APIの中から実行APIを選択してもよい。希望条件情報は、実行APIの選択時に重視されるべき項目として、API管理データ25aのデータ項目(例えば、応答性、コスト、ストレージ信頼性、ストレージの設置国、又はこれら以外のAPI管理データ25aのデータ項目)の一又は複数を指定することができる。希望条件情報は、処理リクエストとは別にAPIプラットフォーム装置20に通知されてもよい。例えば、クライアントアプリケーション10aのユーザは、処理リクエストの送信前に、APIプラットフォーム装置20が提供する登録フォームを利用して希望条件情報を登録することができる。
【0061】
図3に示されている実施形態に従って、実行APIの選択の幾つかの具体例を説明する。第1の例においては、クライアントアプリケーション10aから受信した処理リクエストにおいて機能IDが「OCR」を指定しており、秘密度が「極秘」に設定されており、希望条件情報に「コスト」が設定されていることを想定する。この場合、API選択部21bは、API31~36の中からOCRを提供するAPIとしてAPI31、33,35を抽出する。次に、API選択部21bは、OCRを提供するAPI31、33,35の中から、秘密区分情報で指定されている「極秘」の秘密度に適合するAPIを候補APIとして選択する。
図3に示されているAPI管理データ25aにおいては、OCRを提供するAPIのうち、API33、35の2つについてセキュリティレベルが「高」に設定されているので、このAPI33、35が候補APIとして選択される。次に、希望条件情報によって「コスト」を重視することが指定されているので、候補APIであるAPI33、35のうちコストが「高い」と設定されているAPI33ではなく、コストが「中」と設定されているAPI35が実行APIとして選択される。
【0062】
第2の例においては、クライアントアプリケーション10aから受信した処理リクエストにおいて機能IDが「OCR」を指定しており、秘密度が「一般」に設定されており、希望条件情報に「コスト」が設定されていることを想定する。この場合、API選択部21bは、API31~36の中からOCRを提供するAPIとしてAPI31、33,35を抽出する。次に、API選択部21bは、OCRを提供するAPI31、33,35の中から、秘密区分情報で指定されている「一般」の秘密度に適合するAPIを候補APIとして選択する。
図3に示されているAPI管理データ25aにおいては、OCRを提供するAPIのうち、API31についてセキュリティレベルが「低」に設定されているので、このAPI31が候補APIとして選択される。選択された候補APIは一つなので、この候補API31が実行APIとして選択される。
【0063】
第1の例と第2の例との比較により、「OCR」という同じ機能の実行を要求する処理リクエストを受信した場合であっても、当該処理リクエストに設定されている処理対象データセットの秘密度によって選択される実行APIが異なることが理解される。このように、APIプラットフォーム装置20は、データの秘密度に応じて外部のAPIを選択することができる。
【0064】
第3の例においては、処理対象データセットに複数の秘密度が設定されている例を説明する。例えば、2つのファイルの突合が要求される場合には、2つのファイルの秘密度が異なる可能性がある。具体的には、取引の証憑をスキャンして作成したPDFファイルに含まれるデータとその取引を記録した表計算ソフトのファイル(以下、「表計算ファイル」という。)に含まれるデータとを突合する場合、証憑から作成されたPDFファイルには「極秘」の秘密度が設定され、表計算ファイルには「一般」の秘密度が設定されることがある。このような「極秘」の秘密度が設定されたファイルのデータと「一般」の秘密度が設定されたファイルのデータとの突合を行うことを要求する処理リクエストをクライアントアプリケーション10aから受信すると、API選択部21bは、処理対象データセットに設定された互いに異なる2つの秘密度のうち高い方の秘密度に基づいて実行APIを選択する。上記の例では、処理対象データセットの一部(証憑のPDFファイル)に「極秘」の秘密度が設定されているため、API選択部21bは、API提供システム1において公開されているAPIのうちセキュリティレベルが「高」に設定されているAPIを実行APIとして選択する。
【0065】
リクエスト送信部21cは、API選択部21bにより選択された実行APIを呼び出す。具体的には、リクエスト送信部21cは、実行APIに対して処理対象データセット又は処理対象データセットの格納場所を指定する処理データ特定情報をボディ部に含むAPIリクエストを送信する。APIリクエストには、OAuth等の公知の認証プロトコルによる認証のためにアクセストークンが含まれてもよい。実行APIがAPIゲートウェイを介して公開されている場合には、APIリクエストは、リクエスト送信部21cからAPIゲートウェイを介して実行APIに送信される。
【0066】
レスポンス受信部21dは、レスポンス送信部21cにより実行APIに対してAPIリクエストが送信された後、当該実行APIからのレスポンスを受信する。
【0067】
レスポンス送信部21eは、レスポンス受信部21dが実行APIから受け取ったレスポンスをクライアントアプリケーション10aに送信する。
【0068】
続いて、
図5を参照して、クライアントアプリケーション10aがAPIプラットフォーム装置20を介してAPIを呼び出し、APIからレスポンスを受け取る処理の流れを説明する。まず、ステップS11において、クライアントアプリケーション10aから処理リクエストが送信される。送信された処理リクエストは、例えば、APIプラットフォーム装置20のリクエスト受信部21aにおいて受信される。
【0069】
次に、ステップS12において、APIプラットフォーム装置20において受信した処理リクエストが解析され、その解析に基づいて実行APIが選択される。具体的には、ステップS12において、処理リクエストに含まれる機能ID、秘密区分情報、希望条件情報、及び必要に応じて前記以外の情報に基づいて、処理リクエストを処理する実行APIが選択される。
【0070】
次に、ステップS13において、ステップS12で選択された実行APIが呼び出される。例えば、ステップS12においてAPI35が実行APIとして選択された場合には、APIプラットフォーム装置20からAPI35に対して直接に又はAPI35用のAPIゲートウェイを介してAPIリクエストが送信される。実行APIを呼び出す処理は、例えば、上記のリクエスト送信部21cによって行われる。
【0071】
次に、ステップS14において、実行APIからのレスポンスがAPIプラットフォーム装置20において受信される。API35が実行APIとして選択された場合には、API35において処理対象データセットがデジタルの文字データに変換され、この変換後の文字データが受信される。実行APIからのレスポンスを受信する処理は、例えば、上記のレスポンス受信部21dによって行われる。
【0072】
次に、ステップS15において、実行APIから受け取ったレスポンスがクライアントアプリケーション10aに送信される。実行APIからのレスポンスをクライアントアプリケーション10aに送信する処理は、例えば、上記のレスポンス送信部21eによって行われる。以上のようにして、クライアントアプリケーション10aは、APIプラットフォーム装置20を介して、処理対象データセットの秘密度に応じたAPIに当該処理対象データセットに対する所望の処理を行わせ、その処理結果をレスポンスとして受け取ることができる。クライアントアプリケーション10aは、例えば、処理要求された機能が「突合」の場合には突合の結果を示すデータを受信することができ、処理要求された機能が「OCR」の場合にはOCRによってデジタル化された文字データを受信することができる。
【0073】
続いて、
図6をさらに参照して、ステップS12における実行APIの選択の流れについてより具体的に説明する。
図6は、
図5の実行APIを選択するステップS12における処理の流れの一例を示すフロー図である。まず、ステップS121において、API選択部21bは、処理リクエストで要求される機能を特定する。例えば、API選択部21bは、処理リクエストを解析することでそれに含まれる機能IDを特定する。
【0074】
次に、ステップS122において、API選択部21bは、API管理データ25aを参照し、ステップS121で特定された機能に対応するAPIとそのセキュリティレベルとを特定する。API選択部21bは、S121で特定された機能IDに対応する提供機能を有するAPI名およびそのセキュリティレベルを、API管理データ25aから取得することができる。
【0075】
次に、ステップS123において、API選択部21bは、処理リクエストに含まれる処理対象データセットの秘密度を特定する。API選択部21bは、処理リクエストを解析することで、処理リクエストのヘッダ部51に含まれる秘密区分情報を取得し、取得した秘密区分情報に含まれる秘密度を特定することができる。
【0076】
次に、ステップS124において、API選択部21bは、ステップS122で特定されたAPIの中から、ステップS123で特定された秘密度に適合するAPIを候補APIとして選択する。
【0077】
次に、ステップS125において、API選択部21bは、ステップS124で選択された候補APIが複数あるか否かを判定する。候補APIが一つである(すなわち、複数でない)と判断された場合には、処理はステップS126に進み、ステップS126においてその一つの候補APIが実行APIとして選択される。他方、ステップS125において、候補APIが複数存在すると判断された場合には、処理はステップS127に進む。ステップS127において、API選択部21bは、複数の候補APIの中から、希望条件情報に最もマッチする候補APIを実行APIとして選択する。以上のようにして実行APIが選択される。
【0078】
例えば、
図3に示されている例において、処理リクエストにおいて機能IDが「OCR」を指定しており、秘密度が「極秘」に設定されており、希望条件情報に「コスト」が設定されている場合には、ステップS121において要求される機能として「OCR」が特定され、ステップS122において「OCR」を提供しているAPIとしてAPI31、33、35が特定され、ステップS123において処理リクエストに含まれる処理対象データセットの秘密度が「極秘」であることが特定され、ステップS124において「極秘」の秘密度に適合するAPIとして設定された秘密度に適合するセキュリティレベルを有するAPI33、35が候補APIとして選択される。この場合、候補APIが複数であることから、ステップS125での判断結果に従って処理はステップS127に進み、候補APIであるAPI33、35のうち、希望条件情報に設定されている「コスト」により適合しているAPI35が実行APIとして選択される。上記の例以外にも、処理リクエストに含まれる情報又はそれ以外の情報に応じて、API提供システム1において公開されている複数のAPIの中から処理対象データの秘密度に適合し、且つ、希望条件を満たすAPIが実行APIとして選択される。
【0079】
本明細書において説明された処理手順、特にフロー図を用いて説明された処理手順においては、その処理手順を構成する工程(ステップ)の一部を省略すること、その処理手順を構成する工程として明示されていない工程を追加すること、及び/又は当該工程の順序を入れ替えることが可能であり、このような省略、追加、順序の変更がなされた処理手順も本発明の趣旨を逸脱しない限り本発明の範囲に含まれる。例えば、
図6に示されているステップS122とステップS123の実行順序を入れ換えて、処理リクエストで要求されている機能を提供するAPIを特定する前に、処理リクエストの解析を行って処理対象データセットの秘密度を特定してもよい。
【0080】
本発明の実施形態によって奏される作用効果について簡単に説明する。本発明の一実施形態によれば、APIにより処理される処理データセットの秘密度に応じて、当該処理リクエストによって要求された処理を実行する実行APIが選択される。これにより、APIを利用するクライアントアプリケーション10aにおいて処理対象データセットの秘密度を定めることにより、API提供システム1において公開された複数のAPIの中から当該処理対象データセットの秘密度に応じた実行APIが選択されるので、クライアントアプリケーション10aにおいて処理対象データセットを処理させるAPIを指定する必要がない。よって、情報セキュリティを担保しつつ、クライアントアプリケーション10aの開発及び構築をより効率的に行うことができる。
【0081】
本発明の一実施形態によれば、API提供システム1において公開されているAPIの仕様が情報セキュリティ面で変更された場合であっても、API管理データ25aにおいて当該APIのセキュリティレベルを更新することにより、クライアントアプリケーション10aを改変することなく処理対象データセットの秘密度に応じたAPIを継続して利用することができる。例えば、これまで実行APIとして選択されていたAPIのセキュリティレベルが低下して処理対象データセットの秘密度に適合しなくなった場合であっても、そのセキュリティレベルの変更をAPI管理データ25aに反映することにより、秘密度に適合する別のAPIを実行APIとして選択することができる。
【0082】
本発明の一実施形態によれば、クライアントアプリケーション10aは、APIプラットフォーム装置20を介して実行APIを呼び出し、また、その呼び出した実行APIからのレスポンスを受け取ることができる。実行APIは、処理対象データセットについて設定された秘密度に応じて選択されるから、オフプレミス環境のAPIを利用する場合にも処理対象データセットの情報セキュリティを確保することができる。
【0083】
本発明の一実施形態によれば、処理対象データセットの秘密度に適合するセキュリティレベルを有する候補APIの中から、クライアントアプリケーション10aについて定められた希望条件に応じて実行APIが選択される。これにより、クライアントアプリケーション10aの希望条件により適した実行APIが選択することができる。例えば、コストを重視するクライアントアプリケーション10aのユーザに対しては低コストの実行APIによるサービスを提供でき、応答性を重視するクライアントアプリケーション10aのユーザには高い応答性を有する実行APIによるサービスを提供できる。
【0084】
次に、
図7及び
図8を参照して、本発明の別の実施形態によるAPI提供システム7について説明する。
図7及び
図8に示されているAPI提供システムにおいては、オンプレミス環境においてもAPIを用意し、処理リクエストが所定の条件を満たす場合にオンプレミス環境から提供されているAPIで当該処理リクエストが処理される。
図7は、オンプレミス環境からAPIが公開されているAPI提供システム7の概略を示すブロック図である。
【0085】
図7に示されているAPI提供システム7は、APIプラットフォーム装置20に代えてAPIプラットフォーム装置70を備えており、また、オンプレミス環境5から公開されているAPI37及びAPI38を備えている。オンプレミス環境5から公開されているAPIは、オンプレミス環境5に配置されているプロセッサ及びメインメモリを利用して実行される。API37はOCR機能を提供し、API38が突合機能を提供する。本明細書においては、クライアントアプリケーション10aが配置されているオンプレミス環境5に配置されている情報機器で実行され、その処理データをオンプレミス環境5に配置されているストレージに記憶するAPIを「オンプレミスAPI」と呼ぶことがある。API37及びAPI38は、オンプレミスAPIの例である。オンプレミスAPIは、オンプレミス環境5の情報機器のみを利用して実行され、その処理データをオフプレミス環境に送信しないので、クライアントアプリケーション10aがオフプレミス環境に送信することができないデータを取り扱っている場合、そのオフプレミス環境に送信することができないデータの処理は、オンプレミスAPIによって行われる。クライアントアプリケーション10aがオフプレミス環境に送信することができないデータの例は、金融商品取引法に規定されている未公表の重要事実に該当するデータである。例えば、クライアントアプリケーション10aのユーザが監査法人である場合、当該監査法人のクライアントの未発表の決算情報がオフプレミス環境に送信することができないデータとなる。インサイダー取引に関する法規制を遵守するために、金融商品取引法に規定されている未公表の重要事実は、オフプレミス環境に送信することが望ましくない。このため、クライアントアプリケーション10aが未公表の重要事実に相当するデータを処理する場合には、当該データをオンプレミス環境5で処理する必要があるので、かかるデータを処理させるAPIは、オンプレミスAPIの中から選択される。
【0086】
図8は、API提供システム7のAPIプラットフォーム装置70を示すブロック図である。
図2のAPIプラットフォーム装置20と比べて、
図7のAPIプラットフォーム装置70ではプロセッサ21にクリアランス処理部21fが追加され、ストレージ25に一時保持領域71が追加されている。
【0087】
API提供システム7では、クライアントアプリケーション10aから受信される処理リクエストは、処理対象データセットがオンプレミス環境5において処理されるべきか否かを示すクリアランスフラグを含む。クリアランスフラグは処理リクエストのヘッダ部51に含められる。例えば、「真」のクリアランスフラグは、処理対象データセットがオンプレミス環境5内で処理されるべきであり、オフプレミス環境に処理対象データセットを送信及び保存できないことを示すことができる。他方、「偽」のクリアランスフラグは、処理対象データセットがオフプレミス環境に送信可能であることを示すことができる。API選択部21bは、処理リクエストに含まれるクリアランスフラグに応じて、API提供システム7において公開されている複数のAPIから実行APIを選択する。具体的には、クリアランスフラグが「真」の場合にはオンプレミス環境5から公開されているオンプレミスAPIの中から実行APIが選択される。他方、クリアランスフラグが「偽」の場合には、API提供システム1における実行APIの選択と同様に、API提供システム7において公開されているオフプレミス環境のAPI31~36の中から実行APIが選択される。
【0088】
クリアランス処理部21fは、処理リクエストのクリアランスフラグが「真」に設定されている場合に、クリアランスフラグが「偽」に更新されるまで実行APIの選択を待機してもよい。例えば、処理リクエストにおいて要求されている機能がオフプレミス環境で公開されるAPIによってのみ提供されている場合には、オンプレミスAPIを利用して当該処理リクエストを処理することができない。このような場合を想定して、クリアランス処理部21fは、クリアランスフラグが「偽」に更新されるまで実行APIの選択を待機することができる。クリアランス処理部21fは、クリアランスフラグが「真」に設定されている処理リクエストに基づいて実行APIの選択を待機すべきと判定された場合、当該処理リクエストに基づく実行APIの選択を待機するために、当該処理リクエストを一時保持領域71に格納する。クリアランス処理部21fは、クリアランスフラグが「偽」に更新されると、対象の処理リクエストを一時保持領域71から読み出し、オフプレミス環境の実行APIの中から実行APIを選択する処理を行うことができる。
【0089】
クライアントアプリケーション10aのユーザは、処理対象データセットに含まれる情報がパブリックになった場合やその他の適切な場合に、クリアランスフラグを「真」から「偽」へ変更するためのフラグ更新要求をAPIプラットフォーム装置70に送信することができる。あるいはまた、クリアランス処理部21fは、クリアランスフラグを更新すべきか否かを定期的かつ自動的に判定してもよい。ユーザは、クリアランスフラグを「真」から「偽」に変更するための条件(以下、「フラグ変更条件」という。)を予め設定することができる。クリアランス処理部21fは、定期的にフラグ変更条件が満たされたか否かを判定することができる。クリアランス処理部21fは、例えば1日に1度、1時間に一度、又はこれら以外の周期でフラグ変更条件が満たされたか否かを判定することができる。
【0090】
別の例では、クリアランスフラグが「真」に設定されている処理リクエストにおいて要求されている機能をオンプレミスAPIで処理可能な場合であっても、当該オンプレミスAPIを実行するオンプレミス環境5の情報機器に過負荷がかかっている場合又はそれ以外の場合に、クリアランス処理部21fは、当該オンプレミスAPIによる当該処理リクエストの処理を保留することができる。クリアランス処理部21fは、処理リクエストの処理を保留すべきと判定された場合、その処理が保留された処理リクエストを一時保持領域71に格納する。クリアランス処理部21fは、オンプレミスAPIを処理する情報機器の負荷状態を監視し、当該情報機器の負荷が所定レベルを下回った場合に、処理が保留されている処理リクエストを一時保持領域71から読み出して当該オンプレミスAPIに処理させることができる。処理リクエストの処理を保留している間に対象の当該処理リクエストのクリアランスフラグが「偽」に更新された場合には、クリアランス処理部21fは、当該処理リクエストを一時保持領域71から読み出し、当該処理リクエストを処理させる実行APIをオフプレミス環境のAPI31~36の中から選択し、選択された実行APIに当該処理リクエストを処理させてもよい。
【0091】
API提供システム7においても、クライアントアプリケーション10aがAPIプラットフォーム装置20を介してAPIを呼び出し、APIからレスポンスを受け取る処理の流れは、
図5に示したとおりである。ただし、API提供システム7においては、処理リクエストがオンプレミスAPIで処理される可能性があるため、ステップS12における実行APIを選択する処理が、
図6に示されてる処理と異なる。そこで、
図9を参照して、API提供システム7におけるステップS12での実行APIを選択する実行API選択処理の流れを説明する。
図9は、API提供システム7において実行される実行APIを選択する処理の流れを示すフロー図である。
【0092】
まず、ステップS721において、API選択部21bは、受信した処理リクエストのクリアランスフラグの真偽を判定する。クリアランスフラグが「偽」であれば、当該処理リクエストをオフプレミス環境に送信可能であるため、処理はステップS121に進む。その後、ステップS121~S127において
図5で説明したのと同様の処理が行われる。
【0093】
他方、クリアランスフラグが「真」であれば、処理はステップS722に移行する。ステップS722において、クリアランス処理部21fは受信した処理リクエストをオンプレミスAPIで処理可能か否かを判定する。具体的には、クリアランス処理部21fは処理リクエストで要求されている機能を特定し、特定された機能を提供するオンプレミスAPIが存在するか否かを判定する。例えば、オンプレミスAPIの提供機能をAPI管理データ25a又はそれ以外のデータセットとして管理しておくことにより、ステップS722における判定が可能となる。処理リクエストにより要求されている機能を提供するオンプレミスAPIが存在する場合、クリアランス処理部72は、当該オンプレミスAPIを処理する情報機器の負荷状態を取得し、当該情報機器が過負荷か否かを判定する。ステップS722において、処理リクエストにより要求されている機能を提供するオンプレミスAPIが存在し、そのオンプレミスAPIを処理する情報機器の負荷が過負荷でない場合には、当該処理リクエストの処理が可能と判定され、実行API選択処理は、ステップS723に進む。ステップS723において、API選択部21bは、ステップS722で特定された機能を提供するオンプレミスAPIを実行APIとして選択する。他方、ステップS722において、処理リクエストにより要求されている機能を提供するオンプレミスAPIが存在しない場合、又は、処理リクエストにより要求されている機能を提供するオンプレミスAPIが存在していても当該オンプレミスAPIを処理する情報機器が過負荷である場合には、当該処理リクエストの即時処理はできないと判定された場合には、実行API選択処理は、ステップS724に移行する。ステップS724において、クリアランス処理部21fは、処理リクエストの処理が待機状態となった旨をクライアントアプリケーション10aに通知する。次に、ステップS725において、クリアランス処理部21fは、即時処理できないと判定された処理リクエストを一時保持領域71に格納する。
【0094】
具体例を説明する。クライアントアプリケーション10aから受信した処理リクエストにおいて機能IDが「突合」を指定しており、秘密度が「極秘」に設定されており、クリアランスフラグが「偽」に設定されていることを想定する。この場合、クリアランスフラグが「偽」であるから、API選択処理は、ステップS721からステップS121に進む。そして、ステップS121~ステップS127における処理により、機能ID「突合」及び秘密度「極秘」という処理リクエストの設定に従い、API34が実行APIとして選択される。
【0095】
別の具体例について説明する。クライアントアプリケーション10aから受信した処理リクエストにおいて機能IDが「突合」を指定しており、秘密度が「極秘」に設定されており、クリアランスフラグが「真」に設定されていることを想定する。この場合、クリアランスフラグが「真」に設定されているので、API選択処理はステップS721からステップS722に進む。ステップS722において、API選択部21bは、オンプレミス環境5から公開されているAPI37、38の中に「突合」の機能を提供しているAPIが存在するか判定する。上記のとおりAPI38が「突合」の機能を提供しているので、API選択部21bは、次にAPI38を処理する情報機器が過負荷か否かを判定する。過負荷と判定された場合には、ステップS724において処理リクエストの処理が待機状態となった旨がクライアントアプリケーション10aに通知され、処理リクエストは一時保持領域71に格納される。API38を処理する情報機器の過負荷状態が解消されると、API選択処理はステップS723に移行し、ステップS723において処理リクエストが一時保持領域71から読み出されてAPI38が実行APIとして選択される。API38を処理する情報機器の過負荷状態が解消される前に処理リクエストのクリアランスフラグが「偽」に変更された場合は、API選択処理は、ステップS721からステップS121に移行し、以下の各ステップでの処理を経ることにより、機能ID「突合」及び秘密度「極秘」という処理リクエストの設定に従い、API34が実行APIとして選択される。
【0096】
本発明の一実施形態によるAPI提供システム7本変形例によれば、処理対象データセットにオンプレミス環境で処理されるべき(逆にいえば、オフプレミス環境で処理されるべきでない)データが含まれる場合、オンプレミス環境から公開されているオンプレミスAPIの中から実行APIを選択することができる。これにより、APIを利用する場合でも、オフプレミス環境に送信することができないデータを確実にオンプレミス環境に閉じて処理することができる。
【0097】
本発明の一実施形態によるAPI提供システム7では、APIプラットフォーム装置70が監査法人などのクライアントから処理リクエストを受信してAPIで処理する際に、インサイダー取引を構成しうるクリアランスフラグ「真」の処理リクエストを、そうでない処理リクエストとは区別して扱うことが可能となる。したがって、インサイダー取引を構成しうる処理リクエストとそうではない処理リクエストとを監査法人においてマニュアルで区別して処理する場合と比較して、より効率的に処理リクエストを処理できる。また、機械学習などでデータを活用する時に、データの提供がインサイダー取引に当たらないかというクライアントの懸念を払拭できる。
【0098】
上記の各実施形態は、特許請求の範囲にかかる発明を限定するものではない。上記の実施形態で説明されている諸要素が発明の解決手段に必須であるとは限らない。例えば、API提供システム7では、処理リクエストにクリアランスフラグが設定され、また、オンプレミス環境5からオンプレミスAPIが公開されているが、処理リクエストにおいてクリアランスフラグを設定可能とする一方でオンプレミスAPIは備えなくてもよい。この場合、クリアランス処理部21fは、クリアランスフラグが「真」であればその処理リクエストを一時保持領域71に格納し、クリアランスフラグが「偽」に更新されるまで実行APIの選択を待機することができる。クリアランス処理部21fは、クリアランスフラグが「偽」に更新されると、対象の処理リクエストを一時保持領域71から読み出してオフプレミス環境の実行APIに処理させる。また、処理リクエストにクリアランスフラグが設定されない実施形態においても、オンプレミスAPIを利用することにより、低コストで(オフプレミスAPIのベンダーへの利用料金を支払うことなく)応答性がよいオンプレミスAPIを利用することができる。
【0099】
本明細書中で説明される処理及び手順が単一の装置、ソフトウェア、コンポーネント、モジュールによって実行される旨が説明されたとしても、そのような処理または手順は複数の装置、複数のソフトウェア、複数のコンポーネント、及び/又は複数のモジュールによって実行され得る。また、本明細書中で説明されるデータ、テーブル、又はデータベースが単一の記憶装置(ストレージやメモリ)に格納される旨説明されたとしても、そのようなデータ、テーブル、又はデータベースは、単一の装置に備えられた複数の記憶装置または複数の装置に分散して配置された複数の記憶装置に分散して格納され得る。さらに、本明細書において説明されるソフトウェアおよびハードウェアの要素は、それらをより少ない構成要素に統合して、またはより多い構成要素に分解することによって実現することも可能である。
【0100】
本明細書において単数形で表される構成要素は、矛盾を生じさせない限り、複数形を含むものとする。
【符号の説明】
【0101】
1、7 API提供システム
5 オンプレミス環境
A~D ベンダー環境(オフプレミス環境)
10 ユーザ端末
10a クライアントアプリケーション
20、70 APIプラットフォーム装置
21 プロセッサ
21a リクエスト受信部
21b API選択部
21c リクエスト送信部
21d レスポンス受信部
21e レスポンス送信部
21f クリアランス処理部
25 ストレージ
25a API管理データ
25b API管理プログラム
31~38 API
71 一時保持領域