web-dev-qa-db-ja.com

複数のユーザー向けのLinux「パス」ユーティリティ

私は、さまざまなスクリプト(および人々)が使用する、社内のパスワードストレージをセットアップしようとしています。私は多くの代替案を検討しましたが、私の目標を達成するために変更するのが最も簡単なのは pass ユーティリティのようです。

GPGに関しては、セキュリティと本当の初心者は得意ではありません。私は何とかして単一のユーザーのために物事を機能させることができました:

  • 新しいGPGキーの生成
  • pass init <key_hex>を使用

また、-pオプション(またはenv変数)を使用して、ホームディレクトリ(デフォルトは~/.password-store)ではなく、「データ」フォルダー内のパスストレージを初期化できることも知っています。

しかし、私は(Linux)ホスト/ボックスのすべてのユーザー(または後で特定のグループのユーザー)が同じパスワードストアにアクセスできるようにしたい状況にあります。私の理解では、これらすべてのユーザーの共有GPGキーを何らかの方法で作成して、各ユーザーがpassユーティリティを使用して同じストアにアクセスし、パスワードを取得できるようにする必要があります。私はそのようなセットアップを行う方法を知る手がかりがなく、ちょっと行き詰まっています...

どんな助けでもいただければ幸いです

10
urban

複数のgpg-idを.gpg-idファイルに追加して、ディレクトリ内の各パスワードを暗号化できます。そうすることで、秘密鍵を全員に渡さなくても、さまざまなメンバー間でパスワードストアを共有できるようになります。

必要に応じて、gpg-idのセットが異なるサブディレクトリを作成することもできます。

詳細については、initセクションのman passをご覧ください。

プロセスの概要を説明した優れた記事を次に示します。 https://medium.com/@davidpiegza/using-pass-in-a-team-1aa7adf36592

お役に立てれば。

9
mantlepro

本来の目的ではない秘密鍵の共有を回避するために、gopassの比較的新しい pass 代替案を確認することをお勧めします。はpassと互換性があり、gitベースのワークフローを適用しながら、複数の受信者をネイティブでサポートできます。

それはオープンソースで、ベースになっていて、 Github で利用できます。

マルチユーザー環境でパスを使用するときに現在欠けている可能性のある次の機能を備えています。

  • git auto-push&auto-pull、変更を見逃さないように。
  • linux/UNIXシステム上のファイルシステムのように相互にマウントできるマルチストア
  • コマンドラインから受信者をリスト、追加、削除する
  • 公開gpgキーをパスワードストアのキーフォルダーに保存する
  • git pgp署名済みコミットと完全互換

これは、パスワードを共有するためにチームで作業するときに本当に興味深いものです。

これはpassと同じです。つまり、gpgを使用し、.gpgファイルの最初の行にpassと同じ形式でパスワードを保存します。等.

Gopassを使用した通常のワークフローは次のとおりです。

  1. ユーザーがパスワードストアをセットアップして(またはpassを1つ取得して)、各受信者をそれに追加します。
  2. ユーザーは、一般的にアクセス可能なgitリポジトリでパスワードストアを共有します(可能な場合は内部gitサーバーで、ただしすべてが暗号化されているため、外部サーバーでも保存できます。エントリの構造と名前は露出しています。)
  3. 誰もが自分の秘密鍵を使用してデータを復号化し、変更時に全員の公開鍵で再暗号化されます。

良い点は、パスワードストアへのすべてのコミットが gitで署名 であり、passなどのPGPスマートカードと互換性があることです。また、すでにGoを使用している場合は、好きなように微調整するのは簡単です。コードには、広範な単体テストと十分なドキュメントが付属しています。

あなたの特定のケースでは、それはかなりうまくいくはずです。完全にリモートのgitサーバーを避けて、共通のフォルダーに保存することもできます。

6
Lery

各ユーザーは、passへのアクセス権を持ち、キーチェーンにGPGキーが存在する状態で、そのディレクトリにpass initを実行します(自分のものではなく2番目のキー)

まず、パスストアがgitで初期化されていることを確認してください。

必要なパスワードを追加します。すべてのユーザーがアクセスできるリポジトリにコミットしてプッシュします。

次に、各ユーザーはあなたの暗号化されたパスワードを含むこのGitリポジトリを複製します(GPGキーは含まれません)

次の方法でGPGキーを拡散できます。

gpg --export-secret-key -a "User Name" > private.key

そして、それをユーザーごとにインポートします

gpg --allow-secret-key-import --import private.key

最後に、各ユーザーは、共有されたGPGキーIDを持つ独自のパスリポジトリです。

init [ --path=sub-folder, -p sub-folder ] gpg-id...

あなたはキーIDを取得することができます

gpg --list-keys 

注意:秘密鍵を共有するロジスティックについて考える必要があります。

私はこの良い[email protected]を引用しています GPGに関するチートシート

使用例* .2:上記は秘密鍵のエクスポートとインポートのコマンドですが、これを行う理由の1つを説明します。基本的に、グループに属していて、そのグループの単一の鍵ペアを作成したい場合、1人が鍵ペアを作成し、公開鍵と秘密鍵をエクスポートして、グループの他のメンバーに渡します。彼らはすべてその鍵ペアをインポートします。次に、グループのメンバーまたは外部の誰かがグループの公開鍵を使用し、メッセージやデータを暗号化して、グループのメンバーに送信すると、全員がメッセージやデータにアクセスできるようになります。基本的には、暗号化されたものを複数の受信者に送信するために必要な公開鍵が1つだけの単純化されたシステムを作成できます。

1
Antoine Claval