みち草

Azure中心にまとめる技術情報ブログ

踏み台サーバがPaaS化!Azure Bastionを試す!

はじめに

2019/11/24追記

先日、Azure Bastionのプレビューが発表されました。 2019年11月5日頃より、一般提供が開始されました!

Azure Bastion - SSL 経由の RDP および SSH - プレビューの提供開始 | Azure の更新情報 | Microsoft Azure

タイトルのとおり、普段「踏み台サーバ」として構築しているものがPaaS化されたサービスです。

PaaSのため、踏み台サーバの構築やパッチ適用に監視に...とIaaSが故の手間が不要になります。

いい感じの雰囲気がするので、以下のサイトを基に仕様の確認や接続テストなどしてみます。

Azure Bastion | Microsoft Docs

なお、本記事はプレビュー版での検証であるため、リリース版とは仕様が異なる可能性があります。

Azure BastionにNSGを設定する場合は必須のルールがあるため、以下の別記事にまとめています。

Azure BastionにNSGを設定する - みち草

目次

Azure Bastion概要

  • VNet内にデプロイするPaaS
  • ポータルから1クリックで、VNet内のVMにRDP/SSH over SSL接続ができる(VNet毎にデプロイ必要)
  • VMのパブリックIP不要
  • RDP/SSHクライアントやエージェントなど不要
  • 接続のために、VM、プライベートIPアドレスを持つNIC、Bastionの読み取り権限が必要
  • VM側のNSGは、BastionからのRDP/SSHを許可すればOK
  • ポートスキャンやゼロデイ攻撃からVMを守れる
  • 専用サブネットが必要

現状、ポータルからSSH接続はできないので、1クリックでRDP/SSHができるのは嬉しいです。

over SSLのため443の通信(RDP/SSHの通信許可が不要)であることや、VMにパブリックIP不要、クライアントソフト不要などから、セキュリティや端末管理に厳しい環境でも利用できるのではないかと思います。 NSG管理が簡単なのも嬉しいです。

接続イメージはこんな感じ。 配置はよくある踏み台サーバと同じです。

f:id:kkkzk:20190620024017p:plain

Azure Bastion構築準備(現在はリリース済みのため不要)

作る前に、初回のみAzurePowerShellにて、プレビュー機能の有効化が必要です。

Connect-AzAccountでログイン後、以下のコマンドを実行します。

Register-AzProviderFeature -FeatureName AllowBastionHost -ProviderNamespace Microsoft.Network
Register-AzResourceProvider -ProviderNamespace Microsoft.Network

GetしてRegisteredになればOKですが、多少時間がかかります。

Get-AzProviderFeature -ProviderNamespace Microsoft.Network

また、プレビュー版のため通常のポータルではAzure Bastionが表示されません。 以下のプレビューポータルのリンクからポータルを開きます。(ポータル上部がオレンジ色になります。)

http://aka.ms/BastionHost

これで準備はOKです。

Azure Bastion構築

作るのは、先の図の構成です。 なお、プレビュー版2019年11月時点では以下のリージョンのみ作成可能です。

  • West US
  • East US
  • West Europe
  • South Central US
  • Australia East
  • Japan East

(1) [リソースの作成]でMarketplaceから"bastion"を検索します。

f:id:kkkzk:20190620015653p:plain

(2) [作成]をクリックします。

f:id:kkkzk:20190620015805p:plain

(3) Bastionに必要なパラメータを指定します。vpnGWやAzureFWなどと同じように、名前指定の専用サブネットが必要です。[サブネット構成の管理]からサブネットを作ります。

f:id:kkkzk:20190620020703p:plain

f:id:kkkzk:20190620023106p:plain

(4) "AzureBastionSubnet"という名前のサブネットを作成します。最低/27必要です。また、NSGやルートテーブルを割り当てる必要はありません。

f:id:kkkzk:20190620022516p:plain

f:id:kkkzk:20190620023145p:plain

(5) エラーが消えたので作成します。5分ほどで完成しました。

f:id:kkkzk:20191205001722p:plain

f:id:kkkzk:20190620020952p:plain

本記事ではBastionSubnetにNSGを適用しませんでしたが、GatewayManagerとAzureCloudのタグを許可すれば適用することは可能なので、IP制限は行えるかと思います。

Linuxマシンへの接続

BastionHostと同じネットワーク内にいる仮想マシンの概要画面にて、[Connect]をクリックします。

いつものRDP/SSH以外に[BASTION]タブがあるので選択し、ユーザー名とアクセス方法など指定して[Connect]をクリックします。

f:id:kkkzk:20190620025155p:plain

新しいウィンドウが開き、ブラウザ上で対象の仮想マシンにSSH接続できました。コマンドも実行できます。

f:id:kkkzk:20190620024831p:plain

Windowsマシンへの接続

接続の仕方はLinuxマシンの場合と同じです。

[Connect]をクリックすると新しいウィンドウが開き、ブラウザ上で仮想マシンにRDP接続できました。

f:id:kkkzk:20190620025328p:plain

費用について

料金ページはこちら

Pricing - Azure Bastion | Microsoft Azure

東日本リージョンの場合、1月を730時間(24*365/12)とすると、費用は10.64円/時間(7621円/月) + 送信データ量 * 13.44円/GBのため、使い方にもよりますが1万円くらいで使えるのでしょうか。

だとしたらA2v2のWindows立ち上げっぱなし(13899円/月)より安くなりますね。踏み台サーバの電源をオンオフしたらVMでも安くなりますが、Bastionなら更新プログラムなど管理不要、というメリットはあります。

おわりに

今回は、踏み台サーバのPaaS化というのが面白そうだったので、Azure Bastionを試してみました。PaaSのため非常に簡単にデプロイでき、すぐにブラウザ上で各OSへの接続を行うことができました。既存環境に追加するとしても、必要になるのはサブネットの払い出しくらいで、そんなに手間はいりません。

初めの方に書きましたが、SSL接続のためFWでRDP/SSHを開けていない環境でも使用でき、簡易的な踏み台サーバとして使うのにはよいかと思います。

ただ個人的には、BastionHostに接続⇒接続VMを選択⇒接続!というWVDのブローカーチックなものを期待していたので、マシンの概要から接続であることには若干もやもや...

あとは、踏み台となるとどうしてもログの取得や操作の監視などが挙がると思いますが、現状そのような機能はありません。 今後どうなるかに期待です。

作成は非常に簡単なので、気になる方はまずは試してみるのがいいと思います。

今後のロードマップとしては、Azure ADとの多要素認証やレコーディング機能、プライベートIP対応などがあるようです!