Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cottage — チーム向けのモダンなgitベースのage暗号化シークレット管理ツール。 | Kitploit
ツール/GitHubGitHub/sayanarijit/cottage
認証と認可暗号化/復号化ツールスクリプトと自動化構成監査クラウドセキュリティDevSecOpsユーティリティとフレームワークシークレット検出サプライチェーンセキュリティ
GitHubsayanarijit/cottage

cottage

チーム向けのモダンなgitベースのage暗号化シークレット管理ツール。

431812日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見る
ウェブサイト

The cottage logo

Cottage Verify Crates.io Version PyPI Version NPM Version Docker Image Version

cottage は、チームが age暗号化されたシークレットをgitリポジトリで管理するためのGitOpsツールです。

シークレットの暗号化/復号化、受信者の管理、リポジトリ外へのシークレットの保持を可能にしながら、VCSを介した簡単な共有を実現するシンプルなワークフローを提供します。cottageはまた、暗号化されたシークレットの編集済みプレビューを生成して可視性を高め、永続的および一時的な復号化ワークフローの両方をサポートし、シークレットが平文でコミットされることを確実に防ぎます。

Intro Demo

  1. 機能
  2. インストール
  3. エディタ統合
    1. VS Code拡張機能
    2. CursorおよびEclipse拡張機能
    3. Vimプラグイン
  4. AIエージェント統合
    1. Claude Code統合
    2. GitHub Copilot統合
    3. Codex統合
    4. Antigravity (agy)統合
    5. Cursor統合
  5. クイックスタート
  6. GitOps
  7. Gitフック
  8. アクセス制御
    1. ルール
    2. 検証
  9. 任意のプロバイダをアップストリームとして
    1. プラグインの例
  10. 任意のデバイスとの同期
  11. 詳細情報
  12. トラブルシューティング
  13. 比較
    1. age vs 他の暗号化
    2. cottage vs SOPS
    3. cottage vs dotenvx
    4. cottage vs agebox

機能

  • 露出安全: Rustの型システムを使用して、バグが誤ってシークレットを露出させることが決してないようにします。
  • チーム向け: 公開鍵(受信者)をリポジトリで共有し、秘密鍵(アイデンティティ)はローカルに保持します。
  • アクセス制御: どのシークレットをどの受信者に対して暗号化するかを制御するシンプルな許可/拒否ルール。
  • .gitignoreの管理: 暗号化されていないシークレットがリポジトリに入らないように.gitignoreを自動的に更新します。
  • プレビュー: 暗号化されたシークレットのタイムスタンプ付き編集済みプレビューを生成して可視性を高めます。
  • リッチな差分: ctg diffがローカルで変更されたシークレットと追跡された暗号化対応物の差分を表示する一方で、git diffをクリーンでレビュー可能に保ちます。
  • チェックサム検証: 暗号化されたシークレットと受信者リストがメタデータと一致することを検証して改ざんを防ぎます。
  • Gitフック: コミット前にシークレットを自動的にチェック/暗号化し、チェックアウト後に復号化するGitフックを簡単に設定できます。
  • 永続的シークレットワークフロー: ctg decrypt/syncは復号化されたシークレットをディスク上に保持します。
  • スマートなクリーンアップライフサイクル: ctg run(ショートカットctgx)とctg editは操作前にシークレットを復号化し、事前にディスク上に存在していた場合は保持し、そうでない場合は操作後に自動的にクリーンアップします。
  • 完了時のクリーンアップ: ctg encrypt --clean、ctg run --clean、およびctg edit --cleanは、事前に存在していた場合でも復号化されたファイルがディスクからクリーンアップされることを保証します。
  • 環境変数注入ワークフロー: ctg envは復号化されたシークレットを環境変数として注入してコマンドを実行し、ディスクに一切書き込みません。

インストール

root@kitploit:~
# rust: cargo-binstall/cargo
cargo binstall --locked cottage
cargo install --locked cottage

# python: pip/uv/uvx
pip install cottage
uv pip install cottage
uvx --from cottage ctg --version

# node: yarn/pnpm/npx
yarn global add @sayanarijit/cottage
pnpm add -g @sayanarijit/cottage
npx -p @sayanarijit/cottage ctg --version

Dockerイメージとしても利用可能です:

root@kitploit:~
# Docker
docker run --rm -v $PWD:/app sayanarijit/cottage --version

# Podman
podman run --rm -v $PWD:/app quay.io/sayanarijit/cottage --version

または、GitHubから最新リリースをダウンロードしてください。

エディタ統合

VS Code拡張機能

Cottage VS Code拡張機能を使用して、ctgをインストールし、Copilotセーフティフックを追加し、エクスプローラーからファイルを暗号化し、.cott.ageファイルをエディタワークフローで開くことができます。

Cottage VS Code Extension Demo

Visual Studio Marketplaceからインストールするか、vscode-plugin-cottageからローカルにビルドしてインストールしてください。

CursorおよびEclipse拡張機能

VSXファイルをダウンロードして、CursorまたはEclipse IDEにインストールしてください。VS Code拡張機能と同様に動作します。

Vimプラグイン

cottage.vimプラグインを使用して、VimまたはNeovimからシークレットを暗号化/復号化します。

Cottage Neovim Demo

AIエージェント統合

以下のすべての統合は、AIエージェントがctg/ctgxを直接実行したり、シークレットファイル(.cottage/内のもの、*.cott.*ファイル(暗号化された*.cott.ageブロブと編集済みの*.cott.tomlプレビュー)、およびディスク上に*.cott.age対応物がまだ存在する復号化されたファイル)を表示または編集したりするのを防ぎます。

Claude Code統合

Claude Codeを使用している場合は、シークレットを含むリポジトリに.claude/settings.jsonと.claude/hooks/deny-secrets.pyを追加して、Claude Codeセッションがシークレットを安全に処理するようにするか、claude-plugin-cottageプラグインをインストールしてください。

GitHub Copilot統合

VS CodeでGitHub Copilotを使用している場合は、シークレットを含むリポジトリに.github/hooks/ctg-policy.jsonと.github/hooks/scripts/deny_ctg_command.pyを追加して、Copilotセッションが復号化されたファイルをクリーンアップし、直接のctgシェルコマンドをブロックし、シークレットファイルへのアクセスをブロックするようにするか、vscode-plugin-cottage拡張機能をインストールしてVS Codeから設定してください。

VS Codeは.claude/settings.jsonフック定義も読み込みます。同じリポジトリにClaudeとCopilotの両方のフックファイルを保持する場合は、同じクリーンアップフックを誤って2回実行しないように注意してください。

Codex統合

Codexを使用している場合は、シークレットを含むリポジトリに.codex/hooks.jsonと.codex/hooks/deny-ctg.pyを追加して、Codexセッションがシークレットを安全に処理するようにするか、codex-plugin-cottageプラグインをインストールしてください。

Codexはローカルフックが実行前にレビューされることを要求します。ファイルを追加した後、リポジトリでCodexを起動し、/hooksを使用してプロジェクトフックをレビューして信頼してください。

Antigravity (agy)統合

Antigravity (agy)を使用している場合は、シークレットを含むリポジトリに.agents/hooks.jsonと.agents/scripts/deny-ctg.pyを追加して、Antigravityセッションがシークレットを安全に処理するようにするか、agy-plugin-cottageプラグインをインストールしてください。

Cursor統合

Cursorを使用している場合は、シークレットを含むリポジトリに.cursor/hooks.json、.cursor/hooks/deny-ctg.py、.cursor/hooks/deny-read-secrets.py、.cursor/rules/deny-ctg.mdc、および.cursorignoreを追加して、Cursorセッションがシークレットを安全に処理するようにしてください。

Cursorはフックを最初に有効にする必要があります。Cursor設定 > フックを開いてフックを有効にし、エージェントセッションを再起動してプロジェクトフックが有効になるようにしてください。.cursorignoreはさらに、シークレットファイルをCursorのインデックスとエージェントのコンテキストから除外します。

クイックスタート

プロジェクトを初期化:

root@kitploit:~
mkdir project && cd project

git init  # オプション、cottageはgitと組み合わせるとより良く動作しますが必須ではありません
ctg init  # .cottageディレクトリと必要なファイルを設定します

tree -a
# .
# ├ .cottage/           <- `ctg init`によって自動生成されます
# │ ├ identity        <- あなたの秘密鍵です。安全に保管してください。グローバルに使用するには`~/.config/cottage/identity`に移動するか、既存の秘密鍵へのソフトリンクに置き換えてください。
# │ └ recipients/     <- チームがすべての受信者の公開鍵を保持する場所です。
# │     └ sayanarijit <- あなたの公開鍵です。コミットしてください。既存の公開鍵を使用するには、その鍵をここにコピー(ソフトリンクではなく)してください。
# ├ .git/...
# ├ .gitattributes      <- git diffを汚染しないように`*.cott.age binary linguist-generated filter=cottage-encrypted -diff`を追加しました
# └ .gitignore          <- 明らかな理由で`/.cottage/identity`を追加しました

# いつでも`ctg clean --all`を実行して、cottageが行ったすべてをクリーンアップできます。

シークレットを作成または編集:

root@kitploit:~
# `ctg edit`は$EDITORで開く前にファイルを復号化し、保存時に再暗号化します。
# 復号化されたファイルが`ctg edit`実行前にディスク上に存在しなかった場合、実行後にクリーンアップされます。
# すでに存在していた場合は、ディスク上に保持されます。
ctg edit secret.yml

# `ctg edit`または`ctg encrypt`で`--clean`を使用すると、事前に存在していた場合でも復号化されたファイルが削除されることを保証します
ctg edit secret.yml --clean    # $EDITORで開き、保存時に暗号化し、クリーンアップします
ctg encrypt secret.yml --clean # secret.ymlを暗号化してクリーンアップします
# secret.ymlを暗号化
#    secret.yml.cott.ageに
#    secret.yml.cott.tomlを編集
#    .gitignoreを編集
# secret.ymlを削除

復号化されたシークレットでコマンドを実行:

root@kitploit:~
cat secret.yml
# cat: secret.yml: No such file or directory

# `ctg run`(またはショートカット`ctgx`)はコマンド実行前にシークレットを復号化します。
# 復号化されたファイルが事前にディスク上に存在しなかった場合、コマンド終了後に自動的にクリーンアップされます。
# 事前に存在していた場合は、ディスク上に保持されます。
ctg run -- kubectl apply -f secret.yml          # secret.yml.cott.ageをsecret.ymlに復号化してコマンドを実行します
ctg run -- kubectl apply -f secret.yml.cott.age # パス引数を復号化されたファイルパスに置き換えます
ctg run -- kubectl apply -f .                   # .内のすべての.cott.ageファイルを復号化してコマンドを実行します
ctg run -- ./deploy.sh                          # リポジトリ内のすべての.cott.ageファイルを復号化してコマンドを実行します

cat secret.yml
# cat: secret.yml: No such file or directory

# `--clean`を使用すると、事前に存在していた場合でも復号化されたファイルがクリーンアップされることを保証します
ctg run --clean ./deploy.sh

またはショートカットを使用:

root@kitploit:~
ctgx -- ./deploy.sh
ctgx --clean -- ./deploy.sh

シークレットを環境変数として注入してコマンドを実行し、ディスクに一切書き込まない:

root@kitploit:~
ctg env -- ./deploy.sh # .env.cott.age(デフォルト)からシークレットをディスクに書き込まずにエクスポートし、deploy.shを実行します
ctg env -F .env.prod.cott.age -- ./deploy.sh # .env.cott.ageの代わりに.env.prod.cott.ageからエクスポートします
ctg env -F secrets.json.cott.age -- printenv COTTAGE_SECRET # dotenv以外のファイルもサポートします。

GitOps

シークレットをチームメンバーと共有するには、gitリポジトリにプッシュするだけです。

root@kitploit:~
git add .
git commit -m "Add secret.yml"
git push origin main

チームメイトに.cottage/recipientsに公開鍵を追加して変更をプッシュするよう依頼してください。その後、プルして彼らのためにシークレットを再暗号化できます。

root@kitploit:~
git pull origin main

ctg decrypt --skip-verify-recipients  # 再暗号化のために不足しているシークレットを復号化
ctg encrypt                           # すべてのシークレットを再暗号化
# secret.ymlを暗号化
#    secret.yml.cott.ageに
#    secret.yml.cott.tomlを編集

ctg clean  # オプション
# secret.ymlを削除

# 変更をレビューしてコミットしプッシュ
git add .
git commit -m "Add new recipient to secrets"
git push origin main

これでチームメイトは最新の変更をプルして自分でシークレットを復号化できます。

Gitフック

prekまたはpre-commitを使用して、コミット前にシークレットを自動的にチェック/暗号化し、チェックアウト後に復号化するGitフックを設定できます。

prek設定の例はこちらを参照してください。

prek.tomlファイルを追加した後、以下を実行します:

root@kitploit:~
prek install
prek install --hook-type post-checkout
prek install --hook-type post-merge
prek install --hook-type post-rewrite

アクセス制御

ルール

メタデータファイルで、シークレットをどの受信者に対して暗号化するかを注釈できます。これにより、異なる環境(例: ステージングと本番)に対して異なるシークレットを持ち、関連する受信者に対してのみ暗号化できます。

root@kitploit:~
# secret.yml.cott.toml
[secret]
allow = ["sayanarijit"]  # sayanarijitに対してのみ暗号化
root@kitploit:~
# secret.yml.cott.toml
[secret]
deny = ["sayanarijit"]  # sayanarijit以外の全員に対して暗号化
root@kitploit:~
# secret.yml.cott.toml
[secret]
allow = ["env/staging/*"]  # グロブパターンをサポート、env/staging内の受信者に対してのみ暗号化
deny = ["env/staging/badservice"]  # badservice以外のenv/staging内の全員に対して暗号化

拒否ルールは許可ルールよりも優先されます。

詳細はメタデータ仕様を参照してください。

検証

CIでctg verifyを実行して、暗号化されたシークレットと受信者リストがメタデータルールと一致することを検証し、改ざんを防ぐことができます。

root@kitploit:~
# .github/workflows/cottage-verify.yml
name: Cottage Verify
on: [push, pull_request]
permissions:
  contents: read
jobs:
  verify-secrets:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Verify secrets
        run: docker run --rm -v "${{ github.workspace }}:/app" ghcr.io/sayanarijit/cottage verify

任意のプロバイダをアップストリームとして

cottageを使用すると、gitだけでなく、APIを持つ任意のプロバイダとシークレットを同期できます。

そのためには、プロジェクトルートにcottage.tomlという名前のファイルを作成し、アップストリーム設定を構成します。

cottage.tomlの例はこちら、シークレット固有のアップストリーム設定はこちらを参照してください。

プラグイン実装の例はこちらを参照してください。

ワークフローはgitと似ていますが、git pullとgit pushの代わりに、ctg pullとctg pushを実行して設定されたアップストリームとシークレットを同期します。

例:

root@kitploit:~
# 最新の変更をローカルの暗号化されたシークレットにプル
# `git pull origin`と同様
ctg pull myvault

# ローカルの復号化されたシークレットとの差分を比較
ctg diff

# ローカルの復号化されたシークレットをローカルの暗号化されたシークレットと同期
ctg sync

# ローカルの暗号化されたシークレットからアップストリームへ変更をプッシュ
# `git push origin main`と同様
ctg push myvault

詳細はアップストリーム設定仕様を参照してください。

プラグインの例

Cottageはシークレットを同期するためのさまざまなプラグインプロバイダをサポートしています。すぐに使用できるプラグインスクリプトはexamples/pluginsディレクトリにあります:

  • 1Password
  • AWS Secrets Manager
  • Azure Key Vault
  • Bitwarden
  • Dashlane
  • Doppler
  • ejson
  • GitHub Secrets
  • Google Cloud Secret Manager
  • HashiCorp Vault(Kubernetes内のVaultも参照)
  • Keeper Security
  • KeePass (Passhole)
  • LastPass
  • pass (password-store)
  • Proton Pass
  • System Keyring
  • Zoho Vault

任意のデバイスとの同期

Cottage Syncを使用して、デバイス間でシークレットを同期し、CLIを必要とせずに閲覧できます。

詳細情報

その他の使用例については、examplesディレクトリを参照してください。

トラブルシューティング

root@kitploit:~
# -v、-vv、または-vvvでデバッグログを表示
ctg run -vvv -- ./deploy.sh

比較

age vs 他の暗号化

ageは、安全なファイル暗号化に最適化された現代的でシンプルなアルゴリズムを使用し、使いやすさと最小限の攻撃面に焦点を当てています。また、SSH RSAおよびEd25519鍵をサポートしていますが、異なる目的とスコープには異なる鍵を使用することをお勧めします。

cottage vs SOPS

SOPSとcottageには多くの重複する機能がありますが、cottageには以下の利点があります:

  • 暗号化されていないシークレットがgitにコミットされないように.gitignoreを自動管理。
  • 暗号化されたシークレットが純粋なage暗号化の.ageファイルであるため、より広範なツールエコシステムとの相互運用性が向上。
  • クリーンな差分 - 実際の変更が受信者の追加/削除だけの場合でも、SOPSはすべてのシークレットのすべての値に対して差分を生成しますが、cottageはファイルごとに1つの差分のみを生成し、受信者チェックサムの変更を明示的に指摘します。

cottage vs dotenvx

cottageはctg env APIをdotenvxから借用しています。

  • dotenvファイルだけでなく、任意のファイルタイプをサポート。
  • リポジトリ内の複数のシークレットを管理。
  • 特定の受信者に対してシークレットを暗号化するアクセス制御ルール。
  • クリーンな差分 - cottage vs SOPSを参照。

cottage vs agebox

ageboxはコア哲学においてcottageと非常に似ていますが、多くの機能が欠けています。

ツールをダウンロード
  • クリーンアップ: ctg cleanはローカルリポジトリからすべての復号化されたシークレットを削除し、AIエージェントを少しだけ安心して実行できるようにします。
  • jjおよび非gitディレクトリのサポート: ctg initは任意のディレクトリをシークレットストアに変換します。
  • 任意のプロバイダとの同期: APIを持つ任意のプロバイダをアップストリームとして設定し、git pull/diff/pushのようにctg pull/diff/pushを使用できます。
  • 任意のデバイスとの同期: cottageで暗号化されgitリポジトリで管理されるシークレットは、Cottage Syncを使用してデバイス間で同期できます。