(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-26
(45)【発行日】2022-11-04
(54)【発明の名称】異常判定システム、異常判定方法及びプログラム
(51)【国際特許分類】
G06F 21/55 20130101AFI20221027BHJP
G06F 21/31 20130101ALI20221027BHJP
【FI】
G06F21/55 320
G06F21/31 360
(21)【出願番号】P 2021543457
(86)(22)【出願日】2020-09-29
(86)【国際出願番号】 JP2020037004
(87)【国際公開番号】W WO2022070278
(87)【国際公開日】2022-04-07
【審査請求日】2021-07-27
【審判番号】
【審判請求日】2022-05-10
【早期審査対象出願】
(73)【特許権者】
【識別番号】399037405
【氏名又は名称】楽天グループ株式会社
(74)【代理人】
【識別番号】110000154
【氏名又は名称】弁理士法人はるか国際特許事務所
(72)【発明者】
【氏名】ドルタニ ディネシュ
(72)【発明者】
【氏名】シャロン ブリューノ アンドレ
【合議体】
【審判長】篠原 功一
【審判官】林 毅
【審判官】児玉 崇晶
(56)【参考文献】
【文献】米国特許出願公開第10645109/(US,A1)
【文献】特開2010-97342(JP,A)
【文献】特開2010-92203(JP,A)
【文献】特開2009-175984(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F21/31
G06F21/55
(57)【特許請求の範囲】
【請求項1】
複数の期間のそれぞれについて、当該期間における所与のコンピュータリソースに対するユーザの行動のログを示すログデータに基づいて、当該ログデータに対応付けられる、当該期間における入力データを生成する入力データ生成手段と、
学習済モデルに前記入力データを入力した際の当該学習済モデルからの出力に基づいて、当該入力データに対応付けられる前記ログデータが前記ユーザの行動のログを示すものである確率の確率値を示すユーザ確率データを生成するユーザ確率データ生成手段と、
最新の期間における前記入力データに基づいて生成される前記ユーザ確率データが
示す確率値と、当該期間の直前の期間における前記入力データに基づいて生成される前記ユーザ確率データが示す確率値と、の差が、所定の閾値よりも大きいか否かに基づいて、当該最新の期間における前記ユーザの行動において異常が発生したか否かを判定する異常判定手段と、
を含むことを特徴とする異常判定システム。
【請求項2】
複数の期間のそれぞれについて、当該期間における所与のコンピュータリソースに対するユーザの行動のログを示すログデータに基づいて、当該ログデータに対応付けられる、当該期間における入力データを生成する入力データ生成手段と、
学習済モデルに前記入力データを入力した際の当該学習済モデルからの出力に基づいて、当該入力データに対応付けられる前記ログデータが前記ユーザの行動のログを示すものである確率の確率値を示すユーザ確率データを生成するユーザ確率データ生成手段と、
最新の期間における前記入力データに基づいて生成される前記ユーザ確率データが
示す確率値と、当該期間よりも前の所定数の期間についての前記入力データに基づいて生成される前記ユーザ確率データが示す確率値の代表値と、の差が、所定の閾値よりも大きいか否かに基づいて、前記ユーザの行動における異常が発生したか否かを判定する異常判定手段と、
を含むことを特徴とする異常判定システム。
【請求項3】
当該期間における前記ログデータに基づいて、当該期間における前記ユーザの行動の統計を示す統計データを生成する統計データ生成手段と、
当該期間までの複数の前記期間における前記統計データが含まれる、当該期間における時系列入力データを生成する時系列入力データ生成手段と、をさらに含み、
前記入力データ生成手段は、当該期間における前記時系列入力データが含まれる、当該期間における前記入力データを生成する、
ことを特徴とする請求項1
又は2に記載の異常判定システム。
【請求項4】
前記統計データ生成手段は、少なくとも1つの所与のURLのそれぞれについての当該期間におけるアクセス回数を示すアクセス頻度データ、前記コンピュータリソースに対する当該期間における最初のアクセス時刻を示す最初アクセス時刻データ、前記コンピュータリソースに対する当該期間における最終のアクセス時刻を示す最終アクセス時刻データ、前記コンピュータリソースに対する当該期間におけるアクセス期間を示すアクセス期間データ、前記コンピュータリソースへの当該期間における総アップロードデータサイズを示す総アップロードデータサイズデータ、又は、前記コンピュータリソースからの当該期間における総ダウンロードデータサイズを示す総ダウンロードデータサイズデータ、のうちの少なくとも1つを示す前記統計データを生成する、
ことを特徴とする請求項
3に記載の異常判定システム。
【請求項5】
前記入力データ生成手段は、当該期間における前記ログデータに基づいて生成される、当該ログデータが示すユーザの行動を可視化した入力画像がさらに含まれる、当該期間における前記入力データを生成する、
ことを特徴とする請求項
3又は4に記載の異常判定システム。
【請求項6】
前記入力画像は、所与のアプリケーション又は所与のプロトコルのうちの少なくとも一方についての前記ユーザの使用状況を可視化した画像である、
ことを特徴とする請求項
5に記載の異常判定システム。
【請求項7】
前記入力画像は、1日における毎分の前記使用状況を可視化したヒートマップである、
ことを特徴とする請求項
6に記載の異常判定システム。
【請求項8】
前記入力画像は、縦又は横の一方の軸で毎時の前記使用状況が表現され、他方の軸で当該時における毎分の前記使用状況が表現された前記ヒートマップである、
ことを特徴とする請求項
7に記載の異常判定システム。
【請求項9】
前記学習済モデルは、学習済の第1のニューラルネットワークと、学習済の第2のニューラルネットワークと、を含み、
前記ユーザ確率データ生成手段は、前記学習済の第1のニューラルネットワークに前記入力画像を入力するとともに、前記学習済の第2のニューラルネットワークに前記時系列入力データを入力した際の、前記学習済モデルからの出力に基づいて、前記ユーザ確率データを生成する、
ことを特徴とする請求項
5から8のいずれか一項に記載の異常判定システム。
【請求項10】
前記第1のニューラルネットワークは、畳み込みニューラルネットワークである、
ことを特徴とする請求項
9に記載の異常判定システム。
【請求項11】
前記第2のニューラルネットワークは、再帰的ニューラルネットワーク(RNN)である、
ことを特徴とする請求項
9又は10に記載の異常判定システム。
【請求項12】
前記ユーザの行動における異常が発生したと判定された際に当該ユーザに関するアラートを生成するアラート生成手段、をさらに含む、
ことを特徴とする請求項1から
11のいずれか一項に記載の異常判定システム。
【請求項13】
前記ユーザの行動における異常が発生したと判定された際に通知を行う通知手段、をさらに含む、
ことを特徴とする請求項1から
12のいずれか一項に記載の異常判定システム。
【請求項14】
入力データ生成手段が、複数の期間のそれぞれについて、当該期間における所与のコンピュータリソースに対するユーザの行動のログを示すログデータに基づいて、当該ログデータに対応付けられる、当該期間における入力データを生成するステップと、
ユーザ確率データ生成手段が、学習済モデルに前記入力データを入力した際の当該学習済モデルからの出力に基づいて、当該入力データに対応付けられる前記ログデータが前記ユーザの行動のログを示すものである確率の確率値を示すユーザ確率データを生成するステップと、
異常判定手段が、最新の期間における前記入力データに基づいて生成される前記ユーザ確率データが
示す確率値と、当該期間の直前の期間における前記入力データに基づいて生成される前記ユーザ確率データが示す確率値と、の差が、所定の閾値よりも大きいか否かに基づいて、当該最新の期間における前記ユーザの行動において異常が発生したか否かを判定するステップと、
を含むことを特徴とする異常判定方法。
【請求項15】
入力データ生成手段が、複数の期間のそれぞれについて、当該期間における所与のコンピュータリソースに対するユーザの行動のログを示すログデータに基づいて、当該ログデータに対応付けられる、当該期間における入力データを生成するステップと、
ユーザ確率データ生成手段が、学習済モデルに前記入力データを入力した際の当該学習済モデルからの出力に基づいて、当該入力データに対応付けられる前記ログデータが前記ユーザの行動のログを示すものである確率の確率値を示すユーザ確率データを生成するステップと、
異常判定手段が、最新の期間における前記入力データに基づいて生成される前記ユーザ確率データが
示す確率値と、当該期間よりも前の所定数の期間についての前記入力データに基づいて生成される前記ユーザ確率データが示す確率値の代表値と、の差が、所定の閾値よりも大きいか否かに基づいて、前記ユーザの行動における異常が発生したか否かを判定するステップと、
を含むことを特徴とする異常判定方法。
【請求項16】
複数の期間のそれぞれについて、当該期間における所与のコンピュータリソースに対するユーザの行動のログを示すログデータに基づいて、当該ログデータに対応付けられる、当該期間における入力データを生成する手順、
学習済モデルに前記入力データを入力した際の当該学習済モデルからの出力に基づいて、当該入力データに対応付けられる前記ログデータが前記ユーザの行動のログを示すものである確率の確率値を示すユーザ確率データを生成する手順、
最新の期間における前記入力データに基づいて生成される前記ユーザ確率データが
示す確率値と、当該期間の直前の期間における前記入力データに基づいて生成される前記ユーザ確率データが示す確率値と、の差が、所定の閾値よりも大きいか否かに基づいて、当該最新の期間における前記ユーザの行動において異常が発生したか否かを判定する手順、
をコンピュータに実行させることを特徴とするプログラム。
【請求項17】
複数の期間のそれぞれについて、当該期間における所与のコンピュータリソースに対するユーザの行動のログを示すログデータに基づいて、当該ログデータに対応付けられる、当該期間における入力データを生成する手順、
学習済モデルに前記入力データを入力した際の当該学習済モデルからの出力に基づいて、当該入力データに対応付けられる前記ログデータが前記ユーザの行動のログを示すものである確率の確率値を示すユーザ確率データを生成する手順、
最新の期間における前記入力データに基づいて生成される前記ユーザ確率データが
示す確率値と、当該期間よりも前の所定数の期間についての前記入力データに基づいて生成される前記ユーザ確率データが示す確率値の代表値と、の差が、所定の閾値よりも大きいか否かに基づいて、前記ユーザの行動における異常が発生したか否かを判定する手順、
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、異常判定システム、異常判定方法及びプログラムに関する。
【背景技術】
【0002】
近年、コンピュータリソースに対するユーザの行動を分析するUEBA(User and Entity Behavior Analytics)技術が注目されてきている。UEBA技術を用いることで、例えば、悪意のあるハッカーによるサイバー攻撃や、悪意のある従業員によるデータ漏洩等の内部脅威などを検出することができる。
【0003】
このようなUEBA技術の一例として、特許文献1には、ネットワークを介したアクセスの正当性を判別するアクセス分析システムが記載されている。特許文献1に記載の技術では、ネットワークを介したアクセスに関するユーザによる端末の操作の特徴に基づくユーザの正当性の分析結果と、通信の正常性の分析結果と、に基づいて、ネットワークを介したアクセスの正当性が判別される。
【0004】
また、非特許文献1には、複数のユーザ、及び、複数のプロトコルについての、毎分における当該ユーザの当該プロトコルでのアクセス頻度を可視化したヒートマップをCNN(Convolutional Neural Network)に学習させることが示されている。また、非特許文献1には、ヒートマップの入力に応じた学習済の当該CNNからの出力に基づいて、ユーザの行動における異常の発生を検出することが示されている。
【先行技術文献】
【特許文献】
【0005】
【非特許文献】
【0006】
【文献】Jisheng Wang、"Deep Learning In Security ‐ An Empirical Example in User & Entity Behavior Analytics (UEBA)"、[online]、平成29年6月13日、Databricks、[令和2年9月23日検索]、インターネット <URL : https://www.youtube.com/watch?v=aAhAJFk1OVc&t=19s>
【発明の概要】
【発明が解決しようとする課題】
【0007】
ユーザが日々コンピュータリソースを使っている中で、ユーザの行動が次第にゆるやかに変化することは自然に起こり得る。
【0008】
しかし、非特許文献1に記載の技術では、学習済のCNNからの単発の出力に基づいてユーザの行動における異常が発生したか否かが判定されている。そして、この判定において、ユーザの行動の急激な変化によって当該出力が生じたのか、ユーザの行動が次第にゆるやかに変化した結果として最終的に当該出力に至ったのかは考慮されない。
【0009】
そのため、非特許文献1に記載の技術では、ユーザの行動が次第にゆるやかに変化した状況であるにも関わらず、ユーザの行動における異常が発生したと誤って判定されるおそれがある。なお、特許文献1に記載の技術を用いてもこの課題は解決できない。
【0010】
本発明は上記課題に鑑みてなされたものであって、その目的の1つは、ユーザの行動における異常の発生を的確に判定できる異常判定システム、異常判定方法及びプログラムを提供することにある。
【課題を解決するための手段】
【0011】
本発明に係る異常判定システムは、複数の期間のそれぞれについて、当該期間における所与のコンピュータリソースに対するユーザの行動のログを示すログデータに基づいて、当該ログデータに対応付けられる、当該期間における入力データを生成する入力データ生成手段と、学習済モデルに前記入力データを入力した際の当該学習済モデルからの出力に基づいて、当該入力データに対応付けられる前記ログデータが前記ユーザの行動のログを示すものである確率の確率値を示すユーザ確率データを生成するユーザ確率データ生成手段と、最新の期間における前記入力データに基づいて生成される前記ユーザ確率データと、当該期間よりも前の期間における前記入力データに基づいて生成される前記ユーザ確率データと、に基づいて、当該最新の期間における前記ユーザの行動において異常が発生したか否かを判定する異常判定手段と、を含む。
【0012】
本発明の一態様では、前記異常判定手段は、前記最新の期間についての前記ユーザ確率データが示す確率値と、当該期間の直前の期間についての前記ユーザ確率データが示す確率値、との差が、所定の閾値よりも大きいか否かに基づいて、前記ユーザの行動における異常が発生したか否かを判定する。
【0013】
あるいは、前記異常判定手段は、前記最新の期間についての前記ユーザ確率データが示す確率値と、当該期間よりも前の所定数の期間についての前記ユーザ確率データが示す確率値の代表値と、に基づいて、前記ユーザの行動における異常が発生したか否かを判定する。
【0014】
この態様では、前記異常判定手段は、前記最新の期間についての前記ユーザ確率データが示す確率値と、前記代表値と、の差が、所定の閾値よりも大きいか否かに基づいて、前記ユーザの行動における異常が発生したか否かを判定してもよい。
【0015】
また、本発明の一態様では、当該期間における前記ログデータに基づいて、当該期間における前記ユーザの行動の統計を示す統計データを生成する統計データ生成手段と、当該期間までの複数の前記期間における前記統計データが含まれる、当該期間における時系列入力データを生成する時系列入力データ生成手段と、をさらに含み、前記入力データ生成手段は、当該期間における前記時系列入力データが含まれる、当該期間における前記入力データを生成する。
【0016】
この態様では、前記統計データ生成手段は、少なくとも1つの所与のURLのそれぞれについての当該期間におけるアクセス回数を示すアクセス頻度データ、前記コンピュータリソースに対する当該期間における最初のアクセス時刻を示す最初アクセス時刻データ、前記コンピュータリソースに対する当該期間における最終のアクセス時刻を示す最終アクセス時刻データ、前記コンピュータリソースに対する当該期間におけるアクセス期間を示すアクセス期間データ、前記コンピュータリソースへの当該期間における総アップロードデータサイズを示す総アップロードデータサイズデータ、又は、前記コンピュータリソースからの当該期間における総ダウンロードデータサイズを示す総ダウンロードデータサイズデータ、のうちの少なくとも1つを示す前記統計データを生成してもよい。
【0017】
また、前記入力データ生成手段は、当該期間における前記ログデータに基づいて生成される、当該ログデータが示すユーザの行動を可視化した入力画像がさらに含まれる、当該期間における前記入力データを生成する。
【0018】
この態様では、前記入力画像は、所与のアプリケーション又は所与のプロトコルのうちの少なくとも一方についての前記ユーザの使用状況を可視化した画像であってもよい。
【0019】
さらに、前記入力画像は、1日における毎分の前記使用状況を可視化したヒートマップであってもよい。
【0020】
さらに、前記入力画像は、縦又は横の一方の軸で毎時の前記使用状況が表現され、他方の軸で当該時における毎分の前記使用状況が表現された前記ヒートマップであってもよい。
【0021】
また、前記学習済モデルは、学習済の第1のニューラルネットワークと、学習済の第2のニューラルネットワークと、を含み、前記ユーザ確率データ生成手段は、前記学習済の第1のニューラルネットワークに前記入力画像を入力するとともに、前記学習済の第2のニューラルネットワークに前記時系列入力データを入力した際の、前記学習済モデルからの出力に基づいて、前記ユーザ確率データを生成してもよい。
【0022】
この態様では、前記第1のニューラルネットワークは、畳み込みニューラルネットワークであってもよい。
【0023】
また、前記第2のニューラルネットワークは、再帰的ニューラルネットワーク(RNN)であってもよい。
【0024】
また、本発明の一態様では、前記ユーザの行動における異常が発生したと判定された際に当該ユーザに関するアラートを生成するアラート生成手段、をさらに含む。
【0025】
また、本発明の一態様では、前記ユーザの行動における異常が発生したと判定された際に通知を行う通知手段、をさらに含む。
【0026】
また、本発明に係る異常判定方法は、複数の期間のそれぞれについて、当該期間における所与のコンピュータリソースに対するユーザの行動のログを示すログデータに基づいて、当該ログデータに対応付けられる、当該期間における入力データを生成するステップと、学習済モデルに前記入力データを入力した際の当該学習済モデルからの出力に基づいて、当該入力データに対応付けられる前記ログデータが前記ユーザの行動のログを示すものである確率の確率値を示すユーザ確率データを生成するステップと、最新の期間における前記入力データに基づいて生成される前記ユーザ確率データと、当該期間よりも前の期間における前記入力データに基づいて生成される前記ユーザ確率データと、に基づいて、当該最新の期間における前記ユーザの行動において異常が発生したか否かを判定するステップと、を含む。
【0027】
また、本発明に係るプログラムは、複数の期間のそれぞれについて、当該期間における所与のコンピュータリソースに対するユーザの行動のログを示すログデータに基づいて、当該ログデータに対応付けられる、当該期間における入力データを生成する手順、学習済モデルに前記入力データを入力した際の当該学習済モデルからの出力に基づいて、当該入力データに対応付けられる前記ログデータが前記ユーザの行動のログを示すものである確率の確率値を示すユーザ確率データを生成する手順、最新の期間における前記入力データに基づいて生成される前記ユーザ確率データと、当該期間よりも前の期間における前記入力データに基づいて生成される前記ユーザ確率データと、に基づいて、当該最新の期間における前記ユーザの行動において異常が発生したか否かを判定する手順、をコンピュータに実行させる。
【図面の簡単な説明】
【0028】
【
図1】本発明の一実施形態に係る異常判定システムの全体構成の一例を示す図である。
【
図3】本発明の一実施形態に係る異常判定システムの機能の一例を示す機能ブロック図である。
【
図4】統計データのデータ構造の一例を示す図である。
【
図5】時系列入力データのデータ構造の一例を示す図である。
【
図6】入力画像群のデータ構造の一例を示す図である。
【
図8】訓練データのデータ構造の一例を示す図である。
【
図10】本発明の一実施形態に係る異常判定システムで行われる学習処理の流れの一例を示すフロー図である。
【
図11】本発明の一実施形態に係る異常判定システムで行われる異常判定処理の流れの一例を示すフロー図である。
【発明を実施するための形態】
【0029】
以下、本発明の一実施形態について図面に基づき詳細に説明する。
【0030】
図1は、本発明の一実施形態に係る異常判定システム1の全体構成の一例を示す図である。
図1に示すように、本実施形態に係る異常判定システム1は、例えば、サーバコンピュータやパーソナルコンピュータなどのコンピュータであり、プロセッサ10、記憶部12、通信部14、操作部16、及び、出力部18を含む。なお、本実施形態に係る異常判定システム1に、複数台のコンピュータが含まれていてもよい。
【0031】
プロセッサ10は、例えば、異常判定システム1にインストールされるプログラムに従って動作するマイクロプロセッサ等のプログラム制御デバイスである。記憶部12は、例えばROMやRAM等の記憶素子や、ソリッドステートドライブ(SSD)などである。記憶部12には、プロセッサ10によって実行されるプログラムなどが記憶される。通信部14は、例えば、有線通信又は無線通信用の通信インタフェースであり、インターネット等のコンピュータネットワークを介して、他のコンピュータや端末との間でデータを授受する。
【0032】
操作部16は、入力デバイスであり、例えば、タッチパネルやマウス等のポインティングデバイスやキーボード等を含む。操作部16は、操作内容をプロセッサ10に伝達する。出力部18は、例えば、液晶表示部又は有機EL表示部等のディスプレイや、スピーカ等の音声出力デバイス等の出力デバイスである。
【0033】
なお、記憶部12に記憶されるものとして説明するプログラム及びデータは、ネットワークを介して他のコンピュータから供給されるようにしてもよい。また、異常判定システム1のハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、異常判定システム1に、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、光ディスクドライブやメモリカードスロット)や外部機器とデータの入出力をするための入出力部(例えば、USBポート)が含まれていてもよい。例えば、情報記憶媒体に記憶されたプログラムやデータが読取部や入出力部を介して異常判定システム1に供給されるようにしてもよい。
【0034】
本実施形態では例えば、様々なユーザが、ユーザ端末を用いて、社内ネットワーク内のファイルサーバなどの所与のコンピュータリソースに対するアクセス等の行動を行う。ここで、ユーザ端末の例としては、パーソナルコンピュータ、携帯電話、スマートフォン、タブレット端末、サーバなどが挙げられる。
【0035】
そして、所与のコンピュータリソースに対するアクセスログなどといった、所与のコンピュータリソースに対するユーザの行動のログを示すログデータが、例えば、ネットワークファイヤウォールに記録される。そして、本実施形態では、異常判定システム1が、通信部14を介してネットワークファイヤウォールにアクセスして、ネットワークファイヤウォールに記録されているログデータを収集する。
【0036】
ここで、異常判定システム1にインストールされた、CROWDSTRIKE(登録商標)などのソフトウェアやユーザエージェントを使用して、ログデータの収集が行われてもよい。
【0037】
なお本実施形態では、異常判定システム1にインストールされた、テキスト解析スクリプトなどの既存のプログラムを用いることで、各ログデータについて、当該ログデータがどの日時のどのユーザの行動を示すものであるのかを特定可能であることとする。
【0038】
また、本実施形態に係る各ユーザには、予め、識別情報(ユーザID)が割り当てられていることとする。すなわち、本実施形態では、ログデータに基づいて、当該ログデータに示されている行動を行ったユーザのユーザID及び当該行動の行動日時が特定できることとする。
【0039】
そして本実施形態では例えば、
図2に示す機械学習モデル20を用いて、収集されたログデータに基づいて、ユーザの行動において異常が発生したか否かが判定される。
図2に示すように、本実施形態に係る機械学習モデル20には、畳み込みニューラルネットワーク(CNN)22、長・短期記憶(LSTM)24、及び、順伝播型ニューラルネットワーク(FFNN)26が含まれている。そして、ユーザの行動において異常が発生したと判定された際に、例えば、当該ユーザに関するアラートが生成される。
【0040】
また、本実施形態では上述の判定を行うにあたって、事前に、機械学習モデル20のマルチモーダル学習が行われる。そして、学習済の機械学習モデル20(学習済モデル)を用いて、ユーザの行動において異常が発生したか否かが判定される。
【0041】
以下、本実施形態に係る異常判定システム1の機能、及び、異常判定システム1で実行される処理についてさらに説明する。
【0042】
図3は、本実施形態に係る異常判定システム1で実装される機能の一例を示す機能ブロック図である。なお、本実施形態に係る異常判定システム1で、
図3に示す機能のすべてが実装される必要はなく、また、
図3に示す機能以外の機能が実装されていても構わない。
【0043】
図3に示すように、本実施形態に係る異常判定システム1には、機能的には例えば、機械学習モデル20、ログ記憶部30、ログ分類部32、統計データ生成部34、統計データ記憶部36、時系列入力データ生成部38、入力画像生成部40、入力データ生成部42、訓練データ記憶部44、学習部46、ユーザ確率データ生成部48、ユーザ確率データ記憶部50、異常判定部52、アラート生成部54、が含まれる。
【0044】
機械学習モデル20は、プロセッサ10及び記憶部12を主として実装される。ログ記憶部30、統計データ記憶部36、訓練データ記憶部44、ユーザ確率データ記憶部50は、記憶部12を主として実装される。ログ分類部32、統計データ生成部34、時系列入力データ生成部38、入力画像生成部40、入力データ生成部42、学習部46、ユーザ確率データ生成部48、異常判定部52は、プロセッサ10を主として実装される。アラート生成部54は、プロセッサ10、記憶部12、出力部18を主として実装される。
【0045】
上述のように、本実施形態では、ユーザの行動において異常が発生したか否かの判定を行うにあたって、事前に、機械学習モデル20の学習が実行される。機械学習モデル20、ログ記憶部30、ログ分類部32、統計データ生成部34、統計データ記憶部36、時系列入力データ生成部38、入力画像生成部40、入力データ生成部42、訓練データ記憶部44、及び、学習部46が、機械学習モデル20の学習に係る機能に相当する。
【0046】
そして、機械学習モデル20、ログ記憶部30、ログ分類部32、統計データ生成部34、統計データ記憶部36、時系列入力データ生成部38、入力画像生成部40、入力データ生成部42、ユーザ確率データ生成部48、ユーザ確率データ記憶部50、異常判定部52、アラート生成部54が、学習済の機械学習モデル20(学習済モデル)を用いた異常判定に係る機能に相当する。
【0047】
以上の機能は、コンピュータである異常判定システム1にインストールされた、以上の機能に対応する指令を含むプログラムをプロセッサ10で実行することにより実装されてもよい。また、このプログラムは、例えば、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク等のコンピュータ読み取り可能な情報記憶媒体を介して、あるいは、インターネットなどを介して異常判定システム1に供給されてもよい。
【0048】
機械学習モデル20は、本実施形態では例えば、
図2に示すように、CNN22、LSTM24、及び、FFNN26を含む機械学習モデルである。
【0049】
図2に示すように、本実施形態では例えば、ログデータに基づいて生成される後述の入力画像群が、CNN22に入力されるとともに、当該ログデータに基づいて生成される後述の時系列入力データがLSTM24に入力される。
【0050】
そして、CNN22からの出力である第1特徴量データと、LSTM24からの出力である第2特徴量データと、を結合した結合特徴量データが生成される。そして、結合特徴量データが、FFNN26に入力される。
【0051】
FFNN26の出力層の活性化関数としては、ソフトマックス関数が実装されており、結合特徴量データの入力に応じたFFNN26からの出力をユーザ確率ベクトルと呼ぶこととする。ユーザ確率ベクトルは、異常判定の対象であるユーザ数と同じ数の要素を持つベクトルである。各要素は、予めユーザIDに対応付けられている。そして、各要素には、当該ログデータが当該要素に対応付けられるユーザの行動のログを示すものである確率を示す0以上1以下の値をとる確率値が設定される。
【0052】
以下、機械学習モデル20の学習に係る機能について説明する。
【0053】
ログ記憶部30は、本実施形態では、ネットワークファイヤウォールから収集されたログデータを複数記憶する。
【0054】
ログ分類部32は、本実施形態では例えば、ログ記憶部30に記憶されている複数のログデータを、ユーザごと、及び、行動日毎に分類する。ログ分類部32は、例えば、各ログデータについて、当該ログデータに示されている行動を行ったユーザのユーザID及び当該行動の行動日を特定する。そして、ログ分類部32は、例えば、当該ログデータに、特定されたユーザID、及び、特定された行動日を示す行動日データを関連付ける。
【0055】
統計データ生成部34は、本実施形態では例えば、複数のユーザのそれぞれについて、所定の期間(例えば、1日)における当該ユーザの行動を示すログデータに基づいて、当該期間における当該ユーザの行動の統計を示す統計データを生成する。
【0056】
図4は、統計データのデータ構造の一例を示す図である。
図4に示すように、統計データには、例えば、複数のアクセス頻度データ(
図4の例では、第1アクセス頻度データ~第500アクセス頻度データ)、最初アクセス時刻データ、最終アクセスデータ、アクセス期間データ、総アップロードデータサイズデータ、総ダウンロードデータサイズデータ、が含まれる。
【0057】
アクセス頻度データは、例えば、少なくとも1つの所与のURLのそれぞれについての当該期間におけるアクセス回数を示すデータである。ここでは例えば、一般的にアクセスされる所与のURLが500個予め定められており、それぞれのURLに対するアクセス回数を示すアクセス頻度データが生成される。その結果、生成される統計データには、500個のアクセス頻度データが含まれることとなる。
【0058】
最初アクセス時刻データは、例えば、当該ユーザによる、所与のコンピュータリソースに対する当該期間(例えば当該日)における最初のアクセス時刻を示すデータである。
【0059】
最終アクセス時刻データは、例えば、当該ユーザによる、所与のコンピュータリソースに対する当該期間(例えば当該日)における最終のアクセス時刻を示すデータである。
【0060】
アクセス期間データは、例えば、当該ユーザによる、所与のコンピュータリソースに対する当該期間(例えば当該日)におけるアクセス期間を示すデータである。アクセス期間データには、例えば、所与のコンピュータリソースに対して当該期間において当該ユーザが最初にアクセスした時刻(最初のアクセス時刻)から最後にアクセスした時刻(最終のアクセス時刻)までの期間が示される。
【0061】
総アップロードデータサイズデータは、例えば、当該ユーザによる、所与のコンピュータリソースへの当該期間(例えば当該日)における総アップロードデータサイズを示すデータである。
【0062】
総ダウンロードデータサイズデータは、例えば、当該ユーザによる、所与のコンピュータリソースからの当該期間(例えば当該日)における総ダウンロードデータサイズを示すデータである。
【0063】
統計データ生成部34は、例えば、あるユーザIDとある行動日を示す行動日データとの組合せに関連付けられた少なくとも1つのログデータを特定する。そして、統計データ生成部34は、例えば、特定されたログデータに基づいて、統計データを生成する。そして、統計データ生成部34は、例えば、生成された統計データに、当該ユーザID及び当該行動日データを関連付ける。そして、統計データ生成部34は、例えば、ユーザID及び行動日データが関連付けられた統計データを、統計データ記憶部36に記憶させる。
【0064】
統計データ記憶部36は、本実施形態では例えば、統計データ生成部34が生成する統計データを記憶する。
【0065】
時系列入力データ生成部38は、本実施形態では例えば、統計データ記憶部36に記憶されている統計データに基づいて、当該期間までの複数の期間における統計データが含まれる、当該期間における時系列入力データを生成する。ここでは例えば、3~5個の連続する期間における統計データが含まれる時系列入力データが生成される。
図5は、時系列入力データのデータ構造の一例を示す図である。ここでは一例として、3日間についてのユーザの行動の統計を示す時系列入力データが生成されることとする。
【0066】
時系列入力データ生成部38は、本実施形態では例えば、あるユーザIDとある行動日を示す行動日データとの組合せに関連付けられた統計データを特定する。このようにして特定される統計データを当日統計データと呼ぶこととする。
【0067】
そして、時系列入力データ生成部38は、例えば、当該ユーザIDと当日統計データに対応付けられる行動日の前日を示す行動日データとの組合せに関連付けられた統計データを特定する。このようにして特定される統計データを1日前統計データと呼ぶこととする。
【0068】
そして、時系列入力データ生成部38は、例えば、当該ユーザIDと1日前統計データに対応付けられる行動日の前日を示す行動日データとの組合せに関連付けられた統計データを特定する。このようにして特定される統計データを2日前統計データと呼ぶこととする。
【0069】
そして、時系列入力データ生成部38は、例えば、特定された2日前統計データ、特定された1日前統計データ、及び、特定された当日統計データ、を含む時系列入力データを生成する。そして、時系列入力データ生成部38は、生成された時系列入力データに、当該ユーザID及び当該時系列入力データに含まれる当日統計データに対応付けられる行動日を示す行動日データを関連付ける。
【0070】
入力画像生成部40は、本実施形態では例えば、所定の期間(例えば、1日)におけるあるユーザのログデータに基づいて、当該ログデータが示すユーザの行動を可視化した入力画像を生成する。ここで、入力画像生成部40は、所与のアプリケーション又は所与のプロトコルのうちの少なくとも一方についてのユーザの使用状況(例えば、使用回数やアクセス回数)を可視化した画像である入力画像を生成してもよい。
【0071】
なお、本実施形態では、ネットワークファイヤウォールによって、使用されたアプリケーションやプロトコルを示すラベルがログデータに付与される。そのため本実施形態では、当該ラベルに基づいて、入力画像を生成できるようになっている。ここで、ラベルが付与されていない(すなわち、ネットワークファイヤウォールで分類不能な)ログデータに基づいて、「その他」に相当する入力画像が生成されるようにしてもよい。
【0072】
また、入力画像生成部40は、複数のアプリケーションやプロトコルについて、当該アプリケーション、又は、当該プロトコルの使用状況を可視化した入力画像を生成してもよい。そして、入力画像生成部40は、それぞれ互いに異なる複数のアプリケーションやプロトコルについて生成された入力画像を含む、
図6にデータ構造が示されている入力画像群を生成してもよい。
図6に示すように、生成される入力画像群には、n個のアプリケーションやプロトコルについてそれぞれ生成された、n個の入力画像が含まれる。また、入力画像群における入力画像に対応付けられるアプリケーション又はプロトコルの順序は予め定められていることとする。
【0073】
入力画像生成部40は、本実施形態では例えば、あるユーザIDとある行動日を示す行動日データとの組合せに関連付けられたログデータを特定する。そして、入力画像生成部40は、これらのログデータに基づいて、所定の複数のアプリケーションやプロトコルについての使用状況を特定する。そして、入力画像生成部40は、特定された使用状況に基づいて、入力画像群を生成する。そして、入力画像生成部40は、生成された入力画像群に、当該ユーザID及び当該行動日データを関連付ける。
【0074】
ここで、入力画像に使用状況が示されるアプリケーションの例としては、Microsoft Teams(登録商標)等のチャットアプリケーション、Microsoft Outlook(登録商標)等のメールアプリケーション、Microsoft(登録商標) Update、Sharepoint(登録商標)、Slack(登録商標)、Dropbox(登録商標)、Viber(登録商標)、などが挙げられる。
【0075】
また、入力画像に使用状況が示されるプロトコルの例としては、SSL(Secure Sockets Layer)、DNS(Domain Name System)、HTTP(Hyper Text Transfer Protocol)、SMTP(Simple Mail Transfer Protocol)などが挙げられる。
【0076】
図7は、本実施形態に係る入力画像の一例を模式的に示す図である。
図7に例示されている入力画像は、特定のアプリケーション若しくは特定のプロトコルについての、1日における毎分の使用状況を可視化したヒートマップである。
【0077】
図7に示す入力画像には、縦24×横60の計1440個の小画像が含まれている。なお、小画像は、1画素からなる画像(すなわち画素)であってもよい。また、各小画像の大きさや形状は同じであってもよい。それぞれの小画像は、1分に対応付けられる。例えば、入力画像に含まれる最も左上の小画像は、0時0分に対応付けられ、上から7番目であり左から11番目である小画像は、6時10分に対応付けられる。このように、本実施形態に係る入力画像が、縦又は横の一方の軸で毎時の使用状況が表現され、他方の軸で当該時における毎分の使用状況が表現されたヒートマップであってもよい。
【0078】
なお、入力画像において、縦の軸で毎時の使用状況が表現され、横の軸で当該時における毎分の使用状況が表現される必要はなく、横の軸で毎時の使用状況が表現され、縦の軸で当該時における毎分の使用状況が表現されてもよい。
【0079】
そして、当該小画像の画素値は、当該小画像に対応付けられる1分における使用状況に対応するものとなっている。ここでは例えば、使用状況が高い1分に対応する小画像であるほど当該小画像の色は黒に近いものとなっており、使用状況が低い1分に対応する小画像であるほど当該小画像の色は白に近いものとなっている。なお、入力画像はモノクロの画像であってもよいし、カラーの画像であってもよい。入力画像がカラーの画像である場合、小画像の濃淡ではなく小画像の色が、使用状況に対応するものとなっていてもよい。
【0080】
入力データ生成部42は、本実施形態では例えば、複数の期間のそれぞれについて、当該期間におけるログデータに基づいて、当該ログデータに対応付けられる、当該期間における訓練データを生成する。
【0081】
図8は、機械学習モデル20の学習の際に生成される訓練データのデータ構造の一例を示す図である。本実施形態では例えば、ユーザIDと行動日との組合せにそれぞれ対応付けられる訓練データが複数生成される。ユーザIDと行動日との組合せに対応付けられる訓練データには、例えば、当該ユーザID、当該行動日を示す行動日データ、及び、入力データが含まれる。そして、入力データには、当該ユーザIDと当該行動日データとに関連付けられている入力画像群、及び、当該ユーザIDと当該行動日データとに関連付けられている時系列入力データが含まれる。
【0082】
機械学習モデル20の学習の際には、入力データ生成部42は、生成された訓練データを訓練データ記憶部44に記憶させる。
【0083】
本実施形態では例えば、様々なユーザIDと様々な行動日とに関連付けられた多くの訓練データが訓練データ記憶部44に記憶されることとなる。
【0084】
学習部46は、本実施形態では例えば、訓練データ記憶部44に記憶されている訓練データを用いて、機械学習モデル20の学習を実行する。
【0085】
学習部46は、例えば、訓練データに含まれる入力画像群をCNN22に入力するとともに、当該訓練データに含まれる時系列入力データをLSTM24に入力する。
【0086】
そして、学習部46は、当該入力画像群の入力に応じたCNN22からの出力である第1特徴量データと、当該時系列入力データの入力に応じたLSTM24からの出力である第2特徴量データを結合した結合特徴量データを生成する。
【0087】
そして、学習部46は、結合特徴量データをFFNN26に入力する。
【0088】
そして、学習部46は、当該訓練データに含まれるユーザIDに対応付けられる教師ベクトルを生成する。教師ベクトルは、ユーザ確率ベクトルと同じ数の要素を持つベクトルである。そして、当該訓練データに含まれるユーザIDに対応付けられる要素には値1が設定され、他の要素には値0が設定された教師ベクトルが生成される。
【0089】
そして、学習部46は、例えば、結合特徴量データの入力に応じたFFNN26からの出力であるユーザ確率ベクトルと生成された教師ベクトルとの差を特定する。そして、学習部46は、特定された差に対応付けられるロス関数の値が最小となるよう、誤差逆伝搬法により機械学習モデルの各層のパラメータの値を更新する教師あり学習を実行する。
【0090】
以上の学習を複数の訓練データについて実行することで、本実施形態に係る機械学習モデル20の学習は実行される。そして、このようにして生成される学習済の機械学習モデル20には、学習済のCNN22と、学習済のLSTM24と、学習済のFFNN26と、が含まれることとなる。
【0091】
以下、学習済の機械学習モデル20(学習済モデル)を用いた、ユーザの行動において異常が発生したか否かの判定に係る機能について説明する。
【0092】
以下の説明では、一例として、ユーザIDが0001であるユーザの行動に異常が発生したか否かについての判定について説明するが、他のユーザについても同様の判定を行うことは当然可能である。
【0093】
また、本実施形態では、ユーザの行動に異常が発生したか否かについての判定は、複数の判定対象期間(例えば、複数の判定対象日)について、繰り返し行われる。
【0094】
なお、ログ記憶部30には、例えば、各判定が行われる際に、当該判定における判定対象日の2日前から判定対象日までにおけるログデータが少なくとも記憶されていることとする。
【0095】
ログ分類部32は、ログ記憶部30に記憶されているログデータのうちから、ユーザIDが0001であるユーザの行動を示すログデータを抽出する。そして、ログ分類部32は、これらのログデータのうちから、判定対象日の2日前から判定対象日までの行動が示されているログデータを抽出する。
【0096】
そして、統計データ生成部34は、判定対象日の2日前から判定対象日までの3日にそれぞれ対応付けられる統計データを生成する。
【0097】
そして、時系列入力データ生成部38は、判定対象日の2日前の統計データを2日前統計データとして含み、判定対象日の1日前の統計データを1日前統計データとして含み、判定対象日の統計データを当日統計データとして含む時系列入力データを生成する。
【0098】
そして、入力画像生成部40は、判定対象日のログデータに基づいて、入力画像群を生成する。
【0099】
そして、入力データ生成部42は、生成された時系列入力データと、生成された入力画像群とを含む、入力データを生成する。
【0100】
ユーザ確率データ生成部48は、本実施形態では例えば、学習済モデルに入力データを入力した際の当該学習済モデルからの出力に基づいて、当該入力データに対応付けられるログデータがユーザの行動のログを示すものである確率の確率値を示すユーザ確率データを生成する。
【0101】
例えば、ユーザ確率データ生成部48は、生成された入力データに含まれる入力画像群を学習済のCNN22に入力するとともに、当該入力データに含まれる時系列入力データを学習済のLSTM24に入力する。
【0102】
そして、ユーザ確率データ生成部48は、当該入力画像群の入力に応じたCNN22からの出力である第1特徴量データと、当該時系列入力データの入力に応じたLSTM24からの出力である第2特徴量データと、を結合した結合特徴量データを生成する。
【0103】
そして、ユーザ確率データ生成部48は、結合特徴量データをFFNN26に入力する。
【0104】
そして、ユーザ確率データ生成部48は、例えば、結合特徴量データの入力に応じたFFNN26からの出力であるユーザ確率ベクトルに基づいて、
図9に例示されているユーザ確率データを生成する。
【0105】
ユーザ確率データには、当該ユーザのユーザID、当該判定対象日を示す行動日データ、ユーザ確率ベクトルにおける当該ユーザに対応付けられる要素の値(確率値)を示す確率値データ、が含まれる。なお、
図9に示す確率値データでは、確率値が、0以上1以下の値ではなく、百分率で表現されている。
【0106】
そして、ユーザ確率データ生成部48は、生成されたユーザ確率データをユーザ確率データ記憶部50に記憶させる。
【0107】
本実施形態では、上述の通り、入力データ生成部42が、複数の判定対象期間のそれぞれについて、当該判定対象期間におけるログデータに基づいて、当該ログデータに対応付けられる、当該判定対象期間における入力データを生成する。そして、ユーザ確率データ生成部48は、当該複数の判定対象期間のそれぞれについて、学習済モデルに当該判定対象期間における入力データを入力した際の当該学習済モデルからの出力に基づいて、当該入力データに対応付けられるログデータが当該ユーザの行動のログを示すものである確率の確率値を示すユーザ確率データを生成する。そして、生成されたユーザ確率データはユーザ確率データ記憶部50に蓄積される。
【0108】
このようにして、例えば、複数の判定対象期間(例えば複数の判定対象日)のそれぞれについての、当該判定対象期間(例えば当該判定対象日)のログデータに基づいて生成されるユーザ確率データが、ユーザ確率データ記憶部50に蓄積されていく。
【0109】
異常判定部52は、本実施形態では例えば、最新の期間における入力データに基づいて生成されるユーザ確率データと、当該期間よりも前の期間における入力データに基づいて生成されるユーザ確率データと、に基づいて、当該最新の期間における当該ユーザの行動において異常が発生したか否かを判定する。
【0110】
ここで、異常判定部52が、最新の期間についてのユーザ確率データが示す確率値と、当該期間の直前の期間についてのユーザ確率データが示す確率値、との差が、所定の閾値よりも大きいか否かに基づいて、当該ユーザの行動における異常が発生したか否かを判定してもよい。
【0111】
例えば、所定の閾値が15%であり、最新の期間が2020年9月10日であることとする。この場合、ユーザIDが0001であるユーザについての、2020年9月9日のユーザ確率データに含まれる確率値データの値が60%であるとする。そして、9月10日のユーザ確率データに含まれる確率値データの値が40%であるとする。この場合は、ユーザIDが0001であるユーザの2020年9月10日の行動における異常が発生したと判定される。
【0112】
一方、2020年9月9日のユーザ確率データに含まれる確率値データの値が60%であるとする。そして、9月10日~9月13日のユーザ確率データに含まれる確率値データの値が、それぞれ、55%、50%、45%、40%であるとする。この場合、2020年9月10日~13日のいずれについても、ユーザIDが0001であるユーザの行動における異常が発生していないと判定される。
【0113】
また、異常判定部52は、最新の期間についてのユーザ確率データが示す確率値と、当該期間よりも前の所定数の期間についてのユーザ確率データが示す確率値の代表値と、に基づいて、当該ユーザの行動における異常が発生したか否かを判定してもよい。例えば、最新の期間についてのユーザ確率データが示す確率値と、上述の代表値と、の差が、所定の閾値よりも大きいか否かに基づいて、当該ユーザの行動における異常が発生したか否かが判定されてもよい。
【0114】
例えば、ここでも、所定の閾値が15%であることとする。この場合、ユーザIDが0001であるユーザについての、2020年9月7日~9日のユーザ確率データに含まれる確率値データの値の平均値が60%であるとする。そして、9月10日のユーザ確率データに含まれる確率値データの値が40%であるとする。この場合は、ユーザIDが0001であるユーザの2020年9月10日の行動における異常が発生したと判定される。
【0115】
一方、2020年9月7日~9日のユーザ確率データに含まれる確率値データの値の平均値が50%であるとする。そして、9月10日のユーザ確率データに含まれる確率値データの値が40%であるとする。この場合は、ユーザIDが0001であるユーザの2020年9月10日の行動における異常が発生していないと判定される。
【0116】
なお、上述の例では所定数の期間は、3つの期間であるが、当該所定数は3には限定されない。また、上述の例では、平均値に基づいて、当該ユーザの行動における異常が発生したか否かが判定されているが、その他の代表値(最大値、最小値、中央値、最頻値など)に基づいて、当該ユーザの行動における異常が発生したか否かが判定されてもよい。
【0117】
また、単純移動平均、指数移動平均、減衰移動平均等の様々な統計的手法を用いて、代表値が算出されるようにしてもよい。
【0118】
また、最新の期間の直前の期間についてのユーザ確率データが示す確率値に基づいて、当該ユーザの行動における異常が発生したか否かが判定される必要はない。例えば、最新の期間のm個前の期間からn個前の期間までのユーザ確率データに含まれる確率値データの値の代表値に基づいて、当該ユーザの行動における異常が発生したか否かが判定されてもよい。また、確率値の比較において、移動窓(moving window)、増加移動窓(incresing moving window)、又は、同様の手法が用いられても構わない。
【0119】
以上の例では、入力画像や時系列入力データの集計単位の期間(例えば1日)と判定間隔の期間(例えば1日)とが一致しているが、集計単位の期間と判定間隔の期間が一致している必要はない。例えば、複数の判定対象期間について、入力画像や時系列入力データの集計期間の少なくとも一部が重複していても構わない。例えば、入力画像や当日統計データは異常判定が行われるタイミングの直近1日のログデータに基づいて生成されるが、異常判定の間隔は、1日より短い期間(例えば1時間)、あるいは、1日より長い期間(例えば、3日)であっても構わない。
【0120】
アラート生成部54は、本実施形態では例えば、ユーザの行動における異常が発生したと判定された際に当該ユーザに関するアラートを生成する。例えば、ユーザIDが0001であるユーザの2020年9月10日の行動における異常が発生したと判定された際には、当該ユーザID、及び、当該行動日(2020年9月10日)を示す行動日データを含むアラートデータが生成されてもよい。そして、アラート生成部54は、生成されたアラートデータを記憶部12に記憶させてもよい。
【0121】
また、アラート生成部54は、ユーザの行動における異常が発生したと判定された際に通知を行ってもよい。ここで、アラート生成部54は、例えば、アラートデータが生成された際に、出力部18を介して、アラートの表示やアラート音の出力などといったその旨の通知を行ってもよい。
【0122】
ここで、本実施形態に係る異常判定システム1で行われる学習処理の流れの一例を、
図10に例示するフロー図を参照しながら説明する。本処理例では、予め、機械学習モデル20の学習に用いられるログデータがログ記憶部30に記憶されていることとする。
【0123】
まず、ログ分類部32が、ログ記憶部30に記憶されているログデータを分類し、各ログデータに、ユーザID及び行動日データを関連付ける(S101)。
【0124】
そして、統計データ生成部34が、S101に示す処理が実行されたログデータに基づいて、それぞれ、ユーザID及び行動日データに関連付けられている統計データを複数生成して、生成された統計データを統計データ記憶部36に記憶させる(S102)。
【0125】
そして、時系列入力データ生成部38が、S102に示す処理で統計データ記憶部36に記憶された統計データに基づいて、それぞれ、ユーザID及び行動日データに関連付けられている時系列入力データを複数生成する(S103)。
【0126】
そして、入力画像生成部40が、S101に示す処理が実行されたログデータに基づいて、それぞれ、ユーザID及び行動日データに関連付けられている入力画像群を複数生成する(S104)。
【0127】
そして、入力データ生成部42が、S103に示す処理で生成された時系列入力データと、S104に示す処理で生成された入力画像群と、に基づいて、訓練データを複数生成して、生成された訓練データを訓練データ記憶部44に記憶させる(S105)。
【0128】
そして、学習部46が、訓練データ記憶部44に記憶されている訓練データのうちから、S107に示す処理が実行されていないものを1つ選択する(S106)。
【0129】
そして、学習部46が、S106に示す処理で選択された訓練データを機械学習モデル20に学習させる学習処理を実行する(S107)。
【0130】
そして、学習部46が、訓練データ記憶部44に記憶されているすべての訓練データについてS107に示す処理が実行されたか否かを確認する(S108)。
【0131】
すべての訓練データについてS107に示す処理が実行されていないことが確認された場合は(S108:N)、S106に示す処理に戻る。
【0132】
すべての訓練データについてS107に示す処理が実行されたことが確認された場合は(S108:Y)、本処理例に示す処理は終了される。
【0133】
なお、
図10に示されている処理の順序は特に問わない。例えば、S104に示す処理が、S102及びS103に示す処理の前に実行されてもよい。
【0134】
次に、本実施形態に係る異常判定システム1で行われる、あるユーザについての異常判定処理の流れの一例を、
図11に例示するフロー図を参照しながら説明する。本処理例では、予め、機械学習モデル20は学習済であり、最新のユーザ確率データと比較されるユーザ確率データは、既に、ユーザ確率データ記憶部50に記憶されていることとする。また、本処理例では、ログデータの収集が適宜行われていることとする。
【0135】
まず、ログ分類部32は、異常判定を行うタイミングの到来を監視する(S201)。例えば、異常判定を行うタイミングの例としては、毎日の所定の時刻などが挙げられる。
【0136】
異常判定を行うタイミングが到来すると、ログ分類部32は、ログ記憶部30に記憶されているログデータを分類し、各ログデータに、ユーザID及び行動日データを関連付ける(S202)。ここで、ユーザID及び行動日データが関連付けられていないログデータについて、ユーザID及び行動日データが関連付けられるようにしてもよい。あるいは、このタイミングでログ分類部32が、最新のログデータを収集して、収集されたログデータにユーザID及び行動日データを関連付けてもよい。
【0137】
そして、ログ分類部32が、所定の条件を満足するログデータを抽出する(S203)。ここで例えば、異常判定の対象となるユーザのユーザID、及び、2日前から当日までのいずれかの行動日を示す行動日データに関連付けられているログデータが抽出される。
【0138】
そして、統計データ生成部34が、S203に示す処理で抽出されたログデータに基づいて、3日分の統計データを生成して、生成された統計データを統計データ記憶部36に記憶させる(S204)。
【0139】
そして、時系列入力データ生成部38が、S204に示す処理で統計データ記憶部36に記憶された統計データに基づいて、ユーザID及び行動日データに関連付けられている時系列入力データを生成する(S205)。
【0140】
そして、入力画像生成部40が、S203に示す処理で抽出されたログデータのうちの、当日を示す行動日データに関連付けられているログデータに基づいて、入力画像群を生成する(S206)。
【0141】
そして、入力データ生成部42が、S205に示す処理で生成された時系列入力データと、S206に示す処理で生成された入力画像群とを含む、入力データを生成する(S207)。
【0142】
そして、ユーザ確率データ生成部48が、ユーザ確率データを生成し、生成されたユーザ確率データをユーザ確率データ記憶部50に記憶させる(S208)。S208に示す処理では、例えば、ユーザ確率データ生成部48が、S207に示す処理で生成された入力データを学習済の機械学習モデル20に入力する。そして、ユーザ確率データ生成部48が、当該入力に応じた機械学習モデル20からの出力であるユーザ確率ベクトルを取得する。そして、ユーザ確率データ生成部48が、取得されたユーザ確率ベクトルに基づいて、ユーザ確率データを生成する。そして、ユーザ確率データ生成部48が、生成されたユーザ確率データをユーザ確率データ記憶部50に記憶させる。
【0143】
そして、異常判定部52が、S208に示す処理で新たに生成されたユーザ確率データと、ユーザ確率データ記憶部50に既に記憶されていたユーザ確率データと、に基づいて、当該ユーザの行動において異常が発生したか否かを判定する(S209)。
【0144】
そして、アラート生成部54が、S209に示す処理で異常が発生したと判定されたか否かを確認する(S210)。
【0145】
異常が発生したと判定された場合は(S210:Y)、アラート生成部54が、当該ユーザに関するアラートを生成する(S211)。
【0146】
S211に示す処理が終了した場合、又は、S210に示す処理で異常が発生していないと判定された場合は(S210:N)、S201に示す処理に戻る。
【0147】
なお、
図11に示されている処理の順序は特に問わない。例えば、S206に示す処理が、S204及びS205に示す処理の前に実行されてもよい。
【0148】
図11には、あるユーザについての異常判定処理の流れの一例が示されているが、本実施形態では例えば、この異常判定処理が、判定の対象となるすべてのユーザについて同様に実行される。このようにして、本実施形態では、所与のコンピュータリソースを利用する様々なユーザについて、当該ユーザの行動における異常の発生を判定できることとなる。
【0149】
本実施形態において、例えば、単独のユーザ確率データが示す確率値に基づいて、ユーザの行動において異常が発生したか否かを判定することが考えられる。
【0150】
しかし、ユーザが日々コンピュータリソースを使っている中で、ユーザの行動が次第にゆるやかに変化することは自然に起こり得る。
【0151】
そして、単独のユーザ確率データが示す確率値に基づく判定では、ユーザの行動の急激な変化によって当該出力が生じたのか、ユーザの行動が次第にゆるやかに変化した結果として最終的に当該出力に至ったのかは考慮されない。
【0152】
そのため、ユーザの行動が次第にゆるやかに変化した状況であるにも関わらず、ユーザの行動における異常が発生したと誤って判定されるおそれがある。例えば、ユーザの行動が次第にゆるやかに変化した結果、当該ユーザの確率値が30%に至ったとする。ここで、例えば、単独のユーザ確率データが示す確率値が50%未満であれば異常であると判定される場合は、当該ユーザの行動に異常が発生したと誤判定されてしまうおそれがある。一方、本実施形態では、このような状況であれば、異常が発生したとは判定されないため、当該ユーザについての行動の異常を的確に判定できる可能性が高まることとなる。
【0153】
このようにして、本実施形態によれば、ユーザの行動における異常の発生を的確に判定できることとなる。
【0154】
なお、本発明は上述の実施形態に限定されるものではない。
【0155】
例えば、本実施形態において、上述のログデータが、例えば、ネットワークファイヤウォール、ルータ、スイッチなどの様々な機器に記録されてもよい。そして、本実施形態では、異常判定システム1が、通信部14を介してこれらの機器にアクセスして、これらの機器に記録されているログデータを収集してもよい。そして、ログ記憶部30が、様々な機器から収集されたログデータを記憶してもよい。そして、様々な機器から収集されたログデータに基づいて、ユーザの行動において異常が発生したか否かが判定されてもよい。
【0156】
また、アクセス頻度データによってアクセス回数が示されるURLは、一般的にアクセスされるURLではない、特定のURLや一般的にはアクセスされない(稀にアクセスされる)URLであってもよい。また、アクセス頻度データによってアクセス回数が示されるURLが、一般的にアクセスされるURL、及び、特定のURLや一般的にはアクセスされない(稀にアクセスされる)URLであってもよい。
【0157】
また、時系列入力データや入力画像とは異なる特徴量が、機械学習モデル20に入力されてもよい。この場合、FFNN26等のマルチモーダルパイプラインに、他のニューラルネットワークが結合されてもよい。
【0158】
また、ログデータの収集は、異常判定システム1が実行してもよいし、異常判定システム1以外のコンピュータシステムが実行してもよい。
【0159】
また、FFNN26の出力層の活性化関数として、シグモイド関数が実装されてもよい。この場合、異常判定の対象となるユーザ数に対応する数のシグモイド関数が必要であるため、複数のシグモイド関数がそれぞれ実装された複数のニューラルネットワークが、機械学習モデル20に含まれるようにしてもよい。
【0160】
また、機械学習モデル20が、LSTMの代わりに、LSTM以外のニューラルネットワーク(例えば、ゲート付き回帰型ユニット(GRU)などの再帰的ニューラルネットワーク(RNN)、あるいは、単純なFFNN、など)を含んでいてもよい。そして、当該ニューラルネットワークに時系列入力データが入力されるようにしてもよい。
【0161】
また、入力画像に含まれる1440の小画像(あるいは画素)に相当する情報が、2次元の画像ではなく1×1440の1次元のベクトルとして表現されてもよい。そして、機械学習モデル20が、CNNの代わりに、CNN以外のニューラルネットワークを含んでいてもよい。そして、当該ニューラルネットワークに1×1440の1次元のベクトルが入力されてもよい。また、自然言語処理(NLP)でよく使われる埋め込み表現を用いることにより、入力画像の情報が1次元の情報に埋め込まれるようにしてもよい。
【0162】
また、機械学習モデル20が1種類のニューラルネットワークから構成されており、当該ニューラルネットワークに時系列入力データ及び入力画像が入力されてもよい。例えば、入力画像に相当する1次元ベクトルの情報が時系列入力データとともにLSTMに入力されてもよい。また、時系列入力データに示されている情報を画像で表現した上で、当該画像が入力画像とともにCNNに入力されてもよい。このように、本実施形態に係る機械学習モデル20は、必ずしもマルチモーダルな機械学習モデルには限定されない。ただし、機械学習モデル20が、マルチモーダルな機械学習モデルである方が、そうでない場合よりも高い精度で、異常判定を行うことができる。
【0163】
また、本実施形態において、異常判定システム1で機械学習モデル20の学習が行われる必要はなく、学習済モデルを異常判定システム1にインストールすることで、当該学習済モデルを用いた異常判定システム1における異常判定が行われるようにしてもよい。
【0164】
また、上記の具体的な文字列や数値及び図面中の具体的な文字列や数値は例示であり、これらの文字列や数値には限定されない。