ただのにっき
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側もそう回答している例が見つかるし。