Group(NSG)は大変重要なものですよね。NSGの大まかな説明や、詳細な説明については本家MSのサイトを参考にするのが良いのですが、もともと物理サーバのインフラエンジニアをやっていた筆者が最近NSGで気になったトピックをまとめてみました。グループあたりに書かれています。Card(NIC)に適用できるのはご存知の通りです。一つのNSGを複数のサブネットに割り当てたり、複数のNICに割り当てることもできます。下図の例では仮想ネットワークの「サブネット1」「サブネット2」それぞれに「NSG-1」「NSG-2」が適用されており、仮想マシン「VM-3」には(実際にはNICにですが)「NSG-VM3」が適用されている状態です。ここで、VM-1からVM-3に対して通信を行う際にはどういったルールでNSGが判定されるというと以下の通りですよね。NSG-1の送信ルールNSG-2の受信ルールNSG-VM3の受信ルールこれはサブネット間のトラヒックになるため、特に引っかかることなく理解できます。元インフラエンジニアも納得です。続いて、VM-1から同じセグメントにあるVM-2に対して通信を行う場合はどうでしょう。NSG-1の受信ルールが評価されます。同じサブネット内であれば、隣(?)のサーバにはフリーで繋がるわけではないのでご注意ください。次の章のNSG既定ルールでも書きますが、デフォルトルールで仮想ネットワーク間の通信は全ポート送受信ともに「許可」設定になっているため自在に接続ができているように見えているだけなのです。念のため、VM-4からVM-3の通信の場合はこんな感じです。既定のルール以下の表はNSG作成時に無条件に定義される既定ルールです。DENYポータル上からもNSGリソースの「受信セキュリティ規則」もしくは「送信セキュリティ規則」のメニューから「既定の規則」をクリックすると確認することができます。既定のルールは「インターネットからのアクセスには厳しく、しかし仮想ネットワーク内の通信はゆるゆる。おまけにインターネットへのアクセスはなんでもおk」という設定になっています。数台の仮想マシンを一つのサブネットで立ち上げて小規模なサービスを提供する場合には既定のルールに追加でインターネットからの受信ルールとして、TCP/443とTCP/80だけを空ける等で問題なさそうですね。規模が大きくなって、サブネット毎にサーバ用途を分ける場合、既定のルールが有効なままだとDMZセグメントのサーバを踏み台にして、プライベートセグメントのDBサーバに侵入されてしまうケースもあり得ます。NSGの受信ルールには既定ルールの手前にVirtualNetowrk間の受信も制限を入れて、それよりも優先度の値の小さい場所に必要な受信ルールを個々に設定するとよいと思います。DENYタグの説明NSGで指定可能なタグは各種ありますが、そのなかで代表的なものについて説明します。以下の全てが「VirtualNetwork」の範囲内になります。Routeによって接続されたオンプレ側ネットワーク......結局のところ、インターネット以外すべてですね。安易にVirtualNetworkタグを使って受信規則をフルオープンにしてしまうと、社内の誰からも、どこからもアクセスできてしまうのでご注意ということです。「AzureデータセンターIPに変換されます」と記載がありますが、たぶん「168.63.129.16」に変換されます。このIPアドレス自身はグローバルIPアドレスなのですが、必ずAzureデータセンター内にある仮想IPアドレスであるため、ロードバランサー(Internal,External問わず)設定する際には許可してあげる必要があります。既定のルールでは優先度65001で、AzureLoadBalancerからの受信はすべて許可となっていますが、こちらを無効化した場合は「ロードバランサーにProbeされるすべての仮想マシンの必要ポート」を空けます。「VirtualNetwork」以外のアドレス空間は(多分)全てこちらの「Internet」になります。通常は受信規則で「特定のWebサーバのTCP/443だけを空ける」などの場合に指定しますよね。ALLOWMSの資料にもあるとおり、こちらのInternetタグはAzure内の他のPaaSサービス等で使われるIPアドレスも含まれています。受信規則ではAzureのPaaSサービスを起点として仮想ネットワーク内の仮想マシンにアクセスされるケースは少ないので問題になりづらいのですが、送信規則でInternet向けの通信を遮断した場合、色々面倒な事がおきます。具体的には以下のルールを送信規則に設定した場合です。DENY無論仮想マシン上のIE等のブラウザからgoogle検索などは行えなくなります。他に私が知る限り以下の不都合が発生します。仮想マシンに拡張機能(BGInfoなど)の追加操作をしてもデプロイが正常終了しない仮想マシンの診断機能(Diagnostics)を有効にしてもストレージアカウントに結果が出力されないLogAnalyticsが有効なのに一向にログが転送されてこない仮想マシンのバックアップが正常に完了しないこれらは全て仮想マシンのOS内からAzureのPaaSサービス(ストレージアカウント含む)への接続が行えないため発生します。対処方法としては、LogAnalyticsはコントロールパネルの設定でproxyサーバが指定できるので回避可能かもしれませんが、他はやはりNSGの送信規則は絞らない方向で調整するのが宜しいかと思います。Managerからの着信だけを受けたいなどの場合にこちらを受信規則に指定します。「Storage」MSドキュメントに記載の通りなのですが、Azureストレージアカウントに対して禁止・許可をすることができるタグです。「Storage」の後に「.リージョン名」が記載できて、特定のリージョンだけを指定することもできます。以下の送信規則を適用すると、「基本インターネット向け(Azureサービス含む)のOutboundは拒否だけど、ストレージアカウント(東日本)だけは繋げてよいよ」といったルールになります。DBに対して禁止・許可をすることができるタグです。「Sql」の後に「.リージョン名」が記載できて、特定のリージョンだけを指定することもできます。DB(西日本)だけは繋げてよいよ」といったルールになります。DBを特定のVNET内Subnetからのみ限定的に接続するサービスですが、こちらのサービスタグを併用して必要に応じて送信規則を空けておく必要があります。Group(ASG)ASGも2018年3月末にGAしたのですが、本記事執筆時点では特にAzureポータル上から簡単に使える感じではなさそうです。以前書いたプレビューの時の記事をとりあえず参考にしてください。Previewになったので使ってみたこちらの公式ドキュメントもご参考にどうぞ。PowerShellソースIPアドレスと宛先IPアドレスの複数記述2018年1月から、NSGのソースIPアドレスと宛先IPアドレスが1ルール内に複数個書くことができるようになりました。複数の特定IPアドレスからのsshを許可する場合、今までは複数行受信規則を書かなければいけなかったのですが、これが1ルールで記述可能になっています。Allow1つのルールに記述可能なIPアドレス(CIDR)は標準で2,000個、MSサポートにお願いすると最大4,000個記述可能になります。Manager)無条件に通るパケット実はNSGの送信規則でInternet側を絞っても、例外的に通過するルールが存在します。ついて」を参照して頂きたいのですが、仮想マシンの起動や名前解決に欠かせないDNS、DHCPについては168.63.129.16宛に常に空いているようです。このへんのOutbound通信に関する公式ドキュメントとしては、以下が参考になると思います。Balancer"の二種類がありますね。何を指定するのかを説明します。下図のようにVM-1(10.0.0.4)からVM-2(10.0.1.5)とVM-3(10.0.1.6)のTCP/443にだけアクセスさせたい場合。ALLOWこのように、個々の仮想マシン毎にVM-1(10.0.0.4)からのアクセス許可を追加します。Balancerでも本ルールは変わりません。(ひとりごと)VM-1からLBを経由しないでダイレクトにVM-2、VM-3に繋げられてしまうけど、これの抑止はどうするんだろうping(icmp)について既定の受信ルールが有効の場合はVirtualNetwork→VirtualNetworkのトラヒックは全てのプロトコルが許可されているため、ping(icmp)は通ります。2019年7月末にNSGのプロトコル指定に「*」「TCP」「UDP」の他に「ICMP」が追加になりました。PowerShellからは他に「ESP」も指定できますが、まあ通常は使いません)https://azure.microsoft.com/ja-jp/updates/network-security-group-improvements-now-available/今までは以下のようなルールが必要だったのですが、今後はpingを通したい発信元、宛先に対してプロトコルにICMPを許可してあげればOKです。インターネット越しにping監視を行っている場合等には有効かと思います。ALLOWTCPとUDPは拒否するけど、その他は許可ということで、ICMPだけが通過するようになります。おわりにこちらでまとめた内容は既に既知の情報ではありますが、NSGの受信、送信ルールを設計していく上で意外と引っかかりがちな部分をピックアップしました。本内容は執筆時点(2019/08)の情報となっており、その後Azureの機能改善、機能アップが行われ次第不定期に更新予定です。Domainを利用しています。#2で登壇してきました2019年7月30日に名古屋で登壇してきました。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。2020年2月1日で株式会社pnopに入社して5年が経過しました。奥さんの実家が北海道の稚内地方に位置する豊富町にあります。