開発用パスワード・キーの管理をしたい
env.txt だとか .git/config とか .gitconfig とか、パスワードとAPIキーが散らばる。どこかに保存したい。
keyring コマンドで管理する。
linux には keyring コマンドがある。これを使うと機密な文字列をマスターパスワードで管理できる、
インストール
Ubuntu Desktopなどは最初から入っている。(apt install python3-keyring )
コマンドからだけ使う場合には、次のコマンドをつかう
apt install python3-keyrings.alt
python3-keyring は保存先の設定が必要でDesktopならGNOMEキーリングになるのだが、ServerやMinmalはそれらを扱えないので、暗号化ファイルをバックエンドに使う。
バックエンド
バックエンドは、OSに依存する安全な保存先が使われる。alt を使った場合は暗号化ファイルになる。
macOSならKeychainなど、WindowsならCredentialsなどが選ばれる。それ以外もプラグインを使えば使える。
バックエンドを未設定ならエラーになる。
私が試したときには次のようなエラーになった。
keyring set system username Password for 'username' in 'system': Traceback (most recent call last): File "/usr/bin/keyring", line 33, in <module> sys.exit(load_entry_point('keyring==22.0.1', 'console_scripts', 'keyring')()) File "/usr/lib/python3/dist-packages/keyring/cli.py", line 135, in main return cli.run(argv) File "/usr/lib/python3/dist-packages/keyring/cli.py", line 68, in run return method() File "/usr/lib/python3/dist-packages/keyring/cli.py", line 85, in do_set set_password(self.service, self.username, password) File "/usr/lib/python3/dist-packages/keyring/core.py", line 60, in set_password get_keyring().set_password(service_name, username, password) File "/usr/lib/python3/dist-packages/keyring/backends/fail.py", line 25, in get_password raise NoKeyringError(msg) keyring.errors.NoKeyringError: No recommended backend was available. Install a recommended 3rd party backend package; or, install the keyrings.alt package if you want to use the non-recommended backends. See https://pypi.org/project/keyring for details.
パスワードを保存する
初回起動の場合はマスターパスが必要。
takuya@raspi-ubuntu:~$ keyring set system username Password for 'username' in 'system': 保存したいパスワード Please set a password for your new keyring: マスタ・パスワード Please confirm the password: マスタ・パスワード
2回目以降はパスワードだけを保存する。
takuya@raspi-ubuntu:~$ keyring get system username
Please enter password for encrypted keyring:
password
保存するパスワードに「確認」がないのでミスタイプをしないように注意する。
保存したパスワードを確認
確認は、取得コマンドで行える。
keyring get system username
取得コマンドを使うと、ターミナルに表示されるので取り扱いには注意する。
pbcopy や /dev/nullをつかっていい感じに画面に表示させないように使う。
keyring get system username | pbcopy >/dev/null
windowsで使う場合。
これは、嬉しいことにWindowsでも使える。
python.exe -m pip pip install keyring
Power Shellで保存する。
windowsに保存したパスワードの例
WindowsではスタートメニューからCredentials
を検索して
Windows Credentials Lockerを選んで
中身をみるとパスワードが保存されている。
Windows credentials は「ウインドウズ・資格情報」という面倒な日本語訳でとても検索しにくいためでしょうか、まったく情報がありません。Windows Credentialをキーチェインの代わりに使えないかと探していたらKeyringを見つけました。
WindowsはデフォルトでKeyringコマンドを搭載するべきだと思う。
Cmd.exe/PowerShell からは使えるが、MinGw/Cygwinからは使えない。WSL(v1)からは使える。Windows Logon情報と連携しないためだろうか。
バックエンドをBitwardenなどに
バックエンドをBitwardenなどのパスワード・マネージャーにすることもできる。
できるけど、bw-cli だけで事足りるので不要である。
セキュリティに関する愚痴
パスワード管理ソフトを課金するくらいならWindows資格情報を使えばいいし、公開鍵をZipパスワードで保護するような無意味なことをやってないで、ss-agentを使えばいいし。macOS keychains みたいにWindowsCredentialsをSSH-AGENTで使えたらいいのにね。