まだプレビューなんですが、Azure Bastionを試してみた。

何がすごい?
わざわざAzure VMで踏み台サーバ(bastion)を作らなくてもよくなりました。Azure内に複数VMを建てている場合よく踏み台サーバを用意してこれだけSSH接続出来るようにしてたんですが、これが楽になりました。というか、自分で踏み台サーバを建てなくても良いって超便利。すごい。
試してみた
Azure Bastionはまだプレビューで、プレビュー用Azure Portalからでしか作成出来ません。
とりあえずリソースグループを作成し、CentOS7.5のVMを立ち上げてみました。もちろんSSHポート(22)は外部開放していません。

最初だけ、Bastionを使うために登録作業が必要です。Powershellで下記のコマンドを叩きます。Cloud shellを使うと楽です。
Register-AzProviderFeature -FeatureName AllowBastionHost -ProviderNamespace Microsoft.Network
Register-AzResourceProvider -ProviderNamespace Microsoft.Network

自分のサブスクリプション(Pay as you go)だとRegisteredになるまで結構時間がかかりました。Get-AzProviderFeatureで確認します。
Get-AzProviderFeature -ProviderNamespace Microsoft.Network

RegisteredになればOKです。
ハマりポイント
ポータル画面の”Create a resource”から”Bastion”が出てこないなーと思ったんですが、preview.azure.comからアクセスしてもダメっぽくて、専用のポータル画面からでないと入れなかった。
画面上の帯がオレンジ色になっていれば正解です。
Bastionホスト追加の事前作業
気を取り直して、Bastionホストを作って行くのですが、その前にいくつか事前作業する必要があります。
まず、Bastionで接続するVMが存在する仮想ネットワークに専用のアドレス空間とサブネットを追加します。

サブネット名は、「AzureBastionSubnet」にする必要があります。

Bastionホストの作成
いよいよ本題のBastionホストの作成に入ります。ポータルの左上「Create a resource」をクリックし、検索ボックスに「Bastion」を選択します。

そのまま必要事項を入れていきます。

こんな感じにデプロイ出来れば成功です。

実際に繋いでみる
事前に構築したVM(CentOS7.6)にBastion経由でアクセスしてみましょう。
構築したVMのブレードに進み、「Connect」をクリックします。

「BASTION」というタブが増えているので、ここから接続していきます。
VM立ち上げ時に設定したユーザー名と鍵(秘密鍵が必要です)を設定します。
ここではテキスト貼り付けで検証用の秘密鍵を送ったんですが、実際にはファイルアップロードのほうがセキュアかも?

「Connect」をクリックした時、ポップアップブロックされるので許可してあげます。(こちらはChromeの場合です)

別ウィンドウにてシェルが出てきたら成功です。

AWSのSSMセッションマネージャーっぽい感じ。
わざわざ踏み台サーバを建てなくてもSSHログイン出来ちゃうって最高。