Azure Bastionでブラウザから仮想マシンに接続!

こんにちは

Azure Bastionのプレビューが約2ヶ月前に公開されたので今更ながら紹介します。

以下は公式ページから抜粋
“Azure Bastion (プレビュー) は、直接 Azure portal 経由でお客様の仮想マシンへの安全でシームレスな RDP および SSH アクセスを提供するフル マネージド PaaS サービスです。Azure Bastion は、お客様の仮想ネットワーク (VNet) 内で直接プロビジョニングされ、パブリック IP アドレス経由で公開されることなく、SSL を使用して仮想ネットワーク (VNet) 内のすべての VM をサポートします。”

要するにRDPクライアントを使わずにAzure Portalから仮想マシンに対してプライベートIPで接続できるよっというサービスになります。
利用するメリットとしては以下があります。
・ブラウザがあれば仮想マシンに接続できるので任意のデバイスが利用可能。
・踏み台サーバーの構築、メンテナンスが不要。
・Azure ADで承認されたユーザーのみが利用できるのでアクセス権の管理が容易。
・パブリックIP及びRDPポートの公開が不要。

図だとこんな感じです。

早速設定していきましょう。

手順

まずAzure Bastionを利用するためにはプレビュー用のAzure Portalを利用する必要があります。
下記リンクに記載のプレビュー用のポータルにアクセスします。
https://docs.microsoft.com/ja-jp/azure/bastion/bastion-create-host-portal

すると上部がオレンジ色のプレビュー用ポータルが表示されます。

設定手順に移ります。

①左メニューのすべてのサービスからBastionsを検索してクリックします。

②Bastionsのページに移るので[追加]をクリックします。

③Bastionの作成メニューが表示されます。

以下を入力していきます。

サブスクリプション:デプロイするサブスクリプションを選択します。任意の値を設定します。
リソースグループ:デプロイするリソースグループを指定します。任意の値を設定します。
名前:Bastionリソースの名称を指定します。任意の値を設定します。
地域:デプロイするリージョンを選択します。任意の値を選択します。※プレビューのため制限有り
仮想ネットワーク:デプロイする仮想ネットワークを指定します。ここでは新規作成します。※重要(詳細は後述します。)
サブネット:デプロイするサブネットを指定します。※重要(詳細は後述します。)
パブリックIPアドレス:パブリックIPアドレスを指定します。任意の値を選択します。
パブリックIPアドレス名:パブリックIPアドレスのリソース名を指定します。任意の値を設定します。

★仮想ネットワークは以下のように専用のサブネットを追加しないとBastionをデプロイできないので注意します。

サブネット名:AzureBastionSubnet
アドレス範囲:x.x.x.x/27以上で指定

④仮想ネットワークの指定だけ入念に確認して[確認及び作成]タブから[作成]をクリックします。

⑤デプロイが完了したら[リソースに移動]からBastionリソースが作成されたことを確認します。

停止メニューは有りません。

⑥続いてアクセスする先の仮想マシンを作成します。

リージョンはBastionと同じ値にします。
外部公開しない環境で利用するのが前提なのでPublic inbound portsはNoneにしておきます。
その他は任意で大丈夫です。

⑦ネットワークタブに移ります。

仮想ネットワーク:Bastionをデプロイした仮想ネットワークと同じものを指定します。
サブネットはAzureBastionSubnet以外を選択します。
基本タブとネットワークタブ以外は任意の値で設定し、内容を確認したら仮想マシンを作成します。

⑧仮想マシンを作成して管理画面に移ります。[Connect]から仮想マシンへの接続メニューを開きます。

⑨仮想マシンへの接続メニューが展開するのでBastionタブから仮想マシン作成時に指定したユーザーとパスワードを入力して[Connect]をクリックします。

⑩ブラウザから仮想マシンへ接続できました!

・独自の操作としては中央左端の[>>]をクリックするとクリップボードの内容を表示することができるくらいです。

おまけ

どのような通信をしているかnetstatで調べてみました。

RDP(3389)に対してパブリックIPからではなくプライベートIPから接続されてますねー。これがBastionのインスタンスってわけです。
仮想ネットワークリソースの概要ページで接続デバイス一覧を確認すると上記と同じIPアドレスの存在を確認できます。

まとめ

以上がAzure Bastionの設定手順になります。
注意するべきなのは以下かなと思います。
・仮想ネットワークに特定の名称でサブネットを作成する必要がある。
・仮想ネットワークごとにデプロイが必要
・Bastionリソースの停止はできない。(¥10.64/時間→1ヶ月で7700円程)

仮想マシンに接続して作業を行う必要があるときにわざわざNSGで特定IPだけ許可したり設定を解除したりするのはめんどくさいです。

しかし、Bastionを使うことでAzureADで適切な権限が割り振られていれば接続ができるので、むやみにポートを公開したりパブリックIPアドレスを保つ必要がなくなり、セキュリティ的にも安心だと思います。

ただ、デプロイしている限りは時間単位での課金が発生するので検証環境などへの導入はちょっとハードルが上がるかなと思います。

不要なときにリソースの停止ができるようになると嬉しいですね。

 

参考リンク

Azure Bastionの価格
https://azure.microsoft.com/ja-jp/pricing/details/azure-bastion/