ゼロ トラストは、最近のサイバーセキュリティ業界で人気のトピックですが、ゼロ トラストの考え方の重要な要素として侵害を想定するという概念を持ち出すと、いまだに奇妙な顔をされます。この反応の理由が、次の2つのいずれかであると私は考えています。まず、一部のセキュリティ担当者は、これをひどく悲観的な世界観だと解釈しているようです。「侵害を想定する」ことを受け入れると、「つまり絶望的だということですね。ではお手上げなので、努力するのをやめましょう」ということになってしまいます。また、もっとプライドの高い人は、「あなたの会社のセキュリティは侵害されるかもしれませんが、うちの会社のセキュリティは堅固なので、攻撃者が突破することはありません」というような態度をとるかもしれません。
私は、こうした両極端の考え方ではなく、むしろデジタル世界での運用の現実を受け入れることを強調したいのです。つまり、侵害は発生するものであり、だからこそ、あらゆるセキュリティ システムの設計に組み込むことができるし、組み込むべきだということです。これは新しい概念ではなく、何世代にもわたってこれを受け入れてきた職人や商人の知恵から私たちはインスピレーションを得なければなりません。
物理的な世界で活動する配管工、電気技師などの専門家は、「侵害を想定する」ということの本質を昔から体得してきました。彼らが仕事として講じる解決策は、具体的な環境で堅牢でなければならないため、彼らは仕事の範囲内で失敗が起こるという単純な事実を暗黙のうちに受け入れ、取り入れています。彼らはまた、その失敗が自分のスキルを非難するものではなく、仕事を放棄する理由にもならないことを理解しています。むしろ、仕事がいつかは失敗することを理解し、過去の失敗から学んだことを取り入れ、将来の失敗の可能性を予測できるのは、最も熟練した人だけです。
私は最近、そのような失敗に対処しました。家の下水道が排水路の途中で詰まってしまったのです。家は築30年を超えているため、故障(侵害)があっても驚くようなことではありません。結局のところ、どのようなシステムでも、長期間使えば、侵害の可能性は100%に近づくのです。
まさにここがポイントです。時間が経過すれば障害が予測されることは、うちの配管システムと同様に、アプリケーション セキュリティ ソリューションにも当てはまります。さらに、「うちの配管システムは決して故障しない」と仮定することは、「自社のサイバー対策が破られることはない」と考えるのと同じくらい、家庭のメンテナンス戦略として適切ではありません。
したがって、配管工とサイバーセキュリティ担当者の考え方には、いつかは発生する障害(侵害)に対する対処法が組み込まれている必要があります。
物理的かサイバーかを問わず、システム障害に対処するための効果的な戦略には、通常、3つの要素があります。
可視性。できるだけ早く障害を検知できるように、十分な可視性を確保します。浴室の排水管からの水漏れを点検せずに放置すると、床下が腐り、カビが発生し、数か月、あるいは数年経たないとそれに気付かないこともあります。また、2階の浴室で床下の水受けパンがあふれて乾式壁に浸透して、浴室の下に位置する天井から水が垂れているのに気付くこともあります。いずれの場合も、問題が最初に検出されるのは、最初の障害からしばらくして、さらに二次被害が発生した後です。
障害/侵害を想定する最初の原則は、障害の発生後できるだけ早く、侵害の可能性を示す明確な指標を示すことであり、理想的には、障害の可能性がある場合は積極的に通知することです。例えば、汚水ポンプで排水している地下室には通常、センサーがあり、水位が事前に設定したしきい値を超えるとアラームが鳴ります。可能性のあるすべての障害状態に対してプロアクティブなアラートを発することが難しい場合は、半年ごとの給湯器の点検など、定期的な保守点検を実施します。
サイバーセキュリティでは、これはアプリケーション セキュリティ アーキテクチャに、最も重大な障害状態を考慮に入れ、考えられるあらゆる侵害をタイムリーに可視化するテレメトリ戦略を検討およびテストして組み込む必要があることを意味します。実際には、AISecOpsの手法を使用した分析・通知ツールにテレメトリをストリーミングし、同時に後で利用できるようにデータ ストアに保持します。有効性を高め、人間にコンテキストを提供し、タイムリーに対応するには、AIとアラート ツールを使用する必要があります。保持したデータは学習に使用され、今後さらに情報の堅牢性を高めるために役立てられます。
堅牢性。解決策には、障害を回避する、または障害の期間を短縮するための手段を組み込む必要があります。ここで言う堅牢性の一般的なパターンには、(a)グレースフル デグラデーションと(b)冗長性があり、劣化したコンポーネントで動作することの実行可能性に応じて選択されます。給湯器のようなシステムでは、どちらのパターンもある場合があります。例えばうちの給湯器は、ポンプによる再循環システムを使用して常にお湯を使える状態になっています。ポンプが故障してもお湯は出ますが、少し待たなければなりません。一方、加熱コイル センサーが故障して加熱素子が遮断されなくなると、致命的な故障につながる可能性があるため、圧力リリーフ バルブという形で冗長性を持たせています。
堅牢性は、システムの複数の範囲で検討する必要があります。例えば、排水管のみの範囲では、配管工は業務用の解決策として、冗長性を持たせるため排水管を2本設置して、一方が故障しても排水管が使えなくなるのを回避することができます。一方、システム レベルで抽象化を行う建築士は、近くに2つ目のシンクやトイレを追加するなど、システム レベルで冗長性を設計できます。これには、排水管の詰まりだけでなく、より多くの障害状態に対処できるメリットもあります。
確かに、多くのセキュリティ デバイスがアクティブ/スタンバイ(完全な冗長性)モードまたはアクティブ/アクティブ(グレースフル デグラデーション)モードで導入されており、サイバーセキュリティにおいて冗長性は一般的な手法です。ただし、サイバーセキュリティの世界は物理的な世界とは少し異なります。まず、サイバーセキュリティの世界には意図と知性を持った積極的な攻撃者が存在し、この事実は、障害が自然な原因で発生することはめったにないことを意味します。2つ目のより大きな違いは、規模です。ソフトウェアは物理的ではなく仮想的なものであるため、「一度書き込んで、何度でも導入できる」というパラダイムに従います。これはスケーリングにとって素晴らしい特性ですが、コア ソフトウェア コンポーネントのコードに脆弱性があると、システム内のそのコードのすべてのインスタンスに影響を与える可能性が高いことも意味します。こうした堅牢性を確保するためのサイバーセキュリティ ソリューションは、単一障害点(単一クラスの障害要素)を回避することにも基づいているため、この戦略は「多層防御」とも呼ばれます。この考え方を実践した好例が多要素認証です。各要因の障害状態(侵害する手段)は異なり、いずれかの要因が侵害されても、システム全体が侵害されることはありません。
封じ込め。障害の影響(ブラスト ゾーン)を制限することが重要です。障害や侵害が発生することを受け入れるのと同様に、単一障害点を完全に回避することや、機能要件ごとに冗長性を持たせることができないことも受け入れなければなりません。したがって、建築士は、良し悪しを判断する2つの重要な指標として努力と結果の両方を使用して、障害の影響を最小限に抑える方法も検討する必要があります。例えば、配管工は、排水管にさらに水抜き口を戦略的に配置して、修復時間を短縮することができます。また、より致命的な障害については、請負業者が配管の漏れを修繕しやすくするために亜鉛メッキではなくPVC製の排水管を選び、修繕の労力を減らすこともできます。一般的な家庭用配管工事では、障害が見つかった場合の影響を抑えるために遮断弁を組み込むことで、洗面台や床への二次被害を防ぎます。
サイバーセキュリティの世界の概念では、分離、保守性、モジュール性がこれに相当します。分離とは、付随的被害を最小限に抑えることや、出血を止めることです。ベスト プラクティスとしては、マイクロセグメンテーションなどのテクノロジを使用して、サーキット ブレーカーとして機能するインフラストラクチャを用意することなどがあります。保守性とは、可能であれば、侵害された状態から侵害される以前の状態にすばやく少ない労力で戻せることを意味します。例えば、メモリ オーバーフロー攻撃で侵害されたワークロードを再起動することは、(不完全ではありますが)効果的な緩和方法となり得ます。モジュール性とは、同等の機能コンポーネントを簡単に交換できるシステムを構築することを指し、これにより、メンテナンスが不可能または不十分な場合に修復に必要な労力を最小限に抑えることができます。
これらは、侵害に対処するために私が学んだベスト プラクティスの一部ですが、他にないわけではありません。さらに重要なのは、アプリケーションの保護を担当する開発者やセキュリティ専門家が、漏えいが発生し、侵害が必然的に起こることを理解することです。そのように考えると、これらの障害にどのように備え、対処するかは、障害の頻度を最小限に抑えるためにすべきことと同じくらい重要であり、慎重に検討する価値があります。
最終的に私たちは、侵害が発生した頻度だけでなく、必然的に発生した侵害にどれだけ適切に対処できるかによっても評価されるのです。