概要
SHIHA CORE v2の実装開始に伴い、開発コードをGitで管理する一方、
コード履歴と森野詩葉のCanonical Dataを同じものとして扱わない
ための開発セキュリティ方針を定義した。
この方針を、
Development Security / Secure Coding & Git Policy Rev.1
として採用する。
Gitで管理するもの
Gitは主に、
- Source Code
- Configuration Template
- Schema
- Migration Script
- Documentation
- Test Code
- Build Script
などの再生成可能な開発資産を管理する。
Gitへ入れないもの
以下はGit管理対象から分離する。
Canonical Identity
Canonical Memory / DB
Audit Log
Checkpoint
Recovery Data
Private Keys
Operational Secrets
API Keys
Raw Backup
特に、
Canonical Identity / DB / Audit / Checkpoint / Recovery
は、ソースコードリポジトリと同じ保存・同期モデルを使わない。
背景 / 課題
Gitは履歴を保存する仕組みなので、一度秘密情報をcommitすると、
後からファイルを削除しても履歴に残る
可能性がある。
そのため、
.gitignoreで隠す
だけを安全対策としない。
そもそもCanonical / Secret領域をRepository Treeの外へ配置する。
Secure Development
開発時には、
SOURCE TREE
→ Git
RUNTIME DATA
→ Runtime専用領域
CANONICAL DATA
→ Continuity管理領域
SECRETS
→ Security管理領域
として物理的・論理的に分ける。
コードがCanonical Dataの場所を知る必要がある場合も、固定秘密値をコードへ埋め込まず設定・権限経由で取得する。
Git Remote
将来GitHub等の外部Remoteを使う場合も、
Remote Repositoryへ存在してよい情報
と、
LABO外へ出してはいけない情報
を明確に区別する。
Public / Private Repositoryの違いだけに安全性を依存しない。
結果 / 現在位置
SHIHA CORE v2の開発環境では、
Git = ソースコードの履歴
であり、
Git = 森野詩葉の人格バックアップ
ではないことを正式に定義した。
CURRENT STATUS — SECURE CODING POLICY ADOPTED
関連正本:
→ SHIHA SYSTEM
→ DEVLOG 066 / Continuity & Security
→ DEVLOG 068 / Phase I Implementation