みち草

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

Azure BastionにNSGを設定する

はじめに

以前、別記事でBastionについて記載しましたが、その際はサブネット上のBastion自体にNSGを設定していませんでした。

www.michikusayan.com

最近になって試してみたところ、BastionのNSGはシステム用のルールを許可する必要があるため、自分のグローバルIPアドレスを許可するだけでは足りませんでした。

本記事では、BastionにNSGを設定する際の必須ルールを紹介します。

目次

BastionへのNSG設定

Azure BastionとNSG

Bastionは仮想ネットワーク内に専用サブネット(AzureBastionSubnet)を作成してデプロイするため、そのサブネットにNSGを適用することでBastionへアクセス可能なIPアドレスを制御でき、より安全な接続が可能です。

ただし、マネージドなPaaSサービスであるため、動作させるために必ず許可しなければならない通信があります。

それについて、以下の公式ドキュメントに記載があります。
(セッション監視については「セッションの監視と管理」ページに記載あり)

docs.microsoft.com

これを満たさないNSGをAzureBastionSubnetに割り当てようとすると、画像のように「Bastionに必要なルールが足らん」とエラーが出てしまいます。

BastionNSG1

ではどんなルールが必要なのか、次にまとめます。

Bastion用NSGの必須ルールと適用

NSGをデフォルトの状態で使う場合は送信が全許可されていますが、その場合でも次の受信2つ、送信2つで合計4つのルールが絶対に必要です。

受信ルール

(1) Bastion制御用の通信許可ルール
 "GatewayManager"タグからの、ポート"443"通信を許可します。

(2) セッション監視機能用の通信許可ルール
 "GatewayManager"タグからの、ポート"4443"通信を許可します。

これらは同じ発信元からの許可ルールなので、以下のように1ルールにまとめてもOKです。

BastionNSG2

送信ルール(デフォルトNSGでも必要!)

(1) Bastion機能用の通信許可ルール
 "AzureCloud"タグへの、ポート"443"通信を許可します。
 ※記事作成時点ではリージョン付タグ(AzureCloud.xxx)は非サポート

BastionNSG3

(2) 仮想ネットワークへの通信許可ルール
 "VirtualNetwork"への、ポート"3389/22"通信を許可します。

BastionNSG4

これら4つ(まとめると3ルール)を許可することで、ようやくAzureBastionSubnetにNSGを割り当てることが可能です。

BastionNSG5

BastionNSG6

これでAzure BastionにNSGを設定することができました。
あとは自宅のIPでも会社のIPでも、好きなものを許可しましょう。

ちなみに、利用者のグローバルIPに対しては443の通信を許可してくださいね。

接続先VM用NSGにて必要なルール

おまけとして、VM側のNSGで場合により必要なルールは以下です。
デフォルトのNSGであれば追加不要ですが、必要最低限のみ許可などポリシーが厳しい場合には必要になるでしょう。

受信ルール

(1) AzureBastionSubnetからの受信ルール
 "AzureBastionSubnetのIPアドレスレンジ"からの、ポート"3389/22"通信を許可します。

BastionNSG7

おわりに

今回は、Azure Bastionにて、許可が必須なNSGルールを紹介しました。

サービスの使用に必要な通信でも、明示的な許可が必要なものと不要なもの(内部で許可される)がありなかなかややこしいです。
それについてもそのうちまとめたいと思います。

その点Bastionは適さないNSG割り当てを拒否してくれるので、まだ親切ですね。