はじめに
以前、別記事でBastionについて記載しましたが、その際はサブネット上のBastion自体にNSGを設定していませんでした。
最近になって試してみたところ、BastionのNSGはシステム用のルールを許可する必要があるため、自分のグローバルIPアドレスを許可するだけでは足りませんでした。
本記事では、BastionにNSGを設定する際の必須ルールを紹介します。
目次
BastionへのNSG設定
Azure BastionとNSG
Bastionは仮想ネットワーク内に専用サブネット(AzureBastionSubnet)を作成してデプロイするため、そのサブネットにNSGを適用することでBastionへアクセス可能なIPアドレスを制御でき、より安全な接続が可能です。
ただし、マネージドなPaaSサービスであるため、動作させるために必ず許可しなければならない通信があります。
それについて、以下の公式ドキュメントに記載があります。
(セッション監視については「セッションの監視と管理」ページに記載あり)
これを満たさないNSGをAzureBastionSubnetに割り当てようとすると、画像のように「Bastionに必要なルールが足らん」とエラーが出てしまいます。
ではどんなルールが必要なのか、次にまとめます。
Bastion用NSGの必須ルールと適用
NSGをデフォルトの状態で使う場合は送信が全許可されていますが、その場合でも次の受信2つ、送信2つで合計4つのルールが絶対に必要です。
受信ルール
(1) Bastion制御用の通信許可ルール
"GatewayManager"タグからの、ポート"443"通信を許可します。
(2) セッション監視機能用の通信許可ルール
"GatewayManager"タグからの、ポート"4443"通信を許可します。
これらは同じ発信元からの許可ルールなので、以下のように1ルールにまとめてもOKです。
送信ルール(デフォルトNSGでも必要!)
(1) Bastion機能用の通信許可ルール
"AzureCloud"タグへの、ポート"443"通信を許可します。
※記事作成時点ではリージョン付タグ(AzureCloud.xxx)は非サポート
(2) 仮想ネットワークへの通信許可ルール
"VirtualNetwork"への、ポート"3389/22"通信を許可します。
これら4つ(まとめると3ルール)を許可することで、ようやくAzureBastionSubnetにNSGを割り当てることが可能です。
これでAzure BastionにNSGを設定することができました。
あとは自宅のIPでも会社のIPでも、好きなものを許可しましょう。
ちなみに、利用者のグローバルIPに対しては443の通信を許可してくださいね。
接続先VM用NSGにて必要なルール
おまけとして、VM側のNSGで場合により必要なルールは以下です。
デフォルトのNSGであれば追加不要ですが、必要最低限のみ許可などポリシーが厳しい場合には必要になるでしょう。
受信ルール
(1) AzureBastionSubnetからの受信ルール
"AzureBastionSubnetのIPアドレスレンジ"からの、ポート"3389/22"通信を許可します。
おわりに
今回は、Azure Bastionにて、許可が必須なNSGルールを紹介しました。
サービスの使用に必要な通信でも、明示的な許可が必要なものと不要なもの(内部で許可される)がありなかなかややこしいです。
それについてもそのうちまとめたいと思います。
その点Bastionは適さないNSG割り当てを拒否してくれるので、まだ親切ですね。