掲題の内容、SSH Key をローカルのファイルとして管理することなく Key Vault で一元管理したいというのは良くあるニーズだと思いますが、意外とまとまった記事が無かったので備忘録も兼ねて書いてみました。試してみてアレコレ詰まったところはありますが、実態としては簡単な内容です。
以下に簡単なアーキテクチャを記載しましたが、VM作成時にポータル上で作成した SSH Key を Key Vault 側に登録し、同 SSH Key を利用して Azure Bastion 経由で VMにアクセスします。
作業手順としては手順になります。仮想ネットワーク、Key Vault、Azure Bastion はリソース作成済なことを前提とします。
- SSH Key をポータル上で作成する( 今回は VM作成時の物を利用
- Key Vault に Secrets として SSH Key の private key を登録する
- Azure Bastion 経由で VMにアクセスする
SSH Key をポータル上で作成する( 今回は VM作成時の物を利用
今回は VM作成時に SSH Key を新規に作成します。以下の様にポータル上で SSH Key を作成可能です。パラメータを入力して VM作成を行った際、SSH Key の private key 側をダウンロードできるので手元に保存しておきましょう。
既存の SSH Key を利用する場合は Reference のリンク一つ目に参考情報がありますが、仮想マシンのポータル側のメニューから Reset password を選び、Add SSH public key を利用して当該仮想マシンに利用する SSH Key の情報を別途設定する必要がある点に注意してください。
Key Vault に Secrets として SSH Key の private key を登録する
次に Key Vault の Secrets に作成した SSH Key の private key を登録します( Keys や Certificates 側は Azure Bastion だと選択できません)。ここで一つ罠があり、private key は複数行のファイルになりますが Key Vault のポータル操作は複数行の文字列登録に対応してないのでコマンドで実行する必要があります。以下にコマンド実行例と実行結果の例を記載します。
az keyvault secret set --name "your-secret-name" --vault-name "your-key-name" --file "my-ssh-private-key.pem"
コマンドが無事に成功していれば以下の様に Key Vault 上に登録された private key が確認できるはずです。