概要
DEVLOG 069では、
GitへCanonical DataやSecretを入れない
という開発セキュリティ原則を定義した。
今回はそれを既存.NETプロジェクトへ具体的に適用する。
.NET Framework
既存のWeb.configに直接書かれている接続文字列は、
Web.config
↓
connections.config
へ外部化する。
Web.config側は、
<connectionStrings configSource="connections.config" />
とする。
実値を含むconnections.configはGit管理対象外とする。
Sample File
Repositoryには、
connections.config.sample
を置く。
ここには実際の、
- Server
- Database
- User ID
- Password
等を入れない。
必要な設定形式だけを示す。
.gitignore
実値ファイルを明示的に除外する。
重要なのは、
.gitignoreを書いたから安全
と考えないことである。
初回commit前にGitが本当に無視しているか確認する。
check-ignore
確認には、
git check-ignore -v connections.config
を使用する。
これにより単に「無視された」だけでなく、
.gitignoreのどの行が効いているか
まで確認できる。
.NET Core
.NET Core開発環境では、
User Secrets
を開発時の秘密設定へ使用する。
ただしUser Secretsは暗号化保管機能ではなく、
Gitへの誤commitを防ぐための開発用分離機構
として扱う。
Production
本番ホスティング方式が未確定な現段階では、Production Secret管理方式まで固定しない。
将来Azure App Serviceを採用する場合などは、環境側の設定へ移行する。
結果 / 現在位置
DEVLOG 069で定義したSecurity Policyを、
実際の.NET設定ファイルとGit運用へ落とし込む段階
へ進めた。
069とは、
069
→ 原則 / Policy
074
→ .NETへの具体的実装
という関係にする。
CURRENT STATUS — LOCAL SECRET EXTERNALIZATION ADOPTED
関連正本:
→ DEVLOG 069 / Secure Coding & Git Policy
→ SHIHA SYSTEM
→ CORE-11 Runtime