DEVELOPMENT LOG / SOFTWARE
DEV LOG #7428 CURRENT

接続文字列をGitから分離する — .NET Configuration Security

SHIHA開発環境のGit導入に伴い、APIキーやDB接続文字列などの秘密設定をソースコードから分離する具体的運用を決定した。.NET Frameworkではconnections.config外部化、.NET CoreではUser Secretsを開発時に利用し、Gitへ実値をコミットしない。

DATE
2026.09.07
CATEGORY
SOFTWARE
COMPONENT
Git / .NET Configuration Security
STATUS
BUILDING

概要

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

を置く。

ここには実際の、

等を入れない。

必要な設定形式だけを示す。

.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

← 開発ログ一覧