normalian blog

Let's talk about Microsoft Azure, ASP.NET and Java!

続:Azure Key Vault に格納した SSH Key を使って、Azure Bastion 経由で Linux VM にアクセスする

掲題通り、Azure Key Vault と Azure Bastion を併用して Linux VM に接続する話の続編を紹介したいと思います。以下の記事の続編となるので、こちらを事前に通読頂くことが前提となる点にご注意ください。
normalian.hatenablog.com

以下の様に 第1回 Azure Travelers 勉強会 札幌の旅 - connpass で久しぶりにコミュニティで登壇させてもらったので、そちらのフォローアップも兼ねています。

これって何がメリットなの?

こちらに関しては以下だと思っています。

  • Key Vault に SSH private key が格納できるので、ローカルでの管理が不要
  • RBAC で Key Vault へのアクセスを制御できる

一つ目に関しては、SSH private key を Azure Portal 上で作成&ダウンロード後、ローカルで管理していると紛失したり、どの VM 向けか分からなくなったりするので、分かりやすいと思います。加えて、開発要員が会社を辞めたり離脱した場合でもファイルを持ち出しされるリスクを低減できるというメリットがあります。
二つ目に関しては、VM アクセスの制御を Key Vault を利用してアクセス管理できるので、Key Vault のインスタンスを複数活用すれば特定の VM にのみアクセスさせる制御等も可能な認識です。

どの RBAC を利用したらいいの?

こちらについては以下の記事に関連 RBAC があるので参照して頂きたいと思います。
learn.microsoft.com

まず試したのは subscription の Owner 権限のみを持つユーザです。結果は以下の様になり、Key Vault の secret に対する List 権限が足りないとエラーが発生しました。subscription の Owner 権限のみではアクセスできない点に注意してください。

ならばと次は Key Vault Reader の RBAC を同ユーザに追加したところ、今度は以下の様に secret に対する Get アクセスができないというエラーが発生しました。

ならばと以下の Key Vault Secrets Officer の RBAC を付与したところ、無事に Key Vault を利用して Azure Bastion 経由での Linux VM へのアクセスが無事に行えました。

Custom RBAC を活用する方法もあると思いますが、皆様の環境にあった RBAC を利用ください。

既存の VM に適用する場合

元となった記事では VM 作成時に SSH Key を作成しています。これが何を意味するかというと、Linux VM 側に SSH key が登録されていることを意味しており、だからこそ Key Vault 側に格納されている SSH key でアクセスできるようになっています。
一方で、既存で作成済の Linux VM には利用したい SSH key が登録されていません。これを解決するためには以下の様に当該 VM の左メニューより Reset password を選び、利用したい Key Vault に格納された SSH Key を選択して登録します。以下のスクリーンショットを参考にしてください。