セキュア設計の原則: SANSが提唱するSecure Design Principles

セキュリティ

SANSのSecure Design Principlesは、安全なシステムとアプリケーションを設計するためのフレームワークを提供するガイドラインです。これらの原則は、ソフトウェアシステムの開発および展開中に生じる可能性がある一般的なセキュリティの脅威や脆弱性に対処することを目的としています。

メカニズムの経済性(Economy of Mechanism)

メカニズムの経済性の原則は、可能な限りシンプルで、動く部品が最小限に抑えられたシステムを設計することを述べています。これにより、さまざまなコンポーネント間の複雑な相互作用に起因する脆弱性のリスクが低減されます。システムをシンプルに保つことで、理解しやすく、セキュリティを確保しやすくなります。

フェイルセーフデフォルト(Fail-safe Defaults)

フェイルセーフデフォルトは、ユーザーの入力が不正または悪意のある場合でも、システムが安全に動作するように設計する必要があることを要求します。デフォルトでは、システムは、機密性の高いリソースにアクセスを拒否し、明示的に承認された場合にのみアクセスを許可するように設定される必要があります。この原則は、特に財務または健康記録などの機密情報を扱うシステムにおいて重要です。

完全な仲介(Complete Mediation)

完全な仲介の原則は、リソースまたは操作へのすべてのアクセスが承認されていることを確認する必要があることを要求します。この原則により、すべてのリクエストが検証され、承認されてから機密情報にアクセスできるようになるため、不正アクセスを防ぐことができます。

オープン設計(Open Design)

オープン設計は、サードパーティのセキュリティ専門家によるレビューおよび監査が可能なシステムを設計することの原則です。外部からシステムをレビューできるようにすることにより、脆弱性を特定して修復することができます。

特権の分離(Separation of Privilege)

特権の分離の原則は、一部の機能やデータにアクセスするためには特別な権限が必要であることを示しています。特権アクセスを最小限に制限することで、悪意のあるユーザーや攻撃者からリソースを保護し、権限の乱用を防止することができます。

最小権限(Least Privilege)

最小権限の原則は、ユーザーまたはプログラムに必要な最小限のアクセス権限を与えることを示しています。これにより、攻撃者が特定のリソースにアクセスできるリスクを低減し、データや機能の誤使用を防止することができます。

最小共通仕組み(Least Common Mechanism)

最小共通仕組みの原則は、複数のユーザーや機能が同じ仕組みを共有しないようにすることを示しています。これにより、システム内の1つのコンポーネントに影響を与える攻撃が他のコンポーネントにも影響を与えることがなくなります。

心理的受容性(Psychological Acceptability)

心理的受容性の原則は、ユーザーがシステムを正しく使用することを促進することを示しています。ユーザーが簡単に使用できるようにすることで、誤った操作や誤解からのエラーを低減し、システムのセキュリティを向上させることができます。

最も脆弱なリンクの保護(Securing the Weakest Link)

最も脆弱なリンクの保護の原則は、システム内で最も脆弱な部分を特定し、保護することを示しています。攻撃者が最も容易に攻撃できる箇所を保護することで、システム全体のセキュリティを向上させることができます。

深層防御(Defence in Depth)

深層防御の原則は、システムに多層のセキュリティ機能を組み込むことを示しています。これにより、攻撃者がシステムに侵入しようとする際に、複数のセキュリティ機能が必要になり、攻撃者の攻撃を防止することができます。

信頼をためらう(Reluctance to Trust)

信頼をためらう原則は、信頼できるソース以外からの入力や情報を慎重に扱うことを示しています。信頼できる情報源やプログラム以外からの入力を受け取る際には、適切な検証や検査を行うことが必要です。これにより、攻撃者からの悪意のある入力や情報を受け取ることを防止し、システムのセキュリティを向上させることができます。

プライバシーの促進(Promoting Privacy)

プライバシーの促進原則は、ユーザーのプライバシーを保護することを示しています。個人情報を適切に保護することで、ユーザーの信頼性を高め、システムのセキュリティを向上させることができます。

まとめ

SANSのSecure Design Principlesは、安全なシステムやアプリケーションを設計するためのガイドラインを提供します。これらの原則に従うことで、開発者は脆弱性のリスクを減らし、機密データを潜在的な脅威から保護することができます。

コメント