トップ 最新

ただのにっき

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

*1 周りにヒアリングしたらマジでそんな感じの運用してる会社はそれなりにあるようだ。リモート前提でなく、金庫へのアクセス権を十分に絞れるならそれもあり。パスワードマネージャを使ってるというところもあるけど、保管庫のマスターパスワードを共有してたら意味がない。

*2 GitHubと同じ「user.keys」的なURLで機械的に取得できる。

*3 スクリプトが異常終了したときにファイルが残ってしまうのを防ぐ。