1. 導入:なぜ制御システムの「リスク分析」が重要なのか
製造業やインフラを支える制御システム(OT: Operational Technology)は、一度侵害されると大規模停電や生産停止など、甚大な社会的影響を及ぼします。近年、ITとOTのネットワークが融合する中で、従来の「境界防御」だけでは防ぎきれないサイバー攻撃が増加しています。IPAの「制御システムのセキュリティリスク分析ガイド」でも強調されている通り、「限られた予算と人員の中で、いかに効果的にリスクを特定し、優先順位付けを行うか」が、現場の担当者にとって最大の課題です。本記事では、リスク分析の考え方と、それを実務で管理・自動化するためのアプローチを解説します。
2. 基礎知識:リスク分析の2つのアプローチ
IPAのガイドでも紹介されているように、リスク分析には主に2つの手法があります。
資産ベースのリスク分析:
保有しているデバイスやサーバーなどの「資産」をリストアップし、それぞれにどのような脆弱性があり、どのような脅威が考えられるかを分析する手法です。網羅的ですが、膨大な資産を抱える現場では手間がかかります。
事業被害ベースのリスク分析:
「製造ラインが止まったらどれだけの損失が出るか」という事業影響から逆算する手法です。ビジネスにとってクリティカルなプロセスを特定し、そこを守るための対策に注力するため、効率的なリソース配分が可能です。
3. 実装/解決策:リスク評価を仕組み化する
実務では、Excelでの管理から脱却し、リスク評価を半自動化することが重要です。まずは「資産台帳」と「脅威シナリオ」を紐付け、リスク値を算出する簡単なプログラムを構築することから始めましょう。
例えば、以下の3要素でリスクスコアを算出します。
リスクスコア = 資産価値(1-5) × 脅威の発生確率(1-5) × 脆弱性の深刻度(1-5)
4. サンプルプログラム:リスクスコア算出の自動化(Python)
このプログラムは、資産ごとのリスクスコアを計算し、優先順位付けを行うための基礎的なコードです。
リスク評価を行うための簡易クラス
class RiskCalculator:
def __init__(self, asset_name, asset_value, probability, severity):
self.asset_name = asset_name
self.asset_value = asset_value # 資産価値(1-5)
self.probability = probability # 発生確率(1-5)
self.severity = severity # 脆弱性の深刻度(1-5)
def calculate_risk(self):
# リスクスコアを計算(最大125)
return self.asset_value self.probability self.severity
評価対象の資産リスト
assets = [
RiskCalculator(“PLC制御サーバー”, 5, 4, 5),
RiskCalculator(“監視用ワークステーション”, 4, 3, 3),
RiskCalculator(“社内向けプリンター”, 1, 2, 2)
]
print(“— セキュリティリスク分析結果 —“)
for asset in assets:
score = asset.calculate_risk()
# 評価基準の提示
priority = “高” if score >= 60 else “中” if score >= 20 else “低”
print(f”対象: {asset.asset_name} | スコア: {score} | 優先度: {priority}”)
5. 応用・注意点:現場で陥りやすいバグの回避策
① 静的な分析で終わらせない
制御システムは構成変更が少ないと思われがちですが、保守作業でのUSBメモリ利用や、一時的なネットワーク接続など、動的なリスクが常に存在します。分析結果は「一度作って終わり」ではなく、四半期ごとの見直し(レビュー)を運用プロセスに組み込んでください。
② 「資産価値」の判断基準を統一する
現場の担当者によって「価値」の定義がブレると分析結果が歪みます。IPAのガイドを参考に、事業継続性に与える影響度(売上減少額や復旧時間など)を指標として数値化し、チーム内で合意形成しておくことが、後々のトラブルを防ぐ鍵となります。
まずはIPAのオンラインセミナーや公開されているPDF資料を確認し、自社の環境に当てはめて「何を守るべきか」を可視化することから始めてみてください。

コメント