2020-08-24(月) [長年日記]
■ RSA暗号で共有パスワードを管理
リモートワークで一番困るのが、オフィスというリアルな「場」を生かしたセキュリティ策が使えないことだ。いま職場で共有アカウントの棚卸しをしていて、これらのパスワード管理をどうしよう……って話になった。AWS rootアカウントなんてなかなかヘビーな「秘密」やぞ。みんなどうやって管理してるの、これ? オフィスがあれば、印刷して金庫に封印、みたいな策も取れるんだけど*1。
で、ない知恵絞って「SSH用のRSA鍵で暗号化すればいいんじゃね?」と思いついたので、とりあえずそれにした。幸いなことに、うちのオフィスでは全員GitlabへSSHアクセスができるので、公開鍵はそこから取れる*2。正管理者が副管理者の公開鍵でパスワードを暗号化して、共有しておけばいいのだ。鍵タイプがed25519という人もいたが(とても正しい)、これのためにRSAも併用してもらうようにした。
SSH用のRSA鍵でファイルを暗号化する方法はググればいくらでも出てくる。サイズに制約があるけど、パスワード程度の文字列ならなんら問題にならない。
暗号化時に気をつけたいのは、
- SSH用の公開鍵ファイルはRSA形式(よくある*.pem)に変換して使う
- パスワードはファイルにせず、オンメモリで扱うようにする*3
- 暗号化ファイルはgitで管理するために、バイナリ→テキストに変換
一方、復号化時には、
- 最近のOpenSSHは秘密鍵をSSH形式で吐くので、PEMに変換しておかないといけない
- 復号したパスワードはファイルに残さない(表示するだけにする)
- 復号したパスワードはちゃんと使えるかどうか実際にログインして確認する
あとは、正副管理者は同じ飛行機・列車に乗らないとか(笑)、管理者が辞めるときのフローを決めておけば、おおむね安全に運用できるんじゃないでしょうか。
あ、ちなみにMFAをどうしようって話にもなって、これはもう、AuthenticatorのQRコードを副管理者に読み取ってもらうしかねぇよな、ってことになった。調べてみるとAWS側もそう回答している例が見つかるし。
GPG(PGP)でも似た管理ができますよ。
SSH鍵と違って、みんながきちんとGPG(PGP)の秘密鍵を持ってくれたり、公開鍵をGitLabに置いてくれたりするわけではないという普及度の問題がありますが。
まさにそこが面倒なのがPGPの失策なわけですよ。この課題に向き合ったときに最初に浮かんだアイデアがPGPだし、真っ先に捨てられたアイデアもPGPでした。