JP6617617B2 - 管理装置、管理プログラム及び管理方法 - Google Patents

管理装置、管理プログラム及び管理方法 Download PDF

Info

Publication number
JP6617617B2
JP6617617B2 JP2016047602A JP2016047602A JP6617617B2 JP 6617617 B2 JP6617617 B2 JP 6617617B2 JP 2016047602 A JP2016047602 A JP 2016047602A JP 2016047602 A JP2016047602 A JP 2016047602A JP 6617617 B2 JP6617617 B2 JP 6617617B2
Authority
JP
Japan
Prior art keywords
application
api
request
stability
state transition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016047602A
Other languages
English (en)
Other versions
JP2017162312A (ja
Inventor
功作 木村
功作 木村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016047602A priority Critical patent/JP6617617B2/ja
Priority to US15/407,041 priority patent/US10318727B2/en
Publication of JP2017162312A publication Critical patent/JP2017162312A/ja
Application granted granted Critical
Publication of JP6617617B2 publication Critical patent/JP6617617B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1425Traffic logging, e.g. anomaly detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/60Context-dependent security
    • H04W12/61Time-dependent

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、管理装置、管理プログラム及び管理方法に関する。
Application Programming Interface(API)は、外部のアプリケーション(アプリ)システムから、あるデータ及び機能を利用するために提供されるインタフェースであり、データの提供者或いは機能の開発者によって作成、公開される。現在では、HyperText Transfer Protocol(HTTP)でアクセス可能なWeb APIの形でAPIが公開されることが主流となっている。
近年、API提供の利便性及び安全性の向上のために、APIゲートウェイという種類の製品が発表されている。このAPIゲートウェイは、APIを提供するバックエンドサーバ(アプリサーバ)側にリバースプロキシの形で導入され、APIの提供を管理する。外部アプリケーション或いはシステム開発者等のAPI利用者は、APIゲートウェイを経由して、公開されているAPIを使い、新製品の開発や、既存製品の機能の拡充を行うことができる。今後、企業がAPIを通して自社製品、業務、データ等を多くの企業や個人と繋げて新たな価値を創造することが重要であると考えられている。この取り組みを推進する技術として、APIゲートウェイが注目されている。
このAPIゲートウェイは、API利用者によるAPI(主にWeb API)活用のために種々の機能を有する。具体的には、APIゲートウェイは、各アプリケーションに対して、アプリケーションを認証し識別するためのIDであるAPIキーを提供する。APIゲートウェイは、このAPIキーによって、アプリケーションごとに、APIのURIやパラメータ等の管理、APIごとの単位時間あたりのアクセス可能回数の上限値(レートリミット)やアクセス範囲の制御、呼び出し回数等の統計情報の記録や分析を行っている。
近年、APIのレートリミット設定方法として、アプリケーションとデータとの優先度に応じてレートリミットを設定する制御方法が提案されている。提案の制御方法では、事前に定義された閾値を考慮し、予測アルゴリズムを用いて時間帯ごとに優先度を導出している。なお、従来、クライアントPCの操作ログと正規ログとのマッチング度に応じて、ユーザによる悪意のある操作を検知する方法が提案されている。
米国特許出願公開第2014/0282626号明細書 特開2009−20812号公報
ところで、APIゲートウェイを用いた既存の業務システムのAPI化による業務効率化が求められている。既存の業務システムのAPI化では、元々のシステムの設計によっては、特殊な手順によるAPIアクセスをアプリケーション側に提供する場合がある。この場合、APIのアクセス手順によっては、システムに障害が生じる可能性がある。
また、アプリケーションに対してAPIキーが発行された後に、アプリケーションが改版されてアプリケーションのアクセス手順が変化する場合がある。例えば、改版されたアプリケーションが、改版でバグを含むことによって、誤って、推奨されない手順でAPIにアクセスしてしまう場合である。
さらに、アクセス手順が異なる別のアプリケーションから同じAPIキーによってAPIが利用される可能性もある。言い換えると、APIキーが悪意のあるアプリケーションに使用される場合である。この場合、悪意のあるアプリケーションによって、API提供者が損害を被るようなデータ及び機能の利用が実行されるおそれがある。
しかしながら、従来の方法は、レートリミットを設定するためにアプリケーションとデータとの優先度を導出する手法であるため、システムに危害を与えるような、改版や悪意の可能性があるアプリケーションを検知することが困難であった。このため、従来の方法では、改版や悪意の可能性があるアプリケーションもAPIへのアクセスが可能であったため、改版や悪意の可能性があるアプリケーションからAPIで提供されるデータや機能を保護することが難しいという問題があった。なお、特許文献2記載の技術は、ユーザによる悪意のある操作の検知は可能であるものの、改版や悪意の可能性があるアプリケーションを検知することは困難であった。
本発明は、上記に鑑みてなされたものであって、APIで提供されるデータや機能を保護することができる管理装置、管理プログラム及び管理方法を提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明に係る管理装置は、記憶部と、安定度算出部と、変更部と、判定部とを有する。記憶部は、アプリケーションが送信したAPIリクエストの履歴を示すリクエスト履歴情報と、アプリケーションの単位時間あたりのAPIアクセス可能回数を示すアクセス回数管理表と、を記憶する。安定度算出部は、APIリクエストを受信した場合に、該APIリクエストを送信したアプリケーションについて、アプリケーションによるAPIリクエストの内容の遷移とリクエスト履歴情報とに基づいて安定度を算出する。変更部は、安定度に応じてアプリケーションのAPIアクセス可能回数を変更する。判定部は、アプリケーションによるAPIリクエストがあった場合に、アプリケーションのアクセス回数と、アプリケーションのAPIアクセス可能回数とを比較し、APIリクエストの受付を行うか否かを判定する。
本願の開示する管理装置の1つの態様によれば、管理装置は、APIで提供されるデータや機能を保護することができる。
図1は、本実施例に係るAPI管理システムの構成を示す図である。 図2は、APIゲートウェイの構成を示すブロック図である。 図3は、ID管理表のデータ構造の一例を示す図である。 図4は、APIキー管理表のデータ構造の一例を示す図である。 図5は、API一覧表のデータ構造の一例を示す図である。 図6は、リクエスト履歴管理表のデータ構造の一例を示す図である。 図7は、状態遷移表のデータ構成の一例を示す図である。 図8は、アクセス回数管理表のデータ構造の一例を示す図である。 図9は、第1アプリケーションについての各状態遷移の一例を説明するための図である。 図10は、第1アプリケーションについての各状態遷移の挙動の変化の一例を説明するための図である。 図11は、状態遷移インスタンスの一例を示す図である。 図12は、アクセス回数管理表の更新を説明する図である。 図13は、実施例に係るAPI管理処理の一例を示す図である。 図14は、実施例に係る新規アプリ登録処理の手順の一例を示すフローチャートである。 図15は、実施例に係るリクエスト受付可否判定処理の手順の一例を示すフローチャートである。 図16は、実施例に係る状態遷移インスタンス作成処理の手順の一例を示すフローチャートである。 図17は、安定度算出処理の手順の一例を示す図である。 図18は、レートリミット算出処理の手順の一例を示す図である。 図19は、API管理プログラムを実行するコンピュータを示す図である。
以下に、本願の開示する管理装置、管理プログラム及び管理方法の実施例を図面に基づいて詳細に説明する。なお、この実施例は一例であり、構成等は限定しない。
[API管理システムの一例]
本実施例に係る管理システムとして、APIの提供を管理するAPI管理システムを例に説明する。図1は、本実施例に係るAPI管理システムの構成を示す図である。図1に示すように、API管理システム1は、データ或いは機能を提供するアプリサーバ10と、APIゲートウェイ(管理装置)20と、を有する。
アプリサーバ10は、データの提供者或いは機能の開発者によって作成されたデータ或いは機能を提供するサーバ装置である。図1の例では、アプリサーバを1台としたが、これに限定されず、任意の数とすることができる。
APIゲートウェイ20は、アプリサーバ10側にリバースプロキシの形で導入されたサーバ装置であり、アプリサーバ10が提供するデータ或いは機能をAPI化し、これらのAPIの提供を管理する。APIゲートウェイ20は、アプリサーバ10と、ネットワークを介して通信可能に接続される。このネットワークの形態としては、有線または無線を問わず、インターネット(Internet)、LAN(Local Area Network)やVPN(Virtual Private Network)などの任意の通信網が挙げられる。
APIゲートウェイ20は、APIを利用する複数のアプリケーション(例えば、第1アプリケーション30a〜第3アプリケーション30c)と、ネットワーク等を介して通信可能に接続する。したがって、APIゲートウェイ20は、APIを利用するアプリケーションとアプリサーバ10との間に設けられる。APIゲートウェイ20は、各アプリケーションに対し、アプリケーションのIDを対応付けたAPIキーを付与し、アプリケーションの認証を、このAPIキーを用いて実行している。
各アプリケーションは、多数のユーザによって利用されている。例えば、第1アプリケーション30aは、ユーザA〜Cが利用しており、第2アプリケーション30bは、ユーザD,Eが利用している。なお、APIゲートウェイ20は、ユーザ認証も実施している。
ここで、APIゲートウェイ20は、APIキーを用いて各種処理を行っている。具体的には、APIゲートウェイ20は、APIキーを用いて、アプリケーションごとに、APIのURI(Uniform Resource Locator)やパラメータ等の管理を行っている。また、APIゲートウェイ20は、APIキーを用いて、APIごとのアクセス可能回数の上限値やアクセス範囲の制御、呼び出し(APIリクエスト)回数等の統計情報の記録や分析等を行っている。
そして、APIゲートウェイ20は、APIリクエストの挙動が過去の挙動と比して変化したアプリケーションについては、単位時間あたりのAPIアクセス可能回数の上限値(レートリミット)を下げる。言い換えると、APIゲートウェイ20は、改版アプリケーションや悪意アプリケーションに変化した可能性があるアプリケーションに対して、APIアクセスを制限する。これによって、APIゲートウェイ20は、アプリケーションが改版アプリケーションや悪意アプリケーションに変化してもAPIを保護している。以下、APIゲートウェイ20について説明する。
[APIゲートウェイの構成]
図2は、図1に示すAPIゲートウェイ20の構成を示すブロック図である。図2に示すように、APIゲートウェイ20は、通信インタフェース(I/F)部21、記憶部22及び制御部23を有する。
通信I/F部21は、他の装置との間で通信制御を行うインタフェースである。通信I/F部21は、ネットワークを介して他の装置と各種の情報を送受信する。例えば、通信I/F部21は、アプリケーションからAPIの利用申請やAPIリクエストに関する各種の情報を受信する。また、通信I/F部21は、アプリサーバ10から提供対象のデータ或いは機能に関する各種の情報を受信する。通信I/F部21としては、LANカードなどのネットワークインタフェースカードを採用できる。
記憶部22は、フラッシュメモリなどの半導体メモリ素子、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部22は、RAM(Random Access Memory)、フラッシュメモリ、NVSRAM(Non Volatile Static Random Access Memory)などのデータを書き換え可能な半導体メモリであってもよい。
記憶部22は、制御部23で実行されるOS(Operating System)や受信される要求を処理する各種プログラムを記憶する。さらに、記憶部22は、制御部23で実行されるプログラムで用いられる各種データを記憶する。例えば、記憶部22は、ID管理表221、APIキー管理表222、API一覧表223、リクエスト履歴管理表224、状態遷移表225及びアクセス回数管理表226を有する。
ID管理表221は、ユーザと、ユーザIDとを対応付けた情報を保持する表である。図3は、ID管理表221のデータ構造の一例を示す図である。図3に示すように、ID管理表221は、ユーザの識別情報と、ユーザID(「user_id」)とを対応付ける。例えば、「ユーザA」には、ユーザID「abc」が対応している。APIゲートウェイ20は、「ユーザA」をユーザID「abc」として識別する。
APIキー管理表222は、アプリケーションと、APIキーとを対応付けた情報を保持する表である。図4は、APIキー管理表222のデータ構造の一例を示す図である。図4に示すように、APIキー管理表222は、アプリケーションの識別情報と、APIキーとを対応付ける。図4の例では、「第1アプリケーション」には、APIキー「123」が割り当てられている。
API一覧表223は、APIゲートウェイ20がアプリケーションに対して提供するアプリサーバ10のAPIの一覧を示す表である。図5は、API一覧表223のデータ構造の一例を示す図である。図5に示すように、API一覧表223は、APIゲートウェイ20における、URIが指定する情報に対する、「GET」,「POST」,「PUT」,「DELETE」のHTTPメソッドの実行の可否を対応付ける。APIゲートウェイ20は、このAPI一覧表223に従って、APIリクエストを受信したアプリケーションに対し、APIの提供を管理する。
例えば、APIゲートウェイ20は、URIが「/attributes/{user_id}(ユーザの属性)」を指定した「GET」メソッドのAPIリクエストを受信した場合には、このAPIリクエストを送信したアプリケーションに対し、ユーザの属性を取得することを許可する。なお、本実施例では、APIゲートウェイ20が提供するAPIの初期状態は、「GET/attributes/{user_id}」とする。
さらに、APIゲートウェイ20が、URIが「/attributes/{user_id}」を指定したAPIリクエストを受信した場合について説明する。この場合、APIゲートウェイ20は、APIリクエストが「POST」メソッドの場合は、アプリケーションに対してリソース作成実行を禁止し、「PUT」メソッドの場合はアプリケーションに対してユーザの属性を更新することを許可する。ただし、APIゲートウェイ20は、ユーザ本人のみ更新を可能とする。また、APIゲートウェイ20は、APIリクエストが、「DELETE」メソッドの場合はリソースの削除を禁止する。
リクエスト履歴管理表224は、アプリケーションごとに、アプリケーションが送信したAPIリクエストの内容を時系列に示す表である。図6は、リクエスト履歴管理表224のデータ構造の一例を示す図である。
例えば、図6に示すように、リクエスト履歴管理表224は、各アプリケーションのAPIキーと、ユーザIDと、APIのリクエストURIと、このURIに対するHTTPメソッドと、パラメータと、APIリクエスト時刻と、を対応付ける。リクエスト履歴管理表224は、例えば図6の1行目に、APIキー「123」であるアプリケーションから、「2015/06/87 09:00:00」にリクエストURIが「/attributes/{abc}」を指定した「GET」メソッドのAPIリクエストを受信したことを記憶する。APIリクエストを受信すると、状態遷移インスタンス作成部233(後述)が、このAPIリクエストの内容をリクエスト履歴管理表224に記録する。
状態遷移表225は、アプリケーションごとに作成された状態遷移表であって、アプリケーションによる過去の各APIリクエストに応じて遷移した各状態間の遷移確率を示す表である。
図7は、状態遷移表225のデータ構成の一例を示す図である。図7に示すように、状態遷移表225は、アプリケーションの識別情報、APIキーの識別内容、遷移前の状態(「state1」)、APIリクエストによる遷移後の状態(「state2」)、及び、「state1」から「state2」への遷移確率を対応づける。状態遷移表225は、例えば図7の1行目に、第1アプリケーション30aが「GET/attributes/{user_id}」状態から「GET /info/{id}」状態に「0.6」の確率で遷移することを記憶する。状態遷移表225の更新は、安定度算出部234(後述)が、状態遷移インスタンス作成部233が作成した状態遷移インスタンスを基に実行する。
アクセス回数管理表226は、アプリケーションごとに、アプリケーションのアクセスと、レートリミットとを対応付けた情報を保持する表である。図8は、アクセス回数管理表226のデータ構造の一例を示す図である。図8に示すように、アクセス回数管理表226は、アプリケーションの識別情報と、アクセス回数と、レートリミットとを対応付ける。
例えば、図8に示すように、アクセス回数管理表226は、第1アプリケーション30aのアクセス回数が100回であることを記憶する。そして、アクセス回数管理表226は、第1アプリケーション30aのレートリミットが300回であることを記憶する。
レートリミットの初期値は、アクセス回数管理表226へのアプリケーションの新規登録時に新規アプリ登録部232(後述)が付与する。その後は、レートリミット算出部235(後述)が、レートリミットの値を定期的に更新する。また、アクセス回数管理表226のアクセス回数は、リクエスト受付可否判定部236(後述)がインクリメント或いはリセットする。なお、単位時間は、1時間であり、レートリミットの初期値は、例えば、1時間あたり50回である。そして、レートリミットの最小値は、例えば、1時間あたり10回である。アクセス回数管理表226は、例えば1時間ごとに更新され、例えば毎時00分に更新される。
図2に戻り、制御部23は、APIゲートウェイ20を制御するデバイスである。制御部23としては、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等の電子回路や、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の集積回路を採用できる。制御部23は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部23は、各種のプログラムが動作することにより各種の処理部として機能する。
制御部23は、APIゲートウェイ管理部231、新規アプリ登録部232、状態遷移インスタンス作成部233、安定度算出部234、レートリミット算出部235(変更部)及びリクエスト受付可否判定部236(判定部)を有する。
APIゲートウェイ管理部231は、アプリケーションから受け付けた情報等をアプリサーバ10に送信する。また、APIゲートウェイ管理部231は、アプリサーバ10による処理結果の情報をアプリケーションへ送信する。APIゲートウェイ管理部231は、アプリケーションと、アプリサーバ10との間の通信を管理する。APIゲートウェイ管理部231は、新たなアプリケーションから利用申請があった場合には、このアプリケーションに対してAPIキーを発行する。APIゲートウェイ20は、このAPIキーを用いて、アプリケーションの認証を実行する。
新規アプリ登録部232は、アプリケーションより利用申請を受信した場合、APIゲートウェイ管理部231に利用申請を送信し、発行されたAPIキーをアプリケーションに返却する。新規アプリ登録部232は、アクセス回数管理表226に、発行されたAPIキーを登録し、このAPIキーのアプリケーションに対応するレートリミットを所定の初期値に設定する。
状態遷移インスタンス作成部233は、各アプリケーションからのAPIリクエストを受信した場合、APIリクエストの種類、パラメータ、時刻情報等をリクエスト履歴管理表224に記録する。状態遷移インスタンス作成部233は、APIキー、ユーザID、APIのリクエストURI、このURIに対するHTTPメソッド、パラメータ及びAPIリクエスト時刻をリクエスト履歴管理表224に記録する。
また、状態遷移インスタンス作成部233は、APIリクエストを送信したアプリケーションの挙動を求めるために、APIリクエストを送信したアプリケーションについて状態遷移インスタンスを作成する。この状態遷移インスタンスとは、あるアプリケーションのあるユーザについて、ログインリクエストからログアウトリクエスト、或いは、タイムアウトまでの間に、APIリクエストに応じて遷移した各状態間の遷移確率を示すものである。ここで、ログインリクエストは、あるアプリケーションのあるユーザによる最初のAPIリクエストである。ログアウトリクエストは、APIサーバが事前に指定した種類のAPIリクエストである。また、あるユーザのリクエストが最後に到着してから事前に定めた時間が経過した場合が、タイムアウトとなる。
安定度算出部234は、APIリクエストを受信した場合に該APIリクエストを送信したアプリケーションについて、アプリケーションによるAPIリクエストの内容の遷移がリクエスト履歴管理表224に対してどの程度安定しているかを示す安定度を算出する。具体的には、安定度算出部234は、APIリクエストを送信したアプリケーションについて、状態遷移インスタンス作成部233が作成した状態遷移インスタンスと、記憶部22の状態遷移表225とを比較して安定度を算出する。例えば、安定度算出部234は、APIリクエストを送信したアプリケーションについて、状態遷移インスタンス作成部233が作成した状態遷移インスタンスと状態遷移表225との一致度に応じて安定度を増減する。
レートリミット算出部235は、APIリクエストを送信したアプリケーションについて、安定度算出部234が算出した安定度に応じて該アプリケーションのレートリミットを変更する。例えば、レートリミット算出部235は、安定度算出部234が算出した安定度の増減に応じてレートリミットを増減する。具体的には、レートリミット算出部235は、安定度算出部234が算出した安定度の値が増えた場合にはレートリミットの値を増やす。一方、レートリミット算出部235は、安定度算出部234が算出した安定度の値が減った場合にはレートリミットの値を減らす。或いは、レートリミット算出部235は、安定度算出部234が算出した安定度の値が所定の閾値を超えた場合にはレートリミットの値を増やす。一方、レートリミット算出部235は、安定度算出部234が算出した安定度の値が所定の閾値以下である場合にはレートリミットの値を減らす。レートリミット算出部235は、所定時間ごとに、記憶部22のアクセス回数管理表226のレートリミットを変更した値に更新する。
リクエスト受付可否判定部236は、アプリケーションによるAPIリクエストがあった場合に、このアプリケーションに対してAPIリクエストの受付を行うか否かを判定する。具体的には、リクエスト受付可否判定部236は、このアプリケーションについて、アクセス回数管理表226におけるアクセス回数とアクセス回数管理表226におけるレートリミットとを比較し、APIリクエストの受付を行うか否かを判定する。なお、リクエスト受付可否判定部236は、所定の単位時間ごとに、アクセス回数管理表226における各アプリケーションのアクセス回数をリセットする。
例えば、リクエスト受付可否判定部236は、APIリクエストを送信したアプリケーションのアクセス回数が、このアプリケーションのレートリミットに達する場合には、このアプリケーションに対しAPIリクエストの受付を拒否するメッセージを送信する。一方、リクエスト受付可否判定部236は、APIリクエストを送信したアプリケーションのアクセス回数が、このアプリケーションのレートリミット未満の場合には、このアプリケーションに対しAPIリクエストの受付を受理するメッセージを送信する。
具体的には、アクセス回数管理表226が図8に示す内容である場合、第1アプリケーション30aは、アクセス回数が100回でありレートリミットが300回であるため、所定の単位時間の残り時間では、200回のAPIリクエストを送信することができる。このため、リクエスト受付可否判定部236は、第1アプリケーション30aによるAPIリクエストを受信した場合には、この第1アプリケーション30aに対しAPIリクエストの受付を受理するメッセージを送信する。
一方、第2アプリケーション30bは、アクセス回数が200回であり、200回であるレートリミットに達している。このため、リクエスト受付可否判定部236は、第2アプリケーション30bによるAPIリクエストを受信した場合、この第2アプリケーション30bに対しAPIリクエストの受付を拒否するメッセージを送信する。
このように、APIゲートウェイ20は、状態遷移インスタンス作成部233が作成した状態遷移インスタンスを用いて、APIリクエストを送信したアプリケーションの実際の挙動を求めている。そこで、まず、あるアプリケーションについての各状態遷移の挙動の変化の一例を説明する。
[アプリケーションの状態遷移]
まず、図9及び図10を参照して、アプリケーションによるAPIリクエストに応じて遷移した各状態及び各状態間の遷移確率について説明する。図9は、第1アプリケーションについての各状態遷移の一例を説明するための図である。図10は、第1アプリケーションについての各状態遷移の挙動の変化の一例を説明するための図である。
例えば、本実施例では、APIゲートウェイ20が提供するAPIの初期状態(最初のAPI呼び出し:initial)は、「GET/attributes/{user_id}」としており、任意の状態から、ログアウト或いはタイムアウトが発生し得る。
そして、図9に示すように、第1アプリケーション30aでは、これまでの各APIリクエストに応じて、この初期状態、「GET/info/{id}」状態及び「POST/info」状態のそれぞれの間を遷移している。なお、「state1」と「state2」が同じ状態である場合もある。また、「「state1」から「state2」への遷移確率」は、「「state1」から「state2」への遷移回数」を、「「state1」からの全ての遷移回数」で除することによって計算することができる。なお、任意の状態(「state1」)について、全ての次の状態(「state2」)への遷移確率の総和は1になる。
これまでの第1アプリケーション30aによるAPIリクエストによる「GET/attributes/{user_id}」状態から「GET/info/{id}」状態への遷移確率は「0.6」であり、その逆の遷移は「0.7」であった。これに対し、「GET/attributes/{user_id}」状態から「POST/info」状態への遷移確率は「0.1」であった。このため、第1アプリケーション30aは、「GET/attributes/{user_id}」状態と「POST/info」状態との間の遷移と比較して、「GET/attributes/{user_id}」状態と「GET/info/{id}」状態との間の遷移を多く行うような挙動を行っていた。
これに対し、第1アプリケーション30aに対して、改版やAPIキーの乗っ取りがあった場合には、これまでと比べて挙動が変わる場合が多い。例えば、図10に示すように、初期状態である「GET/attributes/{user_id}」状態から「GET/info/{id}」状態への遷移確率が「0.4」まで減っている(図10のA1参照)。そして、これまでなかった「GET/attributes/{other_user_id}」状態が生じる(図10のA2参照)。さらに、この「GET/attributes/{other_user_id}」状態から「GET/attributes/{other_user_id}」状態の遷移確率は「0.9」と高く、「GET/attributes/{other_user_id}」状態と「GET/attributes/{user_id}」状態との間の遷移確率は「0.1」に変化する。
このように、アプリケーションに対して改版やAPIキーの乗っ取りがあった場合には、APIリクエストに応じて遷移する状態や状態間の遷移確率、つまり、アプリケーションの挙動に変化が生じる。そこで、アプリケーションの挙動の変化の有無を求めるために、状態遷移インスタンス作成部233が、APIリクエストを送信したアプリケーションの挙動を示す状態遷移インスタンスを作成する。次に、状態遷移インスタンス作成部233の処理について説明する。
[状態遷移インスタンス作成部の処理]
まず、状態遷移インスタンス作成部233は、APIリクエストを受信すると、APIリクエストの内容、APIリクエストを送信したアプリケーションのAPIキー、ユーザID及び受信時刻を対応付けて、リクエスト履歴管理表224に順次記録する。
そして、状態遷移インスタンス作成部233は、所定のタイミングで、これまでにリクエスト履歴管理表224に蓄積された該APIキーに対応する全てのAPIリクエスト列を読み出す。具体的には、状態遷移インスタンス作成部233は、あるAPIキーのアプリケーションについて、ログアウトリクエストを受信、或いは、あるユーザのタイムアウトが生じると、APIリクエスト列の読み出しを行う。また、状態遷移インスタンス作成部233は、ログインリクエストからログアウトリクエスト、或いは、タイムアウトまでの間までの、APIキーに対応するAPIリクエスト列を読み出す。
そして、状態遷移インスタンス作成部233は、読み出した全APIリクエスト列を時系列順にソートした後、このAPIキーに対応するアプリケーションの、「state1」と「state2」との組み合わせ、及び、「state1」から「state2」への遷移確率を求める。
ここで、APIのそれぞれに引数について、値が異なる場合に、異なる状態とみなすか、或いは、同じ状態とみなすかは、アプリサーバ10等の制御によって予め決まっている。すなわち、属性ごとに状態の扱いは予め決まっている。
例えば、「/data/{id}」は、「id」の値に関係なく全て同じ状態とする。そして、「/attributes/{user_id}」は、「user_id」がユーザ自身か、或いは、他のユーザであるかの2状態で区別する。この決まりに従って、状態遷移インスタンス作成部233は、このAPIキーに対応するアプリケーションの各状態を判別する。なお、前述したように、「「state1」から「state2」への遷移確率」は、「「state1」から「state2」への遷移回数」を、「「state1」からの全ての遷移回数」で除することによって計算することができる。
図11は、状態遷移インスタンスの一例を示す図である。状態遷移インスタンス作成部233は、図10に示す挙動に変化した第1アプリケーション30aについては、図11に示す状態遷移インスタンス225aを作成する。
図11に示すように、状態遷移インスタンス225aは、「GET/attributes/{user_id}」状態から「GET/info/{id}」状態への遷移確率が「0.4」であることを示す(図11のA11参照)。そして、状態遷移インスタンス225aは、図11のA12に示すように、状態遷移表225が示す状態とは異なる新しい状態を含む。この新しい状態とは、「GET /attributes/{other_user_id}」状態である。そして、状態遷移インスタンス225aは、この新しい状態遷移として、「GET/attributes/{user_id}」状態との間の遷移、「GET /attributes/{other_user_id}」状態と「GET /attributes/{other_user_id}」状態との間の遷移を含む。
このように、状態遷移インスタンス作成部233が、APIリクエストを行ったアプリケーションについての状態遷移インスタンスを作成することによって、このアプリケーションの現在の挙動と、状態遷移表225が示す過去の挙動とが比較可能となる。
この状態遷移インスタンス作成部233が作成した状態遷移インスタンス225aを用いて、安定度算出部234は、例えば第1アプリケーション30aの安定度を算出する。そこで、次に、安定度算出部234による安定度算出処理について説明する。
[安定度算出部の処理]
安定度算出部234は、状態遷移インスタンス作成部233が作成した状態遷移インスタンスと、記憶部22が記憶する状態遷移表225との一致度に応じて安定度を増減する。この安定度算出部234は、安定度を算出することによって、APIリクエストの挙動が過去の挙動と比して変化したアプリケーションを判別している。
具体的には、安定度算出部234は、状態遷移インスタンスが状態遷移表225に示されていない状態を含む場合には、状態遷移インスタンスに対応するアプリケーションが、APIリクエストの挙動が過去の挙動と比して大きく変化したものであると判断する。したがって、この場合には、安定度算出部234は、安定度を最も少ない値(例えば「0」)と算出する。
そして、安定度算出部234は、状態遷移インスタンスが状態遷移表225に示されていない状態遷移を含む場合には、状態遷移インスタンスに対応するアプリケーションが、APIリクエストの挙動が過去の挙動と比して変化したものであると判断する。したがって、この場合には、安定度をより少ない値(例えば「1」)と算出する。
そして、安定度算出部234は、状態遷移インスタンスの遷移確率と状態遷移表225の遷移確率との一致度が所定値よりも低い場合、状態遷移インスタンスに対応するアプリケーションが、過去の挙動からの変化が小さいものであると判断する。したがって、この場合には、安定度算出部234は、安定度をより多い値(例えば「2」)と算出する。なお、安定度算出部234は、例えば、文字列の編集距離を計算するアルゴリズムを用いて、状態遷移インスタンスと状態遷移表225との一致度を算出する。
そして、安定度算出部234は、状態遷移インスタンスの遷移確率と状態遷移表225の遷移確率との一致度が所定値以上である場合、状態遷移インスタンスに対応するアプリケーションが、過去の挙動からの変化が最も小さいものであると判断する。したがって、この場合には、安定度算出部234は、安定度を最も多い値(例えば「3」)と算出する。
例えば、第1アプリケーション30aについて、図11に示す状態遷移インスタンス225aと、図7に示す状態遷移表225との一致状態を判断する場合について説明する。この場合、図11に示すように、「GET/attributes/{user_id}」状態から「GET /info/{id}」状態への遷移確率については、状態遷移表225が「0.6」であるのに対し、状態遷移インスタンス225aでは「0.4」に低下している(図11のA11参照)。さらに、状態遷移インスタンス225aは、状態遷移表225と比較して、「GET/attributes/{other_user_id}」状態を新たに含む(図11のA12参照)。
したがって、安定度算出部234は、状態遷移インスタンス225aが状態遷移表225に示されていない状態を含むと判断し、この状態遷移インスタンス225aに対する安定度を「0」と算出する(図11の矢印A13参照)。
このように、安定度算出部234は、安定度を算出することによって、状態遷移インスタンスに対応するアプリケーションの挙動が過去の挙動と比して、どの程度変化したかを数値化している。この安定度によって、APIリクエストの挙動が過去の挙動と比して変化したアプリケーションを判別することができる。
例えば、安定度が低いアプリケーションほど、APIリクエストの挙動が過去の挙動に対して大きく変化したアプリケーションであると言える。言い換えると、このアプリケーションは、改版アプリケーションや悪意アプリケーションに変化したアプリケーションであるおそれが高い。また、安定度が高いアプリケーションほど、APIリクエストの挙動の、過去の挙動に対する変化が小さいアプリケーションであると言える。言い換えると、このアプリケーションは、改版アプリケーションや悪意アプリケーションに変化したアプリケーションであるおそれが低い。
安定度算出部234は、算出した安定度をレートリミット算出部235に出力する。このため、次に、レートリミット算出部235によるレートリミット算出処理について説明する。なお、安定度算出部234は、安定度を算出した後に、この第1アプリケーション30aについて、状態遷移インスタンス225aが示す状態遷移の内容と各状態間の遷移確率とを用いて、状態遷移表225を更新する。
[レートリミット算出部の処理]
レートリミット算出部235は、安定度算出部234が出力したアプリケーションの安定度の増減に応じて、このアプリケーションのレートリミットを増減する。そして、レートリミット算出部235は、アクセス回数管理表226のレートリミットの値を、変更した値に更新する。
具体的には、レートリミット算出部235は、安定度が最も少ない場合、例えば、安定度が「0」である場合、このアプリケーションのレートリミットを予め設定した最小値(例えば「10」)に変更する。そして、レートリミット算出部235は、安定度がより少ない場合、例えば、安定度が「1」である場合、このアプリケーションのレートリミットを前回設定値から所定値(例えば「5」)を減算した値に変更する。そして、レートリミット算出部235は、安定度がより多い場合、例えば、安定度が「2」である場合、このアプリケーションのレートリミットを前回設定値のまま維持する。また、レートリミット算出部235は、安定度が最も高い場合、例えば安定度が「3」である場合、レートリミットを前回設定値に所定値(例えば「5」)を加算した値に変更する。なお、レートリミットについては、上限値或いは下限値を予め設定してもよい。
図12は、アクセス回数管理表226の更新を説明する図である。安定度算出部234によって安定度が「0」と算出された第1アプリケーション30aについて、レートリミット算出部235は、レートリミットが「300」であるアクセス回数管理表226a(図12の(a)参照)から、レートリミットを「10」に変更したアクセス回数管理表226a(図12の(b)参照)に更新する。なお、単位時間が経過していた場合には、全アプリケーションについてのアクセス回数は、リクエスト受付可否判定部236がリセットする。
この結果、APIゲートウェイ20は、安定度が「0」である第1アプリケーション30aに対してアクセス回数を制限することができる。そして、APIゲートウェイ20は、安定度が「1」である場合には、レートリミットを前回回数から減らすことで、アクセス回数を下げることができる。また、APIゲートウェイ20は、安定度が「2」である場合には、レートリミットを変更せず、安定度が「3」である場合には、レートリミットを増やしている。
このように、APIゲートウェイ20は、安定度の低いアプリケーションについては、改版アプリケーションや悪意アプリケーションに変化したアプリケーションであるおそれが高いため、単位時間あたりのレートリミットを下げている。これによって、APIゲートウェイ20は、改版アプリケーションや悪意アプリケーションに変化したアプリケーションからAPIのデータ機能を保護することができる。
一方、APIゲートウェイ20は、安定度の高いアプリケーションについては、改版アプリケーションや悪意アプリケーションに変化したアプリケーションであるおそれが低いため、単位時間あたりのレートリミットを維持或いは上げている。これによって、APIゲートウェイ20は、改版アプリケーションや悪意アプリケーションに変化したアプリケーションであるおそれが低いアプリケーションについては、API提供の利便性を高めている。そこで、次に、APIゲートウェイ20におけるAPI管理処理の全体の流れを説明する。
[API管理処理の流れ]
図13は、実施例に係るAPI管理処理の一例を説明する図である。まず、APIゲートウェイ20では、新規アプリ登録部232が、アプリケーション30より利用申請(図13の(1)参照)を受信すると、APIゲートウェイ管理部231に利用申請を送信する(図13の(2)参照)。
そして、新規アプリ登録部232が、発行されたAPIキー(図13の(3)参照)をこのAPIキーをアクセス回数管理表226に登録する(図13の(4)参照)。この際、新規アプリ登録部232は、このAPIキーに対応するアプリケーション(例えば第2アプリケーション)について、レートリミットを初期値(例えば「50」)に設定する(図13のセルC1の左表Ta参照)。続いて、新規アプリ登録部232が、アプリケーション30にAPIキーを返却する(図13の(5)参照)。
続いて、アプリケーション30によるAPIリクエストを受信した場合(図13の(6)参照)、リクエスト受付可否判定部236は、アクセス回数管理表226から、このアプリケーション30のアクセス回数とレートリミットとを読み出す(図13の(7)参照)。
アプリケーション30のアクセス回数がレートリミットに達していた場合、リクエスト受付可否判定部236は、APIリクエストを拒否し(図13の(8)参照)、エラーレスポンス(図13の(9)参照)をアプリケーション30に送信する。一方、アプリケーション30のアクセス回数がレートリミット未満である場合、リクエスト受付可否判定部236は、APIリクエストを受理し(図13の(10)参照)、アクセス回数管理表226のアクセス回数を加算する。そして、リクエスト受付可否判定部236は、APIハンドラ11によるレスポンスを(図13の(11)参照)をアプリケーション30に送信する。
また、状態遷移インスタンス作成部233は、受信したAPIリクエストの内容を時系列に、リクエスト履歴管理表224に記録する。そして、状態遷移インスタンス作成部233は、一定のタイミングで、状態遷移インスタンスを作成し、安定度算出部234に出力する(図13の(12)参照)。状態遷移インスタンスは、このアプリケーション30について、ログインリクエストからログアウトリクエスト或いはタイムアウトの間にAPIリクエストに応じて遷移した各状態間の遷移確率を示すものである。状態遷移インスタンス作成部233は、リクエスト履歴管理表224から、このアプリケーション30のリクエスト履歴を読み出して、状態遷移インスタンスを作成する。
アプリ安定度算出部234は、状態遷移表225から、APIリクエストを送信したアプリケーションについての過去の状態遷移を読み出す(図13の(13)参照)。前述したように、状態遷移表225は、アプリケーションごとに、アプリケーションによる過去の各APIリクエストに応じて遷移した各状態間と、各状態間の遷移確率とを示す(図13のセルC2参照)。
安定度算出部234は、この読み出した過去の状態遷移と、状態遷移インスタンス作成部233が作成した状態遷移インスタンスとを比較して安定度を算出する。安定度算出部234は、この算出した安定度をレートリミット算出部235に出力する(図13の(14)参照)。また、安定度算出部234は、状態遷移インスタンス作成部233が作成した状態遷移インスタンスを基に状態遷移表225の更新を実行する(図13の(15)参照)。
続いて、レートリミット算出部235は、安定度が算出されたアプリケーションについて、入力された安定度に応じてレートリミットを変更し、アクセス回数管理表226のレートリミットも、変更した値に更新する(図13の(16)参照)。例えば、第1アプリケーション30aの安定度が「0」である場合には、第1アプリケーション30aのレートリミットを最小値「10」に変更する(図13のセルC1の右表Tb参照)。この結果、APIゲートウェイ20では、安定度が「0」である第1アプリケーション30aのアクセス回数を最小値まで制限することができる。
このように、APIゲートウェイ20は、APIリクエストを送信したアプリケーションについて状態遷移インスタンスを作成し、状態遷移インスタンスが状態遷移表225に対してどの程度安定しているかを示す安定度を算出する。この安定度を用いて、APIゲートウェイ20は、APIリクエストの挙動が過去の挙動と比して変化したアプリケーションを判別する。そして、APIゲートウェイ20は、APIリクエストの挙動が過去の挙動と比して変化したアプリケーションについては、単位時間あたりのレートリミットを下げる。これによって、APIゲートウェイ20は、改版アプリケーションや悪意アプリケーションに変化したアプリケーションからAPIのデータや機能を保護している。
[新規アプリ登録処理の手順]
次に、APIゲートウェイ20の各機能構成部が実行する処理の手順について詳細に説明する。まず、新規アプリ登録部232による新規アプリ登録処理の手順について説明する。図14は、本実施例に係る新規アプリ登録処理の手順の一例を示すフローチャートである。
図14に示すように、新規アプリ登録部232が、アプリケーションより利用申請を受信すると(ステップS1)、APIゲートウェイ管理部231に利用申請を送信し、発行されたAPIキーを受信する(ステップS2)。新規アプリ登録部232は、このAPIキーに対応するアプリケーションをアクセス回数管理表226に登録し、レートリミットを初期値(例えば「50」)に設定する(ステップS3)。続いて、新規アプリ登録部232が、アプリケーションにAPIキーを返却して(ステップS4)、新規アプリ登録処理を終了する。
[リクエスト受付可否判定処理の手順]
次に、リクエスト受付可否を判定する処理の手順について説明する。図15は、本実施例に係るリクエスト受付可否判定処理の手順の一例を示すフローチャートである。
図15に示すように、リクエスト受付可否判定部236は、アプリケーションによるAPIリクエストを受信した場合、到着したAPIリクエストからAPIキーを参照する(ステップS11)。リクエスト受付可否判定部236は、アクセス回数管理表226から、該APIキーのアクセス回数と、レートリミットとを参照する(ステップS12)。
リクエスト受付可否判定部236は、アクセス回数管理表226から参照したデータを基に、単位時間でのアクセス回数が該APIキーのレートリミットに達しているか否かを判定する(ステップS13)。
リクエスト受付可否判定部236は、単位時間でのアクセス回数がレートリミットに達していると判定した場合(ステップS13:Yes)、APIリクエストを拒否するエラーレスポンスを作成する(ステップS14)。
これに対し、リクエスト受付可否判定部236は、単位時間でのアクセス回数がレートリミットに達していないと判定した場合(ステップS13:No)、アクセス回数管理表226における該APIキーのアクセス回数をインクリメントする(ステップS15)。続いて、リクエスト受付可否判定部236は、APIハンドラ11によるリクエスト処理を行う(ステップS16)。
ステップS14或いはステップS16終了後、リクエスト受付可否判定部236は、レスポンスを、アプリケーションに返却する(ステップS17)。続いて、レートリミット算出部235は、所定の単位時間が経過していた場合、アクセス回数管理表226のアクセス回数をリセットして(ステップS18)、リクエスト受付可否を判定する処理を終了する。
[状態遷移インスタンス作成処理の手順]
次に、状態遷移インスタンスを作成してレートリミットを変更するまで処理の手順について説明する。まず、状態遷移インスタンスを作成する処理の手順について説明する。図16は、本実施例に係る状態遷移インスタンス作成処理の手順の一例を示すフローチャートである。
図16に示すように、状態遷移インスタンス作成部233は、あるAPIキーのアプリケーションについて、APIリクエストが到着するまで、または、あるユーザのタイムアウトが発生するまで待機する(ステップS21)。状態遷移インスタンス作成部233は、ログアウトリクエストの到着、または、タイムアウトの発生があるかを判断する(ステップS22)。状態遷移インスタンス作成部233は、ログアウトリクエストの到着及びタイムアウトの発生のいずれもないと判断した場合(ステップS22:No)、リクエスト履歴管理表224に、今回のAPIリクエストの内容を格納する(ステップS23)。その後、ステップS21に戻り、待機を継続する。
一方、状態遷移インスタンス作成部233は、ログアウトリクエストの到着またはタイムアウトの発生があると判断した場合(ステップS22:Yes)、「user:=ログアウトリクエストのユーザまたはタイムアウトが発生したユーザ」とする(ステップS24)。続いて、状態遷移インスタンス作成部233は、このAPIキーに対応するアプリケーションについて状態遷移インスタンス(「instance」)を作成する(ステップS25)。状態遷移インスタンス作成部233は、「instance.key:=APIキー」とする。そして、状態遷移インスタンス作成部233は、「state1:=null」、「transition:={}」、「total:={}」とする(ステップS26)。続いて、状態遷移インスタンス作成部233は、ステップS27に進み、リクエスト履歴管理表224から、このAPIキーに対応するアプリケーションの履歴の全てを順次取り出す処理を行う。
まず、状態遷移インスタンス作成部233は、「state2:=リクエスト履歴管理表の最も古いuserのリクエスト」とし、「state2」をリクエスト履歴管理表224から削除する(ステップS27)。続いて、状態遷移インスタンス作成部233は、「state1!=null」であるか否かを判断する(ステップS28)。
状態遷移インスタンス作成部233は、「state1!=null」であると判断した場合(ステップS28:Yes)、状態遷移カウンタtransitionについて、「transition[state1,state2]:=transition[state1,state2]+1」とする(ステップS29)。状態遷移インスタンス作成部233は、「total[state1]:=total[state1]+1」として(ステップS30)、ステップS32に進む。
一方、状態遷移インスタンス作成部233は、「state1!=null」でないと判断した場合(ステップS28:No)、「instance.initial:=state2」とし(ステップS31)、ステップS32に進む。
続いて、状態遷移インスタンス作成部233は、「instance.states」に「state2」を追加し、「state1:=state2」とする(ステップS32)。状態遷移インスタンス作成部233は、リクエスト履歴管理表224に「user」のリクエストが存在しないか否かを判断する(ステップS33)。
状態遷移インスタンス作成部233は、リクエスト履歴管理表224に「user」のリクエストが存在すると判断した場合(ステップS33:No)、ステップS27に戻る。この場合、状態遷移インスタンス作成部233は、このAPIキーに対応するアプリケーションの履歴が残っていると判断できるため、ステップS27に戻り、このAPIキーに対応するアプリケーションの履歴の取り出しを継続する。
一方、状態遷移インスタンス作成部233が、リクエスト履歴管理表224に「user」のリクエストが存在しないと判断した場合(ステップS33:Yes)について説明する。この場合には、リクエスト履歴管理表224から、このAPIキーに対応するアプリケーションの履歴を全件取り出したと判断できる。このため、状態遷移インスタンス作成部233は、全ての「state1,state2」について、「instance.transition[state1,state2]:=transition[state1,state2]/total[state1]」を実行する(ステップS34)。言い換えると、状態遷移インスタンス作成部233は、各「state1,state2」の状態遷移の組み合わせに対し、遷移確率をそれぞれ算出する。そして、状態遷移インスタンス作成部233は、算出した全ての「state1,state2」に対する「instance.transition[state1,state2]」を安定度算出部234に出力する。状態遷移インスタンス作成部233は、具体的には、図11に示すデータ構造を有する状態遷移インスタンス225aを安定度算出部234に出力する。
続いて、安定度算出部234は、この状態遷移インスタンス作成部233が作成した「instance」についての安定度を算出する安定度算出処理を行う(ステップS35)。ステップS35終了後、状態遷移インスタンス作成部233は、ステップS21に戻り、待機を行う。
[安定度算出処理の手順]
次に、図16に示す安定度算出処理の手順について説明する。図17は、図16に示す安定度算出処理の手順の一例を示すフローチャートである。
図17に示すように、まず、安定度算出部234は、状態遷移インスタンス作成部233から「instance」を受信すると、この「instance」と、状態遷移表225の「instance.key」についての状態遷移とを比較する(ステップS41)。言い換えると、安定度算出部234は、「instance」に示された遷移状態及び状態間の遷移確率と、状態遷移表225のうち「instance」が作成されたアプリケーションに関する遷移状態及び状態間の遷移確率とを比較する。
続いて、安定度算出部234は、「instance」が新しい状態を含むか否かを判断する(ステップS42)。言い換えると、安定度算出部234は、このアプリケーションにおいて、今までなかった型のリクエストが存在するか否かを判断する。
安定度算出部234は、「instance」が新しい状態を含むと判断した場合(ステップS42:Yes)、該APIキーに対応するアプリケーションの安定度が0であると算出し(ステップS43)、算出した値をレートリミット算出部235に出力する。この場合、該APIキーに対応するアプリケーションが、これまでとは全く異なる状態に遷移するという挙動を行ったことが判別できるためである。
一方、安定度算出部234は、「instance」が新しい状態を含まないと判断した場合(ステップS42:No)、「instance」が新しい状態遷移を含むか否かを判断する(ステップS44)。言い換えると、安定度算出部234は、このアプリケーションにおいて、今までなかったリクエストの受信順序が存在するか否かを判断する。
安定度算出部234は、「instance」が新しい状態遷移を含むと判断した場合(ステップS44:Yes)、該APIキーに対応するアプリケーションの安定度が1であると算出し(ステップS45)、算出した値をレートリミット算出部235に出力する。この場合、該APIキーに対応するアプリケーションが、これまでと同じ状態間を遷移するものの、異なる順序で遷移するという挙動を行ったことが判別できるためである。
一方、安定度算出部234は、「instance」が新しい状態遷移を含まないと判断した場合(ステップS44:No)、「instance.transition」の遷移確率が状態遷移表225の遷移確率と所定の割合で一致するか否かを判断する(ステップS46)。この所定の割合は、予め設定された値であり、例えば「90%」である。もちろん、この所定の割合は、変更が可能である。
安定度算出部234は、「instance.transition」の遷移確率が状態遷移表225の遷移確率と所定の割合で一致しないと判断した場合(ステップS46:No)、該APIキーに対応するアプリケーションの安定度が2であると算出する(ステップS47)。そして、安定度算出部234は、算出した値をレートリミット算出部235に出力する。この場合、該APIキーに対応するアプリケーションが、一致度は低いものの、これまでの挙動と同様の挙動を行ったことが判別できるためである。
一方、安定度算出部234は、「instance.transition」の遷移確率が状態遷移表225の遷移確率と所定の割合で一致すると判断した場合(ステップS46:Yes)、該APIキーに対応するアプリケーションの安定度が3であると算出する(ステップS48)。そして、安定度算出部234は、算出した値をレートリミット算出部235に出力する。この場合、該APIキーに対応するアプリケーションが、これまでの挙動に対し、一致度の高い挙動を行ったことが判別できるためである。
そして、レートリミット算出部235は、安定度算出部234が算出した安定度に応じて、「instance.key」についてのレートリミットを算出するレートリミット算出処理を行う(ステップS49)。続いて、安定度算出部234は、状態遷移表225の「instance.key」についての遷移確率を「instance.transition」を用いて更新して(ステップS50)、安定度算出処理を終了する。
[レートリミット算出処理の手順]
次に、図17に示すレートリミット算出処理の手順について説明する。図18は、図17に示すレートリミット算出処理の手順の一例を示すフローチャートである。
図18に示すように、レートリミット算出部235は、安定度算出部234が算出した安定度が0、1、2または3のいずれであるかを判断する(ステップS51)。
レートリミット算出部235は、安定度算出部234が算出した安定度が0であると判断した場合(ステップS51:0)、アクセス回数管理表226の「instance.key」のレートリミットを最小値(例えば、10)に更新する(ステップS52)。
また、レートリミット算出部235は、安定度算出部234が算出した安定度が1であると判断した場合(ステップS51:1)、アクセス回数管理表226の「instance.key」のレートリミットを減らす(ステップS53)。
また、レートリミット算出部235は、安定度算出部234が算出した安定度が2であると判断した場合(ステップS51:2)、アクセス回数管理表226の「instance.key」のレートリミットを変更しない(ステップS54)。
そして、レートリミット算出部235は、安定度算出部234が算出した安定度が3であると判断した場合(ステップS51:3)、アクセス回数管理表226の「instance.key」のレートリミットを増やす(ステップS55)。
[実施例の効果]
このように、実施例に係るAPIゲートウェイ20は、APIリクエストを送信したアプリケーションについて状態遷移インスタンスを作成し、状態遷移インスタンスが状態遷移表225に対してどの程度安定しているかを示す安定度を算出する。これによって、APIゲートウェイ20は、APIリクエストの挙動が過去の挙動と比して変化したアプリケーションを判別する。そして、APIゲートウェイ20は、APIリクエストの挙動が過去の挙動と比して変化したアプリケーションについては、単位時間あたりのレートリミットを下げている。これによって、APIゲートウェイ20は、改版アプリケーションや悪意アプリケーションに変化したアプリケーションに対するアクセス制限を実現する。したがって、実施例によれば、改版アプリケーションや悪意アプリケーションに変化したアプリケーションから、APIで提供されるデータや機能を保護することが可能になる。
[各装置の各構成要素]
なお、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、APIゲートウェイ20の制御部23の各処理部が適宜統合されてもよい。また、各処理部の処理が適宜複数の処理部の処理に分離されてもよい。さらに、各処理部にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
[API管理プログラム]
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。図19は、API管理プログラムを実行するコンピュータを示す図である。
図19に示すように、コンピュータ1300は、CPU(Central Processing Unit)1310、HDD(Hard Disk Drive)1320、RAM(Random Access Memory)1340を有する。これら1310〜1340の各部は、バス1400を介して接続される。
HDD1320には上記のAPIゲートウェイ20の制御部23と同様の機能を発揮するAPI管理プログラム1320aが予め記憶される。すなわち、API管理プログラム1320aは、APIゲートウェイ20と同様の機能を発揮するプログラムとを有する。なお、API管理プログラム1320aについては、適宜分離してもよい。また、API管理プログラム1320aは、APIゲートウェイ20の通信I/F部21及び記憶部22と同様の機能を発揮するプログラムをさらに有してもよい。
また、HDD1320は、各種情報を記憶する。例えば、HDD1320は、OSや範囲選択の要求分散に用いる各種データを記憶する。
そして、CPU1310が、API管理プログラム1320aをHDD1320から読み出して実行することで、実施例の各処理部と同様の動作を実行する。すなわち、API管理プログラム1320aは、APIゲートウェイ20の制御部23と同様の動作を実行する。
なお、上記したAPI管理プログラム1320aについては、必ずしも最初からHDD1320に記憶させることを要しない。
例えば、コンピュータ1300に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ1300がこれらからプログラムを読み出して実行するようにしてもよい。
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ1300に接続される「他のコンピュータ(またはサーバ)」などにプログラムを記憶させておく。そして、コンピュータ1300がこれらからプログラムを読み出して実行するようにしてもよい。
1 API管理システム
10 アプリサーバ
20 APIゲートウェイ
21 通信インタフェース(I/F)部
22 記憶部
23 制御部
30 アプリケーション
30a 第1アプリケーション
30b 第2アプリケーション
30c 第3アプリケーション
221 ID管理表
222 APIキー管理表
223 API一覧表
224 リクエスト履歴管理表
225 状態遷移表
226 アクセス回数管理表
231 APIゲートウェイ管理部
232 新規アプリ登録部
233 状態遷移インスタンス作成部
234 安定度算出部
235 レートリミット算出部
236 リクエスト受付可否判定部

Claims (7)

  1. アプリケーションが送信したAPI(Application Programming Interface)リクエストの履歴を示すリクエスト履歴情報と、前記アプリケーションの単位時間あたりのAPIアクセス可能回数を示すアクセス回数管理表と、を記憶する記憶部と、
    前記APIリクエストを受信した場合に、該APIリクエストを送信したアプリケーションについて、前記アプリケーションによる前記APIリクエストの内容の遷移と前記リクエスト履歴情報とに基づいて安定度を算出する安定度算出部と、
    前記安定度に応じて前記アプリケーションの前記APIアクセス可能回数を変更する変更部と、
    前記アプリケーションによる前記APIリクエストがあった場合に、前記アプリケーションのアクセス回数と、前記アプリケーションのAPIアクセス可能回数とを比較し、前記APIリクエストの受付を行うか否かを判定する判定部と、
    を有することを特徴とする管理装置。
  2. 前記APIリクエストを送信したアプリケーションについて、ログインリクエストからログアウトリクエスト或いはタイムアウトの間に前記APIリクエストに応じて遷移した各状態間の遷移確率を示す状態遷移インスタンスを作成するインスタンス作成部をさらに有し、
    前記記憶部は、前記リクエスト履歴情報を用いて前記アプリケーションごとに作成された各状態間の遷移確率を示す状態遷移表を記憶し、
    前記安定度算出部は、前記APIリクエストを送信したアプリケーションについて、前記状態遷移インスタンスと前記状態遷移表とを比較して前記安定度を算出することを特徴とする請求項1に記載の管理装置。
  3. 前記安定度算出部は、前記状態遷移インスタンスと前記状態遷移表との一致度に応じて前記安定度を増減し、
    前記変更部は、前記安定度の増減に応じて前記APIアクセス可能回数を増減することを特徴とする請求項2に記載の管理装置。
  4. 前記安定度算出部は、前記状態遷移インスタンスが前記状態遷移表に示されていない状態を含む場合には前記安定度をより少なく算出し、前記状態遷移インスタンスの遷移確率と前記状態遷移表の遷移確率との一致度が所定値よりも低い場合には前記安定度をより多く算出し、
    前記変更部は、前記アプリケーションについて、前記安定度がより少ない場合には前記APIアクセス可能回数を前回設定値から所定値を減算した値に変更し、前記安定度がより多い場合には前記APIアクセス可能回数を前回設定値のまま維持し、または、前記APIアクセス可能回数を前回設定値に所定値を加算した値に変更することを特徴とする請求項3に記載の管理装置。
  5. 前記変更部は、所定時間ごとに前記アプリケーションのアクセス回数と、前記アプリケーションのAPIアクセス可能回数とを更新することを特徴とする請求項1〜4のいずれか一つに記載の管理装置。
  6. コンピュータに、
    APIリクエストを受信した場合に、該APIリクエストを送信したアプリケーションについて、前記アプリケーションの前記APIリクエストの内容の遷移と、前記アプリケーションが送信したAPIリクエストの履歴を示すリクエスト履歴情報とに基づいて安定度を算出し、
    前記安定度に応じて前記アプリケーションのAPIアクセス可能回数を変更し、
    前記アプリケーションによる前記APIリクエストがあった場合に、前記アプリケーションのアクセス回数と、前記アプリケーションの単位時間あたりのAPIアクセス可能回数とに従って、前記APIリクエストの受付を行うか否かを判定する
    各処理を実行させることを特徴とする管理プログラム。
  7. 管理装置は、
    APIリクエストを受信した場合に、該APIリクエストを送信したアプリケーションについて、前記アプリケーションの前記APIリクエストの内容の遷移と、前記アプリケーションが送信したAPIリクエストの履歴を示すリクエスト履歴情報とに基づいて安定度を算出し、
    前記安定度に応じて前記アプリケーションのAPIアクセス可能回数を変更し、
    前記アプリケーションによる前記APIリクエストがあった場合に、前記アプリケーションのアクセス回数と、前記アプリケーションの単位時間あたりのAPIアクセス可能回数とに従って、前記APIリクエストの受付を行うか否かを判定する
    処理を実行することを特徴とする管理方法。
JP2016047602A 2016-03-10 2016-03-10 管理装置、管理プログラム及び管理方法 Active JP6617617B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016047602A JP6617617B2 (ja) 2016-03-10 2016-03-10 管理装置、管理プログラム及び管理方法
US15/407,041 US10318727B2 (en) 2016-03-10 2017-01-16 Management device, management method, and computer-readable recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016047602A JP6617617B2 (ja) 2016-03-10 2016-03-10 管理装置、管理プログラム及び管理方法

Publications (2)

Publication Number Publication Date
JP2017162312A JP2017162312A (ja) 2017-09-14
JP6617617B2 true JP6617617B2 (ja) 2019-12-11

Family

ID=59786831

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016047602A Active JP6617617B2 (ja) 2016-03-10 2016-03-10 管理装置、管理プログラム及び管理方法

Country Status (2)

Country Link
US (1) US10318727B2 (ja)
JP (1) JP6617617B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9363267B2 (en) * 2014-09-25 2016-06-07 Ebay, Inc. Transaction verification through enhanced authentication
US10567469B1 (en) * 2017-01-11 2020-02-18 Amazon Technologies, Inc. Embedding hypermedia resources in data interchange format documents
US10536390B1 (en) * 2017-01-11 2020-01-14 Amazon Technologies, Inc. Requesting embedded hypermedia resources in data interchange format documents
JP7218797B2 (ja) * 2019-04-01 2023-02-07 富士通株式会社 情報処理装置およびapi使用履歴表示プログラム
CN110673973B (zh) * 2019-09-27 2024-02-13 聚好看科技股份有限公司 应用程序编程接口api的异常确定方法和装置
US11481308B2 (en) * 2020-01-24 2022-10-25 Intuit Inc. Systems and methods for determining an application quality index
US11265250B2 (en) * 2020-06-26 2022-03-01 Adobe Inc. Targeted rate limiting of tenant systems in online services
EP4189866A1 (en) 2020-07-31 2023-06-07 Telefonaktiebolaget LM Ericsson (publ) Service request handling
JP2022078608A (ja) * 2020-11-13 2022-05-25 株式会社フォーラムエイト 情報処理システム
CN113904839A (zh) * 2021-09-30 2022-01-07 杭州数梦工场科技有限公司 访问请求管理方法及装置
JP7292454B1 (ja) 2022-03-04 2023-06-16 MONET Technologies株式会社 情報処理装置、情報処理方法及び情報処理プログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007094868A2 (en) * 2005-10-28 2007-08-23 Mojix, Inc. Rfid receiver
JP5179792B2 (ja) 2007-07-13 2013-04-10 株式会社日立システムズ 操作検知システム
US9223938B2 (en) * 2007-12-31 2015-12-29 Google Technology Holdings LLC Location bound secure domains
GB2474545B (en) 2009-09-24 2015-06-24 Fisher Rosemount Systems Inc Integrated unified threat management for a process control system
WO2012001763A1 (ja) 2010-06-28 2012-01-05 株式会社日立製作所 計算機システムの管理方法及びクライアントコンピュータ
US9665410B2 (en) 2013-03-12 2017-05-30 Google Inc. Processing of application programming interface traffic
US20150222504A1 (en) * 2014-02-03 2015-08-06 Apigee Corporation System and method for monitoring and reporting data in api processing systems

Also Published As

Publication number Publication date
US20170262628A1 (en) 2017-09-14
JP2017162312A (ja) 2017-09-14
US10318727B2 (en) 2019-06-11

Similar Documents

Publication Publication Date Title
JP6617617B2 (ja) 管理装置、管理プログラム及び管理方法
US11218474B2 (en) Contextual and risk-based multi-factor authentication
US11323484B2 (en) Privilege assurance of enterprise computer network environments
US20210120027A1 (en) Anomaly alert system for cyber threat detection
US9990507B2 (en) Adapting decoy data present in a network
US10110634B2 (en) Monitoring user authenticity in distributed system
US9866573B2 (en) Dynamic malicious application detection in storage systems
US9984241B2 (en) Method, apparatus, and system for data protection
US11005824B2 (en) Detecting and mitigating forged authentication object attacks using an advanced cyber decision platform
US10320827B2 (en) Automated cyber physical threat campaign analysis and attribution
US9825956B2 (en) Systems and methods for access permission revocation and reinstatement
JP5160911B2 (ja) 本人認証装置、本人認証方法および本人認証プログラム
US20180046796A1 (en) Methods for identifying compromised credentials and controlling account access
US20170230418A1 (en) Monitoring user authenticity
US20160350282A1 (en) Sensitive text detecting method and apparatus
CN112714093A (zh) 一种账号异常检测方法、装置、系统及存储介质
US20220368726A1 (en) Privilege assurance of computer network environments
US9935940B1 (en) Password security
US20210226928A1 (en) Risk analysis using port scanning for multi-factor authentication
JP2016511891A (ja) 大規模データへの妨害攻撃に対するプライバシー
KR102130582B1 (ko) 머신러닝을 이용한 웹 기반 부정 로그인 차단 장치 및 방법
US11650852B2 (en) Dynamic throttling based on health metrics
US20230412620A1 (en) System and methods for cybersecurity analysis using ueba and network topology data and trigger - based network remediation
Zhao et al. Extracting log patterns from system logs in large
JPWO2016195090A1 (ja) 検知システム、検知装置、検知方法及び検知プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190930

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191015

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191028

R150 Certificate of patent or registration of utility model

Ref document number: 6617617

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150