gopass:パスワード管理

gopass

LinuxのCLIパスワード管理ツール「gopass」の概要と基本操作

gopassとは何か

gopassは、Linuxを中心としたUnix系環境で利用されるCLIベースのパスワード管理ツールです。 基本思想は pass(Unix Password Store)互換でありつつ、チーム運用・権限管理・拡張性を重視して設計された「現代的なpass互換ツール」として位置づけられます。

内部的には暗号化されたテキストをディレクトリ構造で管理する点は pass と共通ですが、gopassは「複数人で安全に共有したい」「運用を現実的に回したい」というニーズに向けて、 受取人(recipients)管理、git連携、検索や補助機能などを強化しています。

gopassの基本思想

  • pass互換: 既存の pass ストアを移行・併用しやすい
  • ディレクトリ=分類: フォルダ構成でサービスや用途を整理
  • 暗号化で保管: GPGを中心に、安全に秘密情報を保存
  • チーム運用を想定: 受取人管理(共有先)を現実的に扱える
  • git前提: 履歴管理・バックアップ・同期を自然に実現

gopassで管理できる情報

  • Webサービス・社内システムのログイン情報
  • SSH鍵のパスフレーズ
  • APIキー・アクセストークン
  • データベース接続情報
  • ユーザー名、URL、注意事項などの補足メモ
  • チーム共有用の認証情報

gopassの特徴

  • チーム共有に強い: 受取人(復号できるユーザー)を管理し、安全に共有できる
  • gitとの高い親和性: ストアの変更履歴・同期をコマンドで自然に扱える
  • 操作性の向上: 対話的な操作や補助機能があり、運用のハードルを下げられる
  • pass互換: 既存の運用・ディレクトリ構造を活かしやすい

gopassが向いている利用シーン

  • 複数人でパスワードやトークンを共有するチーム
  • 開発・検証・本番環境で秘密情報を分離したい場合
  • passの運用を拡張し、権限管理や同期を確実にしたい場合
  • CLI中心の運用を維持しつつ、管理負荷を下げたい環境

gopassの初期化:gopass init

gopassを使い始めるには、まず暗号化に利用する鍵(主にGPG鍵)を指定して初期化します。 この操作により、パスワードストア(通常は ~/.password-store)が作成されます。

$ gopass init your@email.address
  • 指定した受取人(GPG公開鍵)で、以降のすべてのエントリが暗号化される
  • 内部的に .gpg-id 相当の情報が設定され、共有運用の基盤になる
  • 既存の pass ストアを活かす形で運用を開始しやすい

パスワードの登録:gopass insert

新しいパスワードや秘密情報を登録するには gopass insert を使用します。 ディレクトリ構造で自由に分類でき、「サービス名/用途」のような形で整理すると運用しやすくなります。

$ gopass insert service/example
  • service/example がそのままエントリ名(パス)になる
  • 入力内容は暗号化されて保存される
  • 複数行(ユーザー名、URL、メモなど)もテキストとして保存可能

パスワードの表示:gopass show

登録済みのパスワードを表示するには gopass show を使います。 復号できる権限を持つ環境でのみ、内容が表示されます。

$ gopass show service/example
  • 標準出力に復号結果が表示される
  • スクリプトや他コマンドと連携しやすい
  • 必要な情報を必要なときに取り出す運用に向いている

一覧表示と検索:gopass list / gopass find

ストア全体の構造を確認するには gopass list を使用します。

$ gopass list

名前の一部から検索したい場合は gopass find が便利です。

$ gopass find example

削除と移動:gopass rm / gopass mv

不要になったエントリは gopass rm で削除できます。

$ gopass rm service/example

分類を変更したい場合は gopass mv を使って移動できます。

$ gopass mv service/example server/example

チーム共有の基本:受取人(recipients)の管理

gopassの強みの1つが、暗号化対象(復号できるユーザー)を運用しやすい形で管理できる点です。 チームメンバーを追加したい場合は gopass recipients add を使用します。

$ gopass recipients add member@example.com

チームから外れたメンバーの権限を外したい場合は gopass recipients remove を使用します。

$ gopass recipients remove oldmember@example.com
  • 「誰が復号できるか」を明示的に管理でき、チーム運用で事故が起きにくい
  • 共有先の変更は運用上の重要ポイントなので、履歴(git)と合わせて管理すると安全

gitとの連携

gopassはgit運用との相性が良く、ストアをリポジトリとして管理することで、履歴・同期・バックアップを自然に実現できます。

$ gopass git init
$ gopass git status
$ gopass git commit -am "update secrets"
$ gopass git pull
$ gopass git push

gopassのディレクトリ構成イメージ

~/.password-store/
├── service
│   ├── example.gpg
│   └── test.gpg
├── server
│   └── db.gpg
└── .gpg-id

ファイル構造がそのまま管理ルールになるため、どこに何があるか把握しやすく、git管理とも自然に噛み合います。

まとめ

gopassは、passの「シンプルさ・透明性・Unix哲学」を受け継ぎつつ、チーム運用で必要になりがちな 共有・権限管理・運用補助を強化したCLIパスワード管理ツールです。

gopass initで暗号化の基盤を整え、gopass insertで情報を登録し、gopass showで必要なときに取り出す。 さらに gopass recipients で「誰が復号できるか」を管理し、gopass git で履歴と同期を運用に組み込める点が、gopassの大きな強みです。

個人用途ならpass、複数人・複数環境の運用を考えるならgopass、という棲み分けで選ぶと失敗しにくいでしょう。