Azureの新規機能!
ネットワークセキュリティグループ(NSG)
何ぞや!って思う方は、下記サイトをご覧ください。(英語です)
Network Security Group
簡単に言うと、ネットワーク制御できるわけです。
このVMには、インターネットからのアクセスをさせないとか、
中からインターネットに接続しないとか。
これが、仮想マシンごと、サブネットごとに適用することができます。
外部からのアクセスは、エンドポイントでもできるんですがね。
今回の構成は、こんな感じ。
ポリシーの設定は、
VM2にインターネットからのアクセスを全て拒否!
という設定をします。
では、早速設定方法!
GUIでの設定はできないので、Azure PowerShellを利用します。
ここからPowerShell!
1) ネットワークセキュリティグループを作成
New-AzureNetworkSecurityGroup -Name “ネットワークセキュリティグループ名” -Location “地域” -Label “説明”
※例
New-AzureNetworkSecurityGroup -Name “NSG-TEST01” -Location “Japan East” -Label “Security group for my Vnet in Japan East”
※結果
Name Location Label
—- ——– —–
NSG-TEST01 Japan East Security group for my Vnet in Japan East
2) ネットワークセキュリティグループにルールを追加
Get-AzureNetworkSecurityGroup -Name “ネットワークセキュリティグループ名” | Set-AzureNetworkSecurityRule -Name “ルール名” -Type Inbound -Priority “優先順位” -Action “処理” -SourceAddressPrefix “送信元IPアドレス” -SourcePortRange “送信元ポート” -DestinationAddressPrefix “宛先IPアドレス” -DestinationportRange “宛先ポート” -Protocol “プロトコル”
※例
Get-AzureNetworkSecurityGroup -Name “NSG-TEST01” | Set-AzureNetworkSecurityRule -Name DMZ -Type Inbound -Priority 100 -Action Deny -SourceAddressPrefix “INTERNET” -SourcePortRange “*” -DestinationAddressPrefix “*” -DestinationportRange “*” -Protocol “*”
※結果
3) サブネット:BackNWに適用
Get-AzureNetworkSecurityGroup -Name “セキュリティグループ名” | Set-AzureNetworkSecurityGrouptoSubnet -VirtualNetworkName “仮想ネットワーク名” -SubnetName “サブネット名”
※例
Get-AzureNetworkSecurityGroup -Name “NSG-TEST01” | Set-AzureNetworkSecurityGrouptoSubnet -VirtualNetworkName “NSG01” -SubnetName “BackNW”
4) 適用確認
Get-AzureNetworkSecurityGroupForSubnet -VirtualNetworkName “ネットワーク名” -SubnetName “サブネット名”
※例
Get-AzureNetworkSecurityGroupForSubnet -VirtualNetworkName “NSG01” -SubnetName “BackNW”
※結果
Name Location Label
—- ——– —–
NSG-TEST01 Japan East Security group for my Vnet in Japan East
これで、インターネットからVM2にアクセスできなくなります。
ルールの適用には、少し時間がかかります。2~3分ぐらい。
もっと時間がかかる場合もあるようです。
上記は、サブネットにルールを適用する方法でしたが、仮想マシンに適用する方法もあります。
▼仮想マシンにNSGを適用する
Get-AzureVM -ServiceName “クラウドサービス名” -Name “仮想マシン名” | Set-AzureNetworkSecurityGroupConfig -NetworkSecurityGroupName “ネットワークセキュリティグループ名” | Update-AzureVM
Service Nameは、Get-AzureVMなどで取得できます。
また、下記コマンドも使えます。
▼ルールの削除
Get–AzureNetworkSecurityGroup –Name “ネットワークセキュリティグループ名” | Remove–AzureNetworkSecurityRule –Name “ルール名”
▼NSGの削除
Remove–AzureNetworkSecurityGroup –Name “ネットワークセキュリティグループ名”
▼仮想マシンからルールを外す
Get–AzureVM –ServiceName “クラウドサービス名” –Name “仮想マシン名” | Remove–AzureNetworkSecurityGroupConfig –NetworkSecurityGroupName “ネットワークセキュリティグループ名”
▼サブネットからルールを外す
Get–AzureNetworkSecurityGroup –Name “ネットワークセキュリティグループ名” | Remove–AzureNetworkSecurityGroupFromSubnet –VirtualNetworkName “仮想ネットワーク名” –SubnetName “サブネット名”
Azureのネットワークは、相互通信がすべて許可になっています。
80ポートのみを許可するには、下記の様に設定します。
1 80ポート 許可 プライオリティ100
2 All Port 拒否 プライオリティ200
許可したいポートを先に書き(プライオリティ低い)、最後(プライオリティ高い)にすべてのポートを拒否します。
▼エンドポイント
エンドポイントとNSGどちらが強いの?優先されるの?と気になるかと思います。NSGの方が強いです。
なので、エンドポイントで80ポートを許可していても、すべて拒否のルールを設定すると通信できなくなります。
ここ結構重要かと思います。
PowerShellコマンドのオプションについては、公式サイトをご覧ください。
About Network Security Groups
コメント