Azure VM – NSG(ネットワークセキュリティグループ)を理解する

概要

今回はAzure VMを利用する際に必須とも言えるNSG(ネットワークセキュリティグループ)について記載する。
※本記事の初版は、2017年4月30日となる。

 

NSG(ネットワークセキュリティグループ)とは

簡単に説明するならば、ファイアウォールやアクセスリストと同様のものとなる。
ソース(接続元)、宛先、サービス(プロトコル・ポート)、アクション(Allow or Deny)のを積み上げたものだ。
上にあるルールが最優先される。例えば、全部を拒否しその上にある個別ルールを小さく開けていくような使い方をする。

 

Azure VM(リソースマネージャモデル)

新規にAzure VMを作成する際、この選択をしているはずだ。

既存のサブネット・ゲートウェイや、既存のVMがある場合などは例外もあるが、2017年も半ばに差し掛かっている現在、新規にクラシックモデルのVMを作成する理由はない。
課題が無ければ、Resource Managerを利用しよう。

本記事の範囲で、リソースマネージャモデルのVMの特徴は1つ。
クラシックモデルと違い、ネットワークインターフェイスは別のリソースになっていることだ。

そして、そのインターフェイスの出口にはNSG(ネットワークセキュリティグループ)を設定することができる。

サブネット

そしてもう一つ。接続するネットワーク側。
VMが直接接続するサブネット単位にもNSGの設定が可能だ。
言い方を変えるならば、VMから他ノードと通信をするには、自身のNSGとサブネットのNSGを必ず通過する必要がある。

 

同一サブネットの場合は?

前述の内容をまとめると、同一サブネット内の通信の場合はこうなる。
vm-jpeast01から抜ける際に1回。サブネットに入って1回。vm-jpeast02に入って1回。
合計3つのNSGを通過する場合がある。

別サブネットの場合は?

同一仮想ネットワーク内の別サブネットの場合はこうだ。
単純である。①→②→③→④と境界を超えるたびに適用される。

インターネット接続は?

ではインターネットから接続した場合はどうか?
このようになる。サブネットとVMに割り当てたNSGのルールに沿って通信が行われる。
※この図ではロードバランサーは省いている。

通信がつながらない? その1

「じゃあ、NSGをなしの設定にしよう!」
そんな発言を安易にしてしまう人は意外と多い。
あなたがマンションに住んでいるとしよう。このシナリオで考えたらどうだろうか?

「マンションの入口でタッチキー当てて、家のドア開けるのめんどくせぇ! 鍵両方とも無くそうぜ!」

マンションの入口 = サブネットのNSG
家のドア = VMのNSG

ピンとこない人は、IT業界や警備会社の仕事に向いてないだろう。

Azure VMで新規VM作成時に仮想ネットワークも新規作成した場合、執筆時点ではVMのNSGのみ割り当てられている状態だ。
まずはサブネットのNSGを設定する。そうすれば後から参加するVMのセキュリティは自動的に守られることを意識しよう。NSGはVMでもサブネットでも「なし」の設定はできるが、少なくとも両方「なし」というのは馬鹿げたことだ。(それをやる人間がという意味で)

 

Windowsファイアウォールは?

VMのNSGはあくまでLANポート視点だ。
OS上のファイアウォール設定は別途行う必要がある。ここは注意しよう。
うまく通信できない場合、ここも関係している可能性が大いにある。
ただこれは、クラウドに限った話ではないので説明は割愛する。

 

通信がつながらない? その2

VMにはどのNSGが適用されているのだろう?
これはネットワークインターフェイスから追うことができる。

次に「有効なセキュリティ規則」を選択する。

すると、適用されているNSGのルール一覧が表示される。
だが残念なお知らせがある。
「ネットワークインターフェイスは必ずサブネット経由で通信される」というルールからすれば、VMとサブネットのNSGはセットで適用される。それなのにマージした結果ではなくタブ分けで個別に表示される。Azure全般は優れているのだが、ここは他社のSDNオンプレ製品などと比べるとレベルダウンかもしれない。※執筆時点。

NSGはインターフェイスとサブネットに適用されるのでVM上のOSとは無関係だ。
それなのにVMが起動している状態でないと、この機能は使えない。
VM接続後に設定を確認して電源投入という手順が取れないので、アンセーフティー・不便気味。
利用者が各ルールをあらかじめ確認して十分に気を付けておかなければならない。

なお、本画面のデータはCSVでダウンロード可能だ。

執筆時点ではおまけ機能レベルだが、いずれ便利になるかもしれない。

 

暗黙の規定の規則

VMを作成した際、共に作成されるNSGは利用するOSによって異なる。
Windowsの場合は、RDP(リモートデスクトッププロトコル)が開いた状態だ。

これ以外にも通信ルールはあるのだが、「規定の規則」をクリックすると確認できる。

このように、優先度65000~65500の内容が表示される。

  • 65000
    同一仮想ネットワークから来る通信は、同一仮想ネットワーク内のみ全て許可
  • 65001
    Azureロードバランサーからの通信は、全て許可
  • 65500
    その他全ての通信は、全て拒否

ロードバランサーの設定をしていない場合は、実質65000と65500が隠れた設定ということになる。
組み合わせやロードバランサーの設定によっては、危ないのでルールを考慮しよう。

新規にルールを作成してみると分かるが、IPアドレスの範囲(CIDR block)の他に、下記のようなタグが使える。既定の規則の表記もここからきている。

最後に

Azure VMを利用する際に必須となるNSG。ご理解いただけだろうか?

Azure

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です