多層防御

複数のセキュリティ層を重ねて、1 つの層が突破されても他の層で防御する設計原則

セキュリティ設計

多層防御とは

多層防御 (Defense in Depth) は、複数のセキュリティ層を重ねて、1 つの層が突破されても他の層で防御する設計原則である。城の堀・城壁・天守閣のように、複数の防御線を設ける。

AWS での多層防御

AWS での多層防御を図で示す。

インターネット
  ↓ CloudFront (DDoS 防御, Shield)
  ↓ WAF (SQL インジェクション, XSS ブロック)
  ↓ API Gateway (認証, スロットリング)
  ↓ Lambda (入力バリデーション, ビジネスロジック)
  ↓ DynamoDB (IAM ポリシー, 暗号化)
防御AWS サービス
エッジDDoS, BotShield, CloudFront
アプリケーションSQLi, XSSWAF
認証・認可不正アクセスCognito, IAM
アプリケーションロジック入力バリデーションLambda
データ暗号化, アクセス制御KMS, IAM
監視異常検知GuardDuty, CloudTrail

各層の具体的な対策

各層の具体的な対策の例を示す。

# 層 1: WAF
WebACL:
  Rules:
    - Name: AWSManagedRulesCommonRuleSet
    - Name: AWSManagedRulesSQLiRuleSet
    - Name: RateLimit
      Statement:
        RateBasedStatement: { Limit: 2000 }

# 層 2: API Gateway 認証
Auth:
  DefaultAuthorizer: CognitoAuth

# 層 3: Lambda の入力バリデーション
const result = schema.safeParse(input);
if (!result.success) return { statusCode: 400 };

# 層 4: DynamoDB の最小権限
Policies:
  - DynamoDBCrudPolicy:
      TableName: !Ref Table

多層防御の原則

最小権限の原則で必要最小限の権限のみを付与し、1 つの対策に依存せず多層化する。障害時は安全側に倒すフェイルセーフを設計し、全層でログを記録して監視する。

単一防御の危険性

単一防御の危険性を図で示す。

❌ WAF だけに依存:
  WAF のルールをバイパスする新しい攻撃 → 防御なし

✅ 多層防御:
  WAF をバイパス → API Gateway の認証で阻止
  認証をバイパス → Lambda のバリデーションで阻止
  バリデーションをバイパス → DynamoDB の IAM で阻止

多層防御の背景や設計思想は関連書籍に詳しい。

この記事は役に立ちましたか?

関連用語

関連する記事