たまには Qiita にも。元の blog は↓
spwdというパスワード管理ツールを作った | tail -f pinzo.log
はじめに
みなさんパスワード管理どうしてますか?
Webサービスのアカウントならブラウザや LastPass のようなサービスが利用できるけど、まだまだパスワードでログインしなければいけないサーバがあったり psql
や mysql
コマンドでパスワード入力したりしなければならなかったりしませんか?
全部が秘密鍵で済むような環境になればいいけど、少なくとも自分を取り巻く環境はそうなっていません。意味のある文字列ならまだしも、ランダムな英数字とか覚えておくにも限界があるし、いざ入力するときも手間がかかる。
まだまだ僕たちはパスワード管理から自由になれないようです。ならせめてセキュアにパスワード管理できて、入力補助的なことができるとうれしい。
というわけで
pinzolo/spwd: Secret file based password management tool というものを作ってみた。
こんな感じで利用します。
何やってるのか?
spwd new
で対話形式でパスワードをデータファイルに保存します。このとき、特定のファイル(以下キーファイル)のハッシュをキーにして暗号化しています。
キーファイルはデフォルトでは ~/.ssh/id_rsa
を使用しますが、これは このツールを使うような人はたいてい持っていて かつ 本人しか知り得ないはずのもの だから都合がよかったからで、
SSHの秘密鍵を利用されるのは気持ち悪いという人は ~/.config/spwd/config.yml
に設定を書けば別のファイルをキーにすることができます。ついでにデータファイルの場所も変更できます。(デフォルトは ~/.local/share/spwd/data.dat
)
ファイルのハッシュを利用しているのでキーファイルの中身は別にRSA形式じゃなくてもOKです。ぶっちゃけなんでもOKです。
そのほかつらつらと
- キーファイルさえ流出しなければ、データファイルは Dropbox とかで同期しても大丈夫だよね。
- キーファイルは自分さえ知り得ない長めの文字列なんかを各環境でファイルに保存すればネットワーク介さなくてもいいから安全だよね。
- キーファイル配置先のパーミッションはちゃんとやろうね。SSH と同じだよ。
- 万が一キーファイルが漏れたりしたら、新しいキーファイルを用意して
spwd migrate /path/to/new/key/file
とすればカレントディレクトリに新しいデータファイルを生成するよ。(上書きするわけではない) -
spwd new
の時に同じ Name を指定すれば、上書きするかどうかを聞いてくるので Description の更新もこっちでやってね。 - はじめはパスワードだけ暗号化していたけどやめた。Name や Description をエディタで更新できるメリットよりも、それらがヒントになってしまうデメリットのほうが高い気がする。
そんなわけで、興味があれば慎重に使ってみてください。