Skip to content
Merged
1 change: 1 addition & 0 deletions .github/workflows/gitleaks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ jobs:
run: |
gitleaks detect \
--source . \
--log-opts="--all" \
--redact \
--verbose \
--no-banner \
Expand Down
20 changes: 16 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,26 @@ coverage
.jules/
.Jules/

# Sensitive files
# Secret and Credential files
.env
.env.*
!.env.example
*.pem
*.tfstate
credentials
*.key
*credentials*.json
*credentials*.yml
*credentials*.yaml
*credentials*.env
id_rsa
Comment thread
genzouw marked this conversation as resolved.
Resolved
id_ed25519
id_ecdsa
id_dsa
*service-account*
*serviceaccount*
*.tfstate*

# AI agent workspaces
.cursor/
.claude/
.continue/
.aider*
.continue/
38 changes: 38 additions & 0 deletions docs/security/leak-prevention.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# 情報漏洩防止ガイドライン (Leak Prevention)

本リポジトリでは、ソースコードや設定ファイルに認証情報(API キー、パスワード、トークン、秘密鍵など)や個人情報が意図せずコミットされ、公開リポジトリを通じて漏洩することを防ぐため、以下の多層的な防御策を導入しています。

## 1. コミット前検知(ローカル防御)

開発者が自身のローカル環境で誤って秘密情報をコミットするのを防ぎます。

- **`gitleaks` フック**: コミット時に `.husky/pre-commit` フックを通してローカルで `gitleaks` が実行され、秘密情報を検知した場合はコミットをブロックします。
- **⚠️ 注意**: `gitleaks` が未インストールの場合、フックはスキャンをスキップします(コミットはブロックされません)。この場合、ローカルでの秘密情報検知は行われません。
- **必須**: 開発環境には [gitleaks](https://github.com/gitleaks/gitleaks) をインストールしてください。(例: `brew install gitleaks`)インストールしない場合、ローカル防御は機能しません。
- **`.gitignore` による除外**:
- `.env`, `.env.*` (ただし `.env.example` は除く)
- `*.pem`, `*.key`, `id_rsa`, `id_ed25519`, `id_ecdsa`, `id_dsa`, `*credentials*.json` 等
- AI エージェントの作業跡(`.cursor/`, `.claude/`, `.aider*` 等)はローカル環境特有の秘密情報が含まれるリスクがあるため除外しています。

## 2. CI 検知(リポジトリ防御)

ローカル環境の防御をすり抜けた場合でも、GitHub へプッシュされた時点で自動スキャンが実行されます。

- **Gitleaks ワークフロー (`.github/workflows/gitleaks.yml`)**:
- 全ての PR と `main` ブランチへのプッシュ時に、対象となるソースコードをスキャンし、secrets の漏洩があれば CI がエラー(赤検知)となります。
- **Trivy ワークフロー (`.github/workflows/trivy.yml`)**:
- パッケージの脆弱性や IaC の設定ミスに加え、シークレットのスキャン (`secret` スキャナ) も実施し、多角的に検知します。
- **権限 (Permissions) の最小化**:
- CI の各ワークフロー (`.github/workflows/*.yml`) では `permissions` が明示されており、GitHub Actions が必要以上にリポジトリを書き換える権限を持たないように設計されています。

## 3. 定期監査(継続的棚卸し)

過去の履歴を含めて、見逃しがないかを継続的に監視します。

- **週次スケジュールスキャン**:
- `gitleaks.yml` と `trivy.yml` は cron トリガー (毎週月曜日) が設定されており、Gitコミット履歴全体のスキャン(`--log-opts="--all"` による全コミット対象)および最新の脆弱性情報の取得を自動で行います。

Comment thread
coderabbitai[bot] marked this conversation as resolved.
Resolved
## 開発者の皆様へお願い

- 本番のシークレットや接続情報(DB、SaaS)を直接コードにハードコードせず、必ず環境変数を使用してください。
- PR 作成時など、誤って秘密情報を含めてしまったことに気づいた場合は、速やかに管理者に連絡し、必要に応じて該当シークレットの無効化(ローテーション)を行ってください。
Loading