セキュリティは、開発が終わった後でアプリケーションに後付けできるものではありません。フラットな一つのネットワーク、一つのデータベースユーザー、「認証済みの呼び出し元」という一つの暗黙の概念で設計されたシステムは、周囲にスキャナーやファイアウォールをいくつ配置しても、その性質を持ち続けます。その段階で意味のある是正は構造的なものになりますが、プロジェクト終盤での構造変更は高くつき、たいていは先送りされます。
システムのセキュリティ態勢の大部分は、4つの設計判断で決まります。信頼境界は、データがある信頼レベルから別の信頼レベルへ移る場所、つまり検証と認証を行わなければならない場所を定めます。アイデンティティは、すべてのユーザーとワークロードが自らをどう証明し、その証明が呼び出しの連鎖の中をどう伝わるかを定めます。データ分類は、どのデータに暗号化、マスキング、アクセス制限、データレジデンシーの管理が必要かを定めます。影響範囲(ブラストラディウス)は、攻撃者が一つのコンポーネントを侵害した後に何に到達できるかを定めます。
これらを早い段階で正しく決めておけば、後の管理策はシンプルで局所的なものになります。スコープを狭く絞った認証情報しか持たないサービスは、そもそも読み取れなかったデータベースを漏えいさせることはできません。データ層で強制されるテナント識別子は、一つのハンドラーでチェックが抜けていても迂回できません。私たちはこれらを、可用性やレイテンシと同じ重みを持つアーキテクチャ要件として扱います。