こんにちは!日々の開発やインフラの管理、本当にお疲れ様です。
セキュリティの世界へようこそ!「インシデントレスポンス」や「フォレンジック」といった言葉を聞くと、なんだか映画に出てくるサイバー警察みたいで、自分には少し遠い世界に感じてしまうかもしれませんよね。でも大丈夫です。今日は、私たちが普段使っているシステムを守るための、とっても身近で賢い技術「UEBA(ユーザー・エンティティ行動分析)」について、おしゃべりするようにお話ししていきますね。
専門用語が出てきても置いてけぼりにしたりはしませんので、一歩ずつ、美味しいコーヒーでも飲みながらリラックスして読み進めていきましょう!
—
1. 家の鍵と「いつもと違う」違和感のお話
まずは、セキュリティの基本を身近な「お家」に例えて考えてみましょう。
想像してみてください。あなたには、毎日決まった時間に家を出て、会社に行って、夜には帰ってくるという「ルーティン」がありますよね。近所の人も、あなたが朝8時に家を出るのをなんとなく知っています。
ある日、夜中の3時に、あなたの部屋の窓から見知らぬ人がこっそり侵入しようとしていたら……? ご近所さんはきっと、「あれ? あの人、いつもと違う時間に、しかも窓から入ろうとしているぞ!」と気づいて、すぐに警察(SOC:セキュリティ運用の専門チーム)に通報してくれるはずです。
これが、まさにUEBA(User and Entity Behavior Analytics)の考え方です。
従来のセキュリティの限界
これまでのセキュリティは、「合鍵(パスワード)を持っている人なら誰でもウェルカム!」というスタンスが主流でした。そのため、攻撃者が本人のパスワードをこっそり盗み出して、いつも通りにログインしてくると、システムは「あ、本人だね、いらっしゃい!」と中に入れてしまっていたのです。
これでは泥棒が家族の顔色を完全に真似して家に入ってくるようなもので、防ぐのがとても難しかったんですよね。
UEBAは何をしてくれるの?
そこで登場するのがUEBAです。UEBAは、人間やデバイス(パソコンやサーバーなど)の「いつもの行動(ベースライン)」をAIや機械学習の力を使って細かく学習します。
- 「このユーザーは、いつもは平日の朝9時から夕方6時まで、東京のオフィスからアクセスしているな」
- 「一回にダウンロードするファイルのサイズは、だいたい数メガバイト程度だな」
こういう「普段の姿」をしっかり覚えておき、「あれ? 夜中の2時に、普段はアクセスしない海外のIPアドレスから、社内の機密データを一気に全部ダウンロードしようとしているぞ……これ、絶対におかしい!」と、「いつもと違う行動(異常)」を検知してアラートを上げてくれるのです。
—
2. UEBAがチェックしている3つのポイント
では、UEBAは具体的にどんなところを見ているのでしょうか? 主な3つのポイントを優しく見ていきましょう。
1. 時間の異常(いつ?)
- 深夜や休日など、普段絶対に仕事で使わないような時間帯にシステムにログインしていないか?
2. 場所・端末の異常(どこから?)
- 普段は日本のオフィスからなのに、なぜか数分後にブラジルからアクセスが来ていないか? 見慣れないスマホやPCから突然重要なデータに触れていないか?
3. 行動量の異常(なにをした?)
- 普段はメールを見るだけの一般社員のアカウントが、突然社内のすべての顧客リストをダウンロード(大量のデータ転送)していないか?
これらを総合的に見て、「うーん、今日のこの動きは確率的に5%以下だぞ。怪しい!」と判断するわけです。
—
3. 【実務編】UEBAの仕組みをPythonのコードで覗いてみよう!
「AIや機械学習なんて難しそう……」と思うかもしれませんが、裏側で行われていることは、実は私たちの生活にある「平均値とズレ」の計算と基本は同じです。
ここでは、新人の開発者やインフラ担当者の方に向けて、Pythonを使って「ユーザーの普段のログイン時間から、大きく外れた異常なアクセスを検知するシンプルなプログラム」のサンプルをご紹介します。
実務のログ解析やモニタリングツールを作る際の参考にしてみてくださいね。
import numpy as np
from sklearn.ensemble import IsolationForest
# 模擬データを用意しましょう
# 特徴量1: ログイン時刻(例: 9時〜18時を正常とするため、0〜24の数値)
# 特徴量2: ダウンロードしたデータ量(MB単位)
# 【正常なユーザーの普段の行動データ(ベースライン)】
# 毎日だいたい9時〜18時の間にログインし、データは1MB〜50MB程度しか扱わない
np.random.seed(42)
normal_login_hours = np.random.normal(loc=10.0, scale=1.5, size=200) # 平均10時、ばらつき1.5時間
normal_data_transfer = np.random.normal(loc=20.0, scale=10.0, size=200) # 平均20MB、ばらつき10MB
# データを2次元の配列にまとめる
X_train = np.column_stack((normal_login_hours, normal_data_transfer))
# Isolation Forest(孤立森)という、異常検知でよく使われる機械学習モデルを準備します
# 「めったに起切らない珍しいデータ(孤立しているデータ)」を見つけるのが得意なアルゴリズムです
model = IsolationForest(contamination=0.01, random_state=42) # 全体の1%を異常と仮定
# モデルに「いつもの行動(ベースライン)」を学習させます
model.fit(X_train)
print(">>> ユーザーの普段の行動ベースラインの学習が完了しました!\n")
# --- ここから新しいアクセスの監視(インシデント検知のシミュレーション) ---
# テストケース:今日のアクセスデータ
# ケースA: いつも通りの時間にアクセスし、少しだけ作業した人(正常なはず)
# ケースB: 夜中の3時にこっそりログインし、大量のデータを持ち出そうとした人(怪しい!)
X_test = np.array([
[10.5, 25.0], : # ケースA: 10時半に25MBのデータ転送
[3.0, 500.0] # ケースB: 深夜3時に500MBのデータ転送(怪しい動き!)
])
# モデルを使って、これらの動きが「正常(1)」か「異常(-1)」かを判定します
predictions = model.predict(X_test)
# 結果を出力して確認してみましょう
for i, pred in enumerate(predictions):
user_type = "正常なアクセスです(いつも通りですね)" if pred == 1 else "【警告】異常な行動を検知しました!調査が必要です!"
print(f"テストケース {i+1}: {user_type} (判定値: {pred})")
このように、難解な数式を使わなくても、Pythonのライブラリを使えば「いつものベースラインから大きく外れた動き」をコードで表現・検知することができます。現場のログ監視システムやSIEM(セキュリティ情報イベント管理)の裏側でも、こうした考え方をベースにした高度なアルゴリズムが動いているのです。
—
4. 現場の落とし穴:UEBAを導入するときのリアルな悩み
さて、ここまで聞くと「じゃあ、UEBAを導入すれば完璧だね!」と思われるかもしれませんが、私たちSOCの現場では、少しだけ頭を悩ませる問題もあります。それが「誤検知(False Positive)」です。
例えば、こんなケースを想像してみてください。
- いつもは真面目な開発担当者が、締切直前でどうしても夜中の2時に会社から緊急対応することになった。
- そのせいで、いつもと違う時間、いつもより大量のデータをダウンロードしてしまった。
UEBAのAIからすると、「おや? 深夜だし、データ量も多いぞ! 異常だ!」と判断して、盛大にアラートを鳴らしてしまいます。実際にはただ一生懸命お仕事をしているだけなのに、セキュリティチームから「あなた、怪しい動きをしていますよ!」と連絡が来てしまうわけですね。
どうやって対策するの?
こうした「人間らしい例外」をうまく扱うために、実務では以下のようなチューニングを行います。
- コンテキスト(文脈)の追加: 単に時間や量だけでなく、「現在、その人が社内のプロジェクトで深夜対応のシフトに入っているか?」といった人事情報やスケジュール情報を組み合わせる。
- フィードバックの学習: 「これは本人の正当な作業でした」と管理者がボタン一つで学習させ、AIに「こういう例外もあるんだよ」と教えてあげる。
セキュリティの自動化や機械学習は魔法の杖ではありません。「完璧ではないけれど、人間の目では見逃してしまうような小さな違和感をキャッチしてくれる心強い相棒」くらいに捉えておくのが、現場でうまく使いこなすコツになります。
—
5. まとめ:一歩ずつ、セキュアな環境を作っていこう
今回は、UEBA(ユーザー・エンティティ行動分析)の基本的な仕組みから、身近な例え、そしてPythonを使った簡単なコードまで幅広くお話ししてきましたがいかがでしたでしょうか?
- セキュリティは「合替チェック」だけでなく、「いつもの行動(ベースライン)からのズレ」を見る時代へシフトしている。
- UEBAは、時間・場所・行動量などの特徴をAIに学習させ、泥棒(不正アクセス)の違和感をいち早く見つけてくれる。
- ただし、人間のイレギュラーな作業による誤検知もあるため、現場の運用とセットで優しく育てていくことが大切。
「難しそうだな」と思っていたセキュリティやログ分析も、私たちの日常生活の防犯意識と繋げて考えてみると、ぐっと身近に感じられるようになったのではないでしょうか?
インシデントレスポンスやDFIRの世界は奥が深く、学ぶべきことはたくさんありますが、今日知った「いつもと違う違和感に気づく目」を大切にすれば、きっとあなたの作るシステムやサービスは、より安全で信頼できるものになっていきますよ。
それでは、また次回のセキュリティ解説でお会いしましょう!日々の開発、応援しています!
コメント