セキュリティ設計の基本原則



# 1. セキュリティメカニズムの基本体系


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515709/fcffa7f7-993a-491e-af78-15e4333514c3.png)


## 1.1 マーフィーの法則
**マーフィーの法則**（Murphy's Law）  
エドワード・マーフィー（Edward A. Murphy）が提唱した心理学効果。  
「ある行為を実行する方法が複数存在し、そのうち1つの方法が災害を引き起こす可能性がある場合、誰かが必ずその方法を選ぶ」という命題。  

**セキュリティにおける教訓**:  
- 潜在的なリスクを過小評価しない
- 問題発生する可能性がある場合は必ず発生する
- 想定外の事態に備えた設計が必要

## 1.2 情報セキュリティの目標
| 目標（日本語） | 英語表記        | 説明                                                                 |
|----------------|-----------------|----------------------------------------------------------------------|
| 真正性         | Authenticity    | 情報の発信源を検証し、偽造された情報を識別する能力                   |
| 機密性         | Confidentiality | 許可されないアクセスから情報を保護し、内容を秘匿する                 |
| 完全性         | Integrity       | データが意図せず改ざんされない状態を維持する                         |
| 可用性         | Usability       | 正当なユーザーが必要時にリソースを利用可能な状態を保証する           |
| 否認防止       | Non-repudiation | 行為の実行を後から否認できないようにする責任追跡メカニズム           |
| 制御性         | Controlability  | 情報の伝播経路とコンテンツを管理・制御する能力                       |

## 1.3 セキュリティ防護レイヤー
| 防御層           | 英語表記            | 主な対策内容                                     |
|------------------|---------------------|--------------------------------------------------|
| 物理的セキュリティ | Physical security  | デバイス/ホスト機器の物理保護、データセンター環境 |
| システムセキュリティ | System security    | OSレベルのセキュリティ対策                       |
| アプリケーションセキュリティ | Application Security | アプリケーションレイヤの脆弱性対策               |
| ネットワークセキュリティ | Network security   | ファイアウォール、アクセス制御ポリシー           |
| データセキュリティ | Data security       | 暗号化、バックアップ/リストア戦略                |
| 管理セキュリティ   | Manage security     | ポリシー策定、監査プロセス、運用ガイドライン     |

## 1.4 主要サイバー攻撃手法（STRIDEモデル）
| 攻撃手法         | 英語表記                  | 詳細説明                                                                 |
|------------------|---------------------------|--------------------------------------------------------------------------|
| なりすまし       | Spoofing                 | 正当なサイトを模倣し、認証情報を詐取するフィッシング攻撃                 |
| 改ざん           | Tampering                | 通信データの不正変更による情報操作                                       |
| 否認             | Repudiation              | 操作ログの削除などによる行為の否認                                       |
| 情報漏洩         | Information Disclosure   | アクセス権限のないユーザーへの機密情報暴露                               |
| サービス拒否      | Denial of Service        | システムリソースの枯渇を引き起こす大規模アクセス                         |
| 権限昇格         | Elevation of Privilege   | 脆弱性を悪用した管理者権限の不正取得                                     |

## 1.5 セキュリティ設計の基本原則
1. **成熟したセキュリティシステムの採用**  
   実績のあるフレームワーク/プロトコルを優先

2. **入力検証の徹底**  
   「全ての入力は悪意あるもの」と仮定したチェック機構

3. **外部依存システムのリスク管理**  
   サードパーティシステムを信用しない設計

4. **最小権限の原則**  
   必要最小限のアクセス権のみ付与

5. **インターフェース簡素化**  
   外部公開ポイントを可能な限り削減

6. **セキュアバイデフォルト**  
   初期設定状態で最大限の保護を実現

7. **STRIDEモデルによる脅威分析**  
   各攻撃ベクトルへの対応策を網羅的に検討

8. **多層防御アプローチ**  
   単一の防御策に依存しない多重チェック体制

## 1.6 主要セキュリティ技術
```bash
# 認証（Authentication）
$ openssl s_client -connect example.com:443 -servername example.com

# 認可（Authorization）
$ curl -H "Authorization: Bearer <token>" https://api.example.com

# 監査（Audit）
$ journalctl -u nginx.service --since "2023-01-01" --until "2023-12-31"

# 安全な通信（Secure Communication）
$ nmap --script ssl-enum-ciphers -p 443 example.com
```

**技術体系図**:  
```
[認証] → [認可] → [暗号化]
       ↑        ↓
[監査] ← [侵入検知] ← [脆弱性管理]
```

**クラウドネイティブ時代の注意点**:  
- マイクロサービス間通信の相互認証
- コンテナランタイムのセキュア構成
- シークレット管理の自動化
- CI/CDパイプラインのセキュリティゲート