Azure Bastionがプレビューとして公開されたので、動かしてみました。使ってみないとやっぱり新しいものはわからない。
Azure Bastionとは
Azure Bastion(バスチャン)とは、ブラウザでAzure Portalから、仮想ネットワークのプライベートIPで仮想マシンにRDPやSSHでアクセスできるものです。仮想マシンにパブリックIPを設定する必要がありません。ソフトウェアとしてはApache Guacamoleが近いでしょうか。
この記事で確認したこと
- Bastionの概要を把握する(リージョン・料金)
- Bastionの設定方法
- Bastionの利用方法(windows: password /Linux: ssh-key)
- Network Security Groupによる接続制限をしてみる
- 制限事項の確認・今後、どうなっていてほしいかの整理
ステータス、利用できるリージョン、料金
Bastionの現在のステータスは「パブリックプレビュー」、利用できるリージョンは「West US / East US / South Central US / West Europe/West Europe / Australia East / Japan East」です。
料金は1カ月あたり7917円(1時間あたり10.64円)、アウトバウンドのデータ転送に1GBあたり6.72円かかります。料金の詳細はこちら。
評価構成
- 同一仮想ネットワーク内に、bastionを設置するサブネット「AzureBastionSubnet」とターゲット仮想マシンを配置するサブネットを作成する
- 仮想マシンは、Windows Server 2019 / Ubuntu を配置(id/passのログインとkeyによるログインを試したいため)
- ネットワークセキュリティグループで接続制限を構成
Bastionの構築1:プレビュー機能の導入
Bastion はプレビュー機能なので、利用できるように設定する必要があります。以下のコマンドを実行します。
az feature register --name AllowBastionHost --namespace Microsoft.Network
az provider register --namespace Microsoft.Network
Powershellの場合はこちらのサイトを参照。
Bastionの構築2:Azure Portalにログイン
Bastionの専用プレビューポータルにログインする必要があります。ログインすると次のように、ヘッダーがオレンジ色になります。
Bastionの構築3:ネットワークの構成
仮想ネットワークを作成するときに注意が必要です。Bastion用のサブネット名は「AzureBastionSubnet」で固定、セグメントは「/27」以上である必要があります。今回は、以下の構成にしました。
- 仮想ネットワーク: vNet-Secure 10.0.0.0/16
- ターゲット仮想マシンの配置用サブネット: vm 10.0.1.0/24
- Bastion 配置用サブネット: AzureBastionSubnet 10.0.2.0/27
Bastionの構築4:Bastionの構成
専用ポータル上で、リソースグループ、インスタンスの名前・リージョン、仮想ネットワーク、サブネット、パブリックIPアドレスの項目を設定します。
実際に構成したあとにできあがるのは仮想マシンスケールセットの仮想マシンが2台(こちらのインスタンスに対してログインや操作は禁止されているため見えるのはここまでになります)。
Bastion経由でのログイン1:Windows ServerにRDP接続する
- VMのリソースにアクセスする
- メニューのBastionを選択
- Windows ServerのUsernameとPasswordを入力してログイン
別ブラウザかタブで開くので、ブラウザのポップアップブロックに引っ掛かりました。RDPでもSSHでも共通に、動かないと思った時はポップアップブロックを疑ってください。
以下がログインした状態です。ブラウザでそのままRDP接続ができます。
Bastion経由でのログイン2:UbuntuへキーペアーでSSHアクセスする
- VMのリソースにアクセスする
- ブレードのメニューのBastionを選択する -ログインは、パスワード、SSH Private Keyを書く、LocalFileの SSH Key ファイルを参照する(結局はブラウザ上に取り込まれます)
- 注意:証明書のパスワードも入力できますが、シークレットになっていないため表示される
以下がログインした状態です。ブラウザでSSH接続しています。
Network Security Groupによる接続制限
Bastion はポータル経由でログインしますが、グローバルIPを持ちます。セキュリティを懸念される方は、Network Security Groupで、ポート443のインバウンド接続のみに制限することができます。
どこで何の通信が発生しているか未確認なので、実際に使う際はしっかり確認の上実施してください。こちらのサイトに情報がありますがややわかりにくいです。
現状の制限事項
現状では、VNet単位で構成する必要があります。VNetPeeringをした、同一リージョンまたは他リージョンの別のVNet内にあるVMに接続しようとしましたが、Bastionの作成画面に遷移してできませんでした。1つのVNetに複数のBastionを作成することもできません。
また、メトリックと診断設定が今はまだ使えません。いつ誰がどのVMへアクセスしたか、各VMで何をしたかの監査ログがとれるようになるといいですね。
まとめと感想
Bastion経由でのRDP接続、SSH接続ともに動きは快適でした。しかしVNetごとに構成する必要があるのは面倒です。
セキュリティの観点では、パブリックIPを持ちますが、Azure Portalのログインが前提になっているため、Azure ADやIntuneのセキュリティ機能がすべて利用できるし、VPNやExpress Routeなど通信経路を守る機能とは別の解決が図られているので、ちゃんと設定すれば安心して利用できるでしょう。
実際にBastionで踏み台サーバーが無くせるか?というと、「もう少しでなくせる気がしてきた」というのが感想です。現状の踏み台サーバーにはツールを入れていたりするので、そういうものをどうするか、構成を考える必要がありそうです。
※本記事はFIXERのTech Blogからの転載です。