mcpField
S
secrets-with-git-crypt

secrets-with-git-crypt

github.com/derailed-dashセキュリティ2669 回インストール6 日前に更新
リポジトリ

secrets-with-git-crypt について

secrets-with-git-cryptは、Gitリポジトリ内の機密ファイルを管理するエージェント向けスキルです。設定、暗号化、同期、検証の手順を示し、暗号化された`.enc`ファイルを追跡しながら平文ファイルを除外します。

主な機能

  1. 01git-cryptリポジトリの初期化またはロック解除
  2. 02`.gitattributes`と`.gitignore`の設定
  3. 03平文ファイルを`.enc`コピーに同期
  4. 04暗号化コピーから平文を復元
  5. 05暗号化状態とGit追跡状態の検証

活用シーン

  1. 01新しいリポジトリでシークレット管理を設定
  2. 02クローン後に暗号化ファイルをロック解除
  3. 03リポジトリ変更の準備中にシークレットを更新
  4. 04認証情報の平文がGitで追跡されていないか確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/derailed-dash/dazbo-agent-skills --skill secrets-with-git-crypt

インストール後、Claude Code で/secrets-with-git-cryptを入力して読み込まれたか確認します。

同梱ファイルscripts/git-crypt-helper.sh

詳細

Git-Crypt によるシークレット管理

このスキルは、git-crypt を使用してリポジトリのシークレット(例: .env、*.tfvars、sec.json、settings.json)を安全かつ構造化されたワークフローで管理する方法を提供します。機密性の高い認証情報が平文でコミットされることのないよう、代わりに暗号化された .enc 版を並行して維持し、Git にコミットするようエージェントを導きます。

目次

トリガー

このスキルは、以下の場合に必ずトリガーされます。

  • ユーザーが git-crypt、暗号化、復号、または シークレット管理 に言及した場合。
  • ユーザーが機密ファイル(.env、*.tfvars、settings.json、キーファイルなど)をリポジトリに保存するよう要求した場合。
  • ユーザーが暗号化されるべきファイル(例: .env、*.tfvars、sec.json)をリポジトリにコミットまたはプッシュしようとした場合。
  • .enc ファイル(例: .env.enc、terraform.tfvars.enc、settings.json.enc)を含む既存のリポジトリをクローンする場合(以前に git-crypt で保護されていたことを示します)。
  • 新しいリポジトリを初期化し、ローカル/リモートのシークレット設定をセットアップする場合。
  • 安全にコミットする必要があるシークレット認証情報を変更または追加する場合。

前提条件

  • ホスト環境: Unix 系オペレーティングシステム(例: Linux、WSL、macOS)。
  • Git: 現在のプロジェクトで git リポジトリが初期化されている必要があります。
  • git-crypt: git-crypt コマンドラインユーティリティがインストールされている必要があります。
    • インストールされていない場合、ヘルパースクリプトが Debian/Ubuntu システムで sudo apt-get install git-crypt によるインストールを試みることができます。
  • ヘルパースクリプト: skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh にあるヘルパースクリプトが実行可能(chmod +x)であることを確認してください。

シークレットの設定と同期ワークフロー

このチェックリストをコピーして、進捗を追跡してください:

Secrets Management Progress:
- [ ] Step 1: Verify git-crypt installation
- [ ] Step 2: Initialize or unlock the repository
- [ ] Step 3: Configure tracking and gitignore rules
- [ ] Step 4: Perform file synchronization
- [ ] Step 5: Verify environment security

ステップ 1: 実装前の安全性とバイナリの確認

暗号化、復号、またはシークレット同期の操作を試みる前に:

  1. Git ワークツリーの確認:

    • 作業ディレクトリが Git リポジトリ内にあることを確認します(git rev-parse --is-inside-work-tree)。Git リポジトリ内でない場合は、実行を停止し、まず git init を実行するようユーザーに促します。
  2. git-crypt バイナリとヘルパースクリプトの確認:

    • skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh にあるヘルパースクリプトが実行可能であることを確認します(chmod +x)。
    • ヘルパースクリプトの status コマンドを実行して、git-crypt がインストールされ機能しているかを確認します:
      ./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh status
      
    • git-crypt が見つからない場合は、次のコマンドでインストールを提案します:
      ./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh install
      

ステップ 2: リポジトリの初期化またはロック解除

  • これが新しいリポジトリの場合(または git-crypt を初めてセットアップする場合): セキュアキーをリポジトリの外に保存する場所を決定します(例: ~/secure-keys/my-project.key)。積極的に次を実行します:

    ./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh init ~/secure-keys/my-project.key
    

    キーが絶対に git にコミットされないようにしてください。

  • これが .enc ファイルを含むクローンされたリポジトリの場合: 既存のキーファイルへのローカルパスをユーザーに尋ね、次を実行します:

    ./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh unlock /path/to/existing.key
    

ステップ 3: 追跡と gitignore ルールの設定

プロジェクトのルートにある .gitattributes にフィルター宣言が含まれていることを確認します:

*.enc filter=git-crypt diff=git-crypt

すべての非暗号化ファイル(例: .env、settings.json、variables.tfvars)は、明示的に .gitignore に追加する必要があります。ヘルパースクリプトの sync コマンドを実行すると自動的に追加されますが、それらが Git で平文として追跡されていないことを必ず再確認してください。

ステップ 4: ファイル同期の実行

  • 暗号化バージョンへの同期(変更をコミットする前): 非暗号化のローカルファイルを、対応する .enc バージョンにコピーします:

    • 特定のファイルの場合:
      ./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh sync-to-enc .env
      
    • リポジトリ内のすべての既知の .enc ファイルの場合:
      ./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh sync-to-enc
      
  • 暗号化バージョンからの同期(クローンされたリポジトリをロック解除した後): ロック解除された .enc バージョンから、すべての非暗号化平文ファイルを復元します:

    ./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh sync-from-enc
    

ステップ 5: 環境のセキュリティ確認

ターンを終える前に、検証ループの手順を実行して、平文のシークレットがステージングまたはコミットされていないことを確認してください。


コマンドリファレンス

ヘルパースクリプトは以下のコマンドをサポートしています:

コマンド引数説明
installなしDebian/Ubuntu/WSL プラットフォームに git-crypt をインストールします。
init<key_path>git-crypt init を実行し、.gitattributes を設定し、キーをエクスポートします。
unlock<key_path>指定されたキーファイルを使用してリポジトリをロック解除します。
sync-to-enc[file]非暗号化ファイルを対応する .enc コピーに同期します。.gitignore への追加を確実にします。
sync-from-enc[file].enc コピーを非暗号化ファイルに同期/復元します。
statusなしインストール、git-crypt の初期化、およびファイル同期の状態を評価します。

検証ループ

シークレットの設定または変更を終える前に、エージェントは以下の検証手順を実行する必要があります:

1. ステータスチェックの実行

ヘルパーの status コマンドを実行します:

./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh status

すべての並列シークレットファイルが [OK] を報告することを確認します。いずれかが DO NOT MATCH と表示される場合は、適切な sync-to-enc または sync-from-enc コマンドを実行します。

2. gitignore の整合性の確認

非暗号化の平文ファイルが Git で追跡されていないことを確認します。次を実行します:

git ls-files --error-unmatch .env 2>/dev/null
  • コマンドが出力を返す場合(ファイルが追跡されている): 直ちに git rm --cached <file> を実行して、ファイルをローカルディスクに残したままステージングから削除します。
3. .gitattributes の構造を確認する

.gitattributes に以下が含まれていることを確認します:

*.enc filter=git-crypt diff=git-crypt

これにより、git-crypt が Git 配下のすべての .enc ファイルを透過的に管理できるようになります。

4. git-crypt のステータス確認

ステージ済み/コミット済みの .enc ファイルに対して、git-crypt がフィルターと正しく一致していることを確認します:

git-crypt status

出力には、.enc ファイルが encrypted であることが示されている必要があります。

コメント