Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
secrets-manager-rs — age暗号化やcoreutilsなどの相互運用可能な標準規格を用いて、シークレットの安全なバックアップ、復元、検証を行うコマンドラインツール。ベンダーロックインを防ぎ、長期的なアクセス可能性を確保します。 | Kitploit
ツール/GitHubGitHub/fran314/secrets-manager-rs
暗号化/復号化ツールデータ復旧クラウドセキュリティDevSecOpsユーティリティとフレームワーク認証
GitHubfran314/secrets-manager-rs

secrets-manager-rs

age暗号化やcoreutilsなどの相互運用可能な標準規格を用いて、シークレットの安全なバックアップ、復元、検証を行うコマンドラインツール。ベンダーロックインを防ぎ、長期的なアクセス可能性を確保します。

リポジトリを見る
212123ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

secs-man

secs-man は、ツールに依存しないシークレットのバックアップ管理ツールです。このソフトウェアでシークレットを暗号化しても、このソフトウェアを使わずに復号および復元できるように設計されています。たとえ secs-man が地球上から消え去っても、データは引き続きアクセス可能です。

secs-man はローカルおよびリモートマシンのシークレット管理に使用でき、クラウド上にバックアップするには機密性が高すぎるデータのローカルのみのバックアップ作成に最適です。

哲学

理論

極めて重要なデータのバックアップのために、特定のソフトウェアに依存すべきではありません。使用後にそのエコシステムにとどまることを強制するソフトウェア(例:「このソフトウェアで暗号化した場合、このソフトウェアでしか復号できない」)は、それに依存させるものです。したがって、重要なデータの暗号化、復号、復元は分離されるべきであり、つまり、ソフトウェアXで暗号化しても、ソフトウェアXなしで復号できるべきです。

実践

実際には、シークレットをデータ損失から100%安全にする設定を作成することはできません。たとえソフトウェアXがY、Z、Wと互換性があっても、X、Y、Z、Wすべてが同時に機能しなくなれば、データにアクセスできなくなります。実際に行うべきは、「標準」またはそれに近い技術にのみ依存することです。bashインタプリタ、USBポート、Linuxマシンの存在に依存することは許容できます。その場合、secs-manの真の目標は、次のものだけで完全に再現可能になることです:

  • ターミナル
  • cp、mv、sha256sum などの coreutils
  • age
  • 手作業と少しの時間

age への依存は最も微妙ですが、_何らかの_暗号ライブラリへの依存は避けられず、age は非常に人気があり、Rustでのバインディングも優れています。

これにより、このソフトウェアに何かが起こり再使用できなくなった場合でも、age が存在し、30分の時間を費やす用意があれば、すべてのシークレットを復旧できることが保証されます。手動復旧のセクションでは、このソフトウェアを使わずに(coreutils、age、ターミナルのみで)エクスポートされたシークレットをインポートする方法を説明します。

インストール

secs-man はどこにも公開されていません(公開されたクレートでもなく、nixpkgs、AURなどにもありません)。このリポジトリから直接インストールする方法は以下のとおりです。

nix run を使用

secs-man を時々実行するだけであれば、インストールせずに直接実行できます(flakes の有効化が必要)

nix run github:Fran314/secrets-manager-rs -- export /path/to/secrets /path/to/export/endpoint

Nix設定経由

secs-man をシステム全体で利用可能にするには、fetchGit を使用してこのリポジトリをNix設定にインポートし、結果のパッケージを environment.systemPackages(home-manager の場合は home.packages)に追加します。

let
  secs-man = pkgs.callPackage "${builtins.fetchGit {
    url = "https://github.com/Fran314/secrets-manager-rs.git";
    ref = "main";
    # rev = "<commit>"; # pin a specific commit for reproducibility
  }}/default.nix" { };
in
# add `secs-man` to environment.systemPackages or home.packages

cargo を使用

NixOS を使用していない場合は、cargo にこのリポジトリを指定して secs-man バイナリをインストールできます。

cargo install --git https://github.com/Fran314/secrets-manager-rs

これらの方法はいずれも、リモートマシンに必要な secs-man-ssh スクリプトをインストールしないことに注意してください。このスクリプトはスタンドアロンであり、このリポジトリから別途コピーする必要があります。

使用方法

このツールは、指定されたソースディレクトリからファイルをエクスポートおよび暗号化し、同じディレクトリにインポートして復元できます。このツールの推奨使用方法は、すべての「シークレット」(鍵、ファイルなど)を一箇所のディレクトリに集約することです。

シークレットディレクトリのルートには、管理するシークレットのリスト(シークレットディレクトリからの相対パス)を含むプレーンテキストファイル .secrets-manifest を配置する必要があります。ファイルパスに空白を含めることはできません。各エントリは、インポート時に正しいパーミッションを設定するために使用される owner と mode を指定することもできます。構文については .secrets-manifest.example を参照してください。

エクスポート時には、マニフェストにリストされたファイルが、対話型プロンプトで要求されたパスフレーズを使用して age によって暗号化されます(secs-man はファイルや引数、環境変数からパスフレーズを読み取ることはありません)。インポート時にも同じパスフレーズが要求され、ファイルが復号されます。ファイルの整合性は、付随する *.sha256 ファイルによって保証され、不足している場合は自動生成されます。暗号化されたファイルは、エクスポート先ディレクトリ内のタイムスタンプ付きスナップショットにエクスポートされます。

その後、ファイルはエクスポート先ディレクトリ(最新のスナップショットをインポートする場合)またはそのディレクトリ内の特定のスナップショットを指定して復号・インポートできます。

以下のコマンドは sudo なしでも実行できますが、マニフェストにコマンドを実行するユーザーとは異なる所有者が指定されている場合は失敗します(内部の chown 呼び出しが失敗するため)。

シークレットをエクスポートするには、次を実行します

sudo secs-man export /path/to/secrets /path/to/export/endpoint

既存のエクスポートの整合性を検証するには(下記の注を参照)、次を実行します

# to verify the integrity of all the exported snapshots
sudo secs-man verify-export /path/to/export/endpoint

# to verify the integrity of a specific snapshot
sudo secs-man verify-export /path/to/export/endpoint/export-YYYY-MM-DD_HH-MM-SSZ

整合性チェックはエクスポートのたびに自動的に行われます。これは、経年劣化や破損の可能性がある古いエクスポートの整合性を確認したい場合にのみ必要です。

シークレットをインポートするには、次を実行します

# to import the latest snapshot
sudo secs-man import /path/to/export/endpoint /path/to/secrets

# to import a specific snapshot
sudo secs-man import /path/to/export/endpoint/export-YYYY-MM-DD_HH-MM-SSZ /path/to/secrets

# to import only specific secrets
sudo secs-man import /path/to/export/endpoint /path/to/secrets --pick ssh/id_ed25519 wg/wg0.key

リモートマシンでの使用

このツールはリモートマシン上でもシークレットのデプロイとバックアップに使用できます。

リモートシークレットをエクスポートする最も簡単な方法は、リモートホスト上の一時ディレクトリにエクスポートし、そのエクスポートしたスナップショットをローカルバックアップにコピーすることです。同様に、ローカルバックアップをインポートする最も簡単な方法は、ローカルスナップショットをリモートホスト上の一時ディレクトリにコピーし、そこからインポートすることです。ただし、これには暗号化/復号のパスフレーズがリモートホストを経由する必要があり、リモートホストが信頼できないと見なされる可能性があるという問題があります。

パスフレーズをリモート経由で渡さずに信頼できないリモートホストにデプロイ/バックアップするには、secs-man-ssh スクリプトを使用できます。このスクリプトは SSH での root ログインを想定していません(セキュリティ上の理由で無効化されている可能性があるため)が、リモートユーザーが sudo 権限を持っていることを想定しています(secs-man が chown と chmod を実行できるようにするため)。

リモートホストからエクスポートするには、次を実行します:

secs-man-ssh export <user@host> <remote-secrets-dir> <local-backup>

# The flow is the following:
# 1. the script copies the remote secrets to a temporary directory on the remote host
# 2. the temporary directory gets chowned to the remote normal user, so that it can be sudo-less read and copied locally
# 3. the temporary directory is copied on the local host and deleted from the remote host
# 4. the local directory gets exported to the local backup, then deleted

リモートホストにインポートするには、次を実行します:

# secs-man has to be installed on the remote for the script import to work
secs-man-ssh import <user@host> <local-container> <remote-secrets-dir>

# The flow is the following:
# 1. the latest snapshot gets imported to a temporary local directory with the `--skip-chown-chmod` flag, so that it can be sudo-less read and copied to the remote host
# 2. the local directory gets copied to the remote host in a temporary directory, and deleted from the local host
# 3. the remote temporary directory gets imported to the remote secrets directory with `--from-plaintext`, as the files have already been decrypted
# 4. the remote temporary directory is deleted

手動復旧

エクスポート

エクスポートされたファイルは、パスフレーズを使用して age で暗号化されます。エクスポートされたファイルの名前は、元の名前に拡張子 .age が追加されたものです。

同じ動作を得るには、以下を使用できます:

age --passphrase --output filename.txt.age --encrypt filename.txt

注意事項:

  • エクスポート前に、ソースファイルのチェックサムが検証されます。
  • エクスポート中に、プレーンテキストファイルの既存のチェックサムが暗号化されたファイルの隣にエクスポートされます。
  • エクスポート後に、後でエクスポートの整合性を確認できるように、すべての暗号化ファイルに対して別のチェックサムが作成されます。

エクスポートの検証

エクスポートの整合性を検証するには、すべてのチェックサムが一致することを確認します。これを行うには、単に次を実行します

find . -name "sha256sums.txt" -execdir sha256sum -c sha256sums.txt \;

をエクスポートされたスナップショットディレクトリ内で実行します。

インポート

インポートされたファイルは、パスフレーズを使用して age で復号されます。インポートされたファイルの名前は、エクスポートされた名前から .age 拡張子を取り除いたものです。マニフェストで特定のエントリに対して owner や mode が指定されている場合、インポートされたファイルは指定された所有者とモードに設定されます。モードが指定されていない場合、デフォルトは 600 です。

同じ動作を得るには、以下を使用できます:

age --output filename.txt --decrypt filename.txt.age

# if no mode is specified, it defaults to 600
chmod <mode> filename.txt

# if no owner is specified, skip this step
chown <owner> filename.txt

注意事項:

  • インポート前に、ソースファイルのチェックサムが検証されます。
  • インポート後に、インポートされたファイルのチェックサムが検証されます。

脅威モデル

このツールはエクスポート時にスナップショットを自動的に作成しますが、ツール自体はそれらをクリーンアップしません。つまり、このツールでシークレットをエクスポートする際には注意が必要です。

簡単にローテーションできる「認証用」シークレット(SSH/WireGuard鍵、トークン)をエクスポートする場合、スナップショットの存在は追加のリスクをもたらしません。

しかし、「復号用」シークレット(ディスク鍵、age/PGP ID、パスワードマネージャーのマスター鍵)をエクスポートする場合、スナップショットの存在は、エクスポート内のシークレットが漏洩し何らかの方法で復号された場合、攻撃者が現在および過去の復号鍵にアクセスできる可能性があることを意味します。そのため、「復号用」シークレットをローテーションする際には、古いエクスポートスナップショットも削除することが安全です(rm -r /path/to/export/endpoint/export-YYYY-MM-DD_HH-MM-SSZ で簡単に削除できます)。古い復号鍵が露出するクリティカルパスは、現在のシークレットの知識も含意することに注意してください。これはおそらくより大きな懸念事項です。

ツールをダウンロード