それでも気分は高専生

元高専生が自分のやってきたことを記事として残すためのてきとーなブログ

Hachicorp Vaultをつかって証明書でSSHの認証を行う

どうもへたれです。

皆さんはこんな経験がありませんか?

チームで複数サーバを共有していて、ログインのためのクレデンシャル情報を管理したい!

でも一々鍵登録するのめんどくさい...

そんなあなたにぴったりなのが証明書をつかったSSH鍵認証です。

しかもVaultを使うことによって構築が超絶楽になるらしいです。

www.vaultproject.io

仕組みとしては下の図の通りで

  1. VaultをCA局として設置し、その証明書を各サーバのsshdに登録
  2. 新しいユーザは秘密鍵と公開鍵を生成し、CA局から公開鍵への署名をもらう (これで全てのサーバへSSHが可能)
  3. ログイン時に公開鍵と署名を使ってサーバにSSH
  4. サーバは署名を検証し、検証に成功すればログインしてSSHでの操作を許可

という感じになり、新規ユーザ登録は一回数分のオペレーションで済みます。

f:id:takahiro0914:20200919175826p:plain

ということで試しに docker-compose で VaultのCA局を立ててSSHハンズオン的なものを作ってみました。

github.com

Vaultを使うことで

  • 簡単にCA局がたつ
  • vault-cliを使って鍵の署名オペレーションが簡単にできる
  • 署名オペレーションを行う際にもポリシーを使って権限管理が可能
  • HA構成が可能

といったメリットがあるかなと思っています。

逆にこの方法だと、Vault側でオンデマンドな署名の無効化ができないといった問題もあるので、そういう時はVault Login Helperなるものがあるので、そちらを使っていきましょう。