Azure Bastion の使用法

3月 01, 2020 セキュリティとコンプライアンス, MOVEit

Azure Bastion を一言で説明するなら、マネージド・ジャンプホストという表現が適しているかもしれません。ジャンプボックスとも呼ばれるジャンプホストは、仮想ネットワーク上に配置される仮想マシンです。このブログでは、Azure Bastionの使用を開始する方法を記述します。

Microsoft Azure の仮想ネットワークにデプロイされた2つの仮想マシン、Linux VM と Windows Server VM を管理すると仮定しましょう。前者は Secure Shell で管理する必要があり、後者は Remote Desktop Protocol(RDP)で管理する必要があります。

ところが、会社にはセキュリティポリシーがあって、これらの Azure 仮想マシンにパブリックIPアドレスを関連付けることは許可されていません。また、オンプレミス環境を Azure に接続するためのサイト間仮想プライベートネットワーク(S2S VPN)や ExpressRoute 回線はまだ検討されていません。

さらに、仮想ネットワークにジャンプホストVMをデプロイすることに伴う費用とセキュリティ関連のオーバーヘッドは、セキュリティ部門が快く受け入れてくれるとは思えません。

さあ、困りましたね。どうすればいいのかと頭を抱えても、パニックになる必要はありません。Azure Bastion が助けになるはずです。使用方法を説明します。

Azure Bastion のアーキテクチャ

Azure Bastion は、冒頭に書いたように、マネージド・ジャンプホストです。ジャンプホストは、仮想ネットワーク上に配置され、パブリックIPアドレスが割り当てられ、厳格なネットワークトラフィックの入出力ルールで保護された仮想マシンです。

ジャンプホストに接続し、ジャンプホストを介してネットワーク上の実稼働VMを管理することを考えます。Windows 環境では、ジャンプホストは通常、リモートデスクトップゲートウェイ(RDゲートウェイ)を実行して、複数の同時管理セッションをサポートします。

Microsoft から確認を得ているわけではありませんが、私は、Azure Bastion は実際には内部のRDゲートウェイ仮想マシンであると考えています。とはいえ、Bastion は完全に管理されたネットワーク仮想アプライアンスとして機能するため、Bastion と直接対話することはできません。

図1は、私のラボ環境を示しています

[図1: Azure Bastion ネットワークトポロジ]

Azure VM 管理者は、Azure Bastion を利用することで、次のようなメリットが得られます。

  • VM にパブリック IP アドレスが付与されることはなく、インターネットに直接公開されることもない。
  • Bastion ホストには、TCP 443(HTTPSプロトコル)でのみインバウンドトラフィックを受け入れるパブリック IP アドレスがあって、管理ポートを使用して Bastion との接続をリクエストする必要がない。
  • Bastion ホストは VNet 上の VM とシームレスに通信でき、SSH 接続と RDP 接続の両方が可能。
  • Bastion と VM サブネットの両方にネットワークセキュリティグループ(NSG)を展開できるオプションを利用することで、セキュリティ・レイヤを追加可能。

では、Azure Bastion ホストをどのようにして作成し、設定するかを説明します。

Azure Bastion のデプロイ

Bastion をデプロイする前に、ターゲットの仮想ネットワークを設定しておきます。Bastion には独自の権限移譲されていない、空のサブネットが必要で、この点はしっかり覚えておくべきです。サブネットには適切な名前(AzureBastionSubnet)をつけます。また、サブネットIDは最低でも /27 である必要があります。

図2に、VNet サブネット設定を示します

[図2: Azure Bastion 用に設定された VNet サブネット]

[Bastions] ブレードに移動し、[Add] をクリックして、[Create a Bastion] フォームの次の項目に入力します。

  • サブスクリプション
  • リソースグループ
  • インスタンス名
  • リージョン: Bastion が利用可能な Azure リージョンには制限があります。利用可能なリージョンが追加されたら更新されますので、Microsoft のこのドキュメントをチェックしてください。
  • 仮想ネットワーク: 必ず正しい VNet と AzureBastionSubnet サブネットを指定してください。
  • パブリック IP アドレス

 [Create] をクリックし、デプロイメントが完了するまで待ちます。次に、2つの仮想マシンをターゲットの仮想ネットワークにデプロイします。1つは Windows Server を実行し、もう1つは Linux を実行します。

VM デプロイにおける注意事項:

  • サーバーにはパブリック IP アドレスを付与しないようにしてください。
  • VMの仮想ネットワークインタフェースカード(NIC)には、まだネットワークセキュリティグループ(NSG)を関連付けないでください。

図3は、この時点での仮想ネットワーク構成を示しています。Azure Diagram では AzureBastionSubnet サブネット上に Bastion が表示されていません

[図3: これらのVMは、パブリックインターネットに公開されていません]

RDP および SSH 接続のテスト

このブログを書いている時点では、Bastion ホストを介して Azure VM に接続するには、Azure Portal を使用する必要があります。ただし、Microsoft の Azure Bastion エンジニアリングチームは、いずれはクライアント側のRDPおよびSSHツールもサポートする計画を持っています。

今のところは、Azure Portal を使い、図4に示すように、Windows Server VMの [Overview] ブレードをブラウズし、[Connect] をクリックして、[BASTION] タブを選択します

[図4: Azure Bastion を介して Windows Server VM に接続]

ローカルの管理アカウントで認証すると、共有クリップボードへのアクセスを許可またはブロックするように求められます。その後は、図5に示すように、グラフィカルRDPセッションでサーバーを自由に管理できます

[図5: Bastion を介した RDP を使用した Windows Server VM の管理]

Linux VM の場合も、基本的な接続手順は同じです(図6を参照)。SSH Private Key かパスワードかを使用して VM に対して認証を行うと、SSH プロンプトが表示されます(図7)。

[図6: Azure Bastion を介して Linux VM に接続]

[図7: Bastion を介した SSH を使用した Linux VM の管理]

ブラウザのタブを閉じれば、セッションが終了します。

Azure Bastion を利用することのメリットに記述したように、Bastion サブネットと VM サブネットの両方に NSG を追加して、セキュリティをさらに強化できます。詳細については、Microsoft のドキュメント「NSG アクセスと Azure Bastion を使用する」を参照してください。

注意事項

Azure Bastion は優れたサービスですが、その一方で、取り組むべき重大な「成長に伴う痛み」があるのも事実です。

1つ目は、現在の使用料が1時間あたり0.19ドル(Bastion ホストごとに1か月あたり約138ドル)で、Bastion を停止したり割り当て解除したりできない現状からすると、サービスはかなり高価になります。

2つ目は、現時点では、Bastion は、ピア VNet や VNet-to-VNet VPN で接続された VNet にまたがることができません。つまり、この方法で管理しようとするすべてのサブネットに個別の Bastion ホストをデプロイする必要があります。この点もまた、費用面の負担を増大させます。

3つ目として、アーキテクチャの項で指摘したように、Bastion ホストと直接対話することができないため、RDP セッションポリシーを、オンプレミスのグループポリシーで行うようには設定できません。図8を見るとわかるように、実際は、セッションの検査以外には、Bastion ホストでできることはあまりありません

[図8]

関連リソース

Azure Bastion に関して、多少はご理解いただけたでしょうか?より深く知りたい場合は、私が選出した以下の関連リソースにアクセスしてください。

Tim Warner

Tim Warner is a Microsoft MVP, Microsoft Press/Wiley author, and Azure solution architect based in Nashville, TN. Contact Tim at Twitter (@TechTrainerTim) or his website, techtrainertim.com.