英国政府のNational Cyber Security Centreは先頃、コンピュータシステムを設計する際に避けるべき6つの設計パターンに関する白書を公開した。
最初のパターンは"ブラウジングアップ(browsing-up)"によるシステム管理だ。これは、システム自体よりも信頼性の低いコンピュータや端末からシステムを管理する方法である。基本的に管理者コンピュータは最も脆弱なリンクであり、攻撃の標的になりやすい。より望ましいアプローチは"ブラウジングダウン"、すなわち、ウェブを閲覧しない、あるいは電子メールの添付ファイルを開かないなど、セーフガードを使用して管理端末をクリーンに保つことだ。
回避すべき2つめのパターンは、管理アクセスを通じて、ネットワーク内の多層防御をショートカットすることだ。これにより、例えばユーザがデータベースにアクセスするには、Webアプリケーションファイアウォールやアプリケーションサーバなどのロジックを経由しなければならないのに対して、管理アクセスでは、すべての中間層をバイパスしてデータベースに直接アクセスする権限が管理者に与えられる。推奨される解決策は、ユーザアクセスに使用されるのと同じように、管理インターフェイスにも階層化された防御を使用することだ。
回避すべきもうひとつのパターンは、同じ制御セットに対して、複数のファイアウォールを連続して配置することだ。同じコントロール(ベンダの異なることが多い)に複数のファイアウォールを使用する理由は、ひとつのファイアウォールに対するエクスプロイトに対して、第2のファイアウォールで攻撃者を阻止するためである。これに対するNCSCの反論は、ファイアウォールのエクスプロイトがデータペイロードの結果であることはまれで、大部分は管理インターフェースの脆弱性による、というものだ。いずれにせよ、管理インターフェースを公開インターネットに接続することは避けなくてはならない。また、パッチを効果的に適用すれば、攻撃者に残る手段はゼロディ・エクスプロイトのみに限定される。そして最後に、ネットワークの多層防御設計が適切であれば、そのような侵害の影響は最小限に抑えられるはずだ。これを1度、確実に実施して、ファイアウォールとその構成を積極的に維持することを、NCSCは推奨する。
"オンプレミス"ソリューションのクラウドへのリフト・アンド・シフトも避けるべきパターンである。これは通常、オンプレミスのインフラストラクチャコンポーネントがクラウドに複製されることを意味するもので、それらが依然として最適なコンポーネントであるかどうかを判断するような、適切なアーキテクチャ設計を伴わない。例えば、EC2インスタンスを立ち上げて単にオープンソースのSQLデータベースをインストールし、データベースサーバとして使用するのではなく、ネイティブAWS RDSソリューションを使用した場合と比較し、検討する必要がある。一般的には、よりハイオーダな機能を使用することで、システムへのパッチ適用や更新といった作業からリソースを解放して、より安全なシステムを実現することが可能になる。
コントロールや監視のされないサードパーティアクセスも、回避すべきパターンだ。この状況は、サードパーティ組織にサポートをアウトソーシングした結果として起こり得るものだ。このようなサードパーティは、多数のセキュリティレイヤをバイパスして、システムに直接アクセスする権限を持つ場合がある。このアンチパターンを回避するには、これまでに述べた原則に従う必要がある。すなわち、最小特権の原則に基づいてアクセスを許可し、システム内の全行動の監査証跡を確保し、サードパーティを慎重に選択することだ。
回避すべき最後のパターンは、"パッチ適用不可能なシステム"である。毎日24時間稼働する必要があり、数時間(または数日)を単位とするダウンタイムでのみパッチの適用が可能なシステムは、パッチの適用が非常に困難だ。これらは一般的に、サブシステムに冗長性のないシステムである。システムは常に、メンテナンスが容易になるように設計する必要がある。また、パッチの適用は速やかに、継続的に実行し、ダウンタイムをゼロにすることが理想だ。
白書自体は長大なものなので、ポイントを選択して詳細を読むことを推奨する。