---
title: 機密情報の保護
description: AI コーディングツールの利用時に、入力・保管・コミットの 3 層で機密情報の漏洩を防ぐ多層防御
---

パスワード・API キー・認証情報などの機密情報は、AI への入力として渡しません。
そのうえで、渡してしまった場合やファイル経由で読み取られた場合に備えて、次の多層防御で漏洩を防ぎます。

`.env` ファイルや GitHub の Secrets の扱いは、[GitHub 権限・セキュリティ](/git/security#secrets環境変数の管理)を参照してください。

## 多層防御モデル

機密情報の漏洩を、入力・保管・コミットの 3 か所で防ぎます。どこか 1 か所で漏れても、次の層で止められるようにします。

| 層 | 役割 |
|---|---|
| 1. 入力層 | AI ツールが機密情報を含むファイルを読めないようにする |
| 2. 保管層 | 本番用の機密情報をローカルに置かない |
| 3. コミット層 | Git hook で検出してコミットを止める |

### 入力層

チーム共有の設定ファイルで、AI ツールが `.env` などを読み取れないようにします。

```json .claude/settings.json
{
  "permissions": {
    "deny": [
      "Read(.env*)",
      "Edit(.env*)"
    ]
  }
}
```

:::warning[設定だけでは完全には防げない]
Claude Code の `Read` / `Edit` の deny ルールは、組み込みのファイル操作と、`cat` などの一部の Bash コマンドに適用されます。
スクリプトが間接的にファイルを開く場合は防げないため、必要に応じて sandbox を有効にしてください。
:::

ほかのツールにも、同様の設定があります。いずれも完全な保護ではないため、保管層・コミット層と組み合わせて使います。

| ツール | 設定 | 制約 |
|---|---|---|
| Cursor | `.cursorignore` | Agent が使うターミナルや MCP サーバーからのアクセスは防げない |
| GitHub Copilot | Content exclusion（リポジトリ・Organization の設定） | Copilot Business / Enterprise のみ。VS Code の Copilot Chat の Edit・Agent モードには適用されない |

### 保管層

本番用の API キーやパスワードは、ローカル環境に置きません。次のいずれかで保管します。

- **GitHub Actions の Secrets**
- **シークレット管理サービス**（1Password CLI など）
- **ホスティングサービスの環境変数やシークレット管理**

ローカルの `.env` には開発用の値だけを置きます。必要に応じて [dotenvx](https://dotenvx.com/) などで暗号化します。

AI との作業で作ったメモや下書きに機密情報が含まれる場合があります。専用のファイル名・ディレクトリを決めて `.gitignore` に追加し、リポジトリに含めないようにします。

```sh .gitignore
_credentials/
_drafts/
*.local.md
*.secret.md
```

### コミット層

コミット時に [gitleaks](https://github.com/gitleaks/gitleaks) でスキャンし、機密情報が含まれている場合はコミットを中断します。
Git hook ツール（Lefthook、pre-commit など）から実行します。

gitleaks 本体は hook ツールに含まれないため、各メンバーの環境にインストールしておきます。

```sh
brew install gitleaks
```

```yaml lefthook.yml
pre-commit:
  commands:
    gitleaks:
      run: gitleaks git --staged --redact --verbose
```

プロジェクト固有の機密情報の形式（独自の API キーの接頭辞など）は、`.gitleaks.toml` にルールを追加して検出します。

## 機密情報の漏洩時の対応

機密情報が漏洩した場合は、該当の API キー・パスワードを最優先でローテーションしたうえで、[GitHub 権限・セキュリティ](/git/security#機密情報の漏洩時の対応)の手順に従って対応してください。
