PowerShell を使用してネットワーク セキュリティ グループ (クラシック) を作成する

NSG を使用して、仮想ネットワーク内の 1 つまたは複数の仮想マシン (VM)、ロール インスタンス、ネットワーク アダプター (NIC)、またはサブネットに対するトラフィックを制御できます。 NSG には、トラフィックの方向、プロトコル、ソース アドレスとポート、および送信先アドレスとポートに基づいて、トラフィックを許可または拒否するアクセス制御ルールが含まれています。 NSG のルールは、いつでも変更でき、変更は関連付けられているすべてのインスタンスに適用されます。

NSG の詳細については、「 what is an NSG (NSG の概要)」を参照してください。

重要

Azure リソースを使用する前に、Azure は現在、Azure Resource Manager デプロイ モデルとクラシック デプロイ モデルの 2 種類を備えていることを理解しておくことが重要です。 Azure リソースを使用する前に、必ず デプロイ モデルとツール について知識をつけておいてください。 この記事の上部にあるタブをクリックすると、さまざまなツールについてのドキュメントを参照できます。

この記事では、クラシック デプロイ モデルについて説明します。 Resource Manager デプロイ モデルで NSG を作成することもできます。

シナリオ

NSG の作成方法をわかりやすく説明するため、このドキュメントでは次のシナリオを使用しています。

VNet のシナリオ

このシナリオでは、以下のように、TestVNet 仮想ネットワークの各サブネットに対して NSG を作成します。

  • NSG-FrontEnd。 以下の 2 つの規則を含むフロントエンド NSG が FrontEnd サブネットに適用されています。
    • rdp-ruleFrontEnd サブネットに対する RDP トラフィックを許可します。
    • web-ruleFrontEnd サブネットに対する HTTP トラフィックを許可します。
  • NSG-BackEnd。 以下の 2 つの規則を含むバックエンド NSG が BackEnd サブネットに適用されています。
    • sql-ruleFrontEnd サブネットからの SQL トラフィックのみを許可します。
    • web-ruleBackEnd サブネットからのすべてのインターネット経由トラフィックを拒否します。

これらの規則の組み合わせによって、DMZ のようなシナリオが作成されます。このシナリオではバックエンドのサブネットはフロントエンドのサブネットから SQL の受信トラフィックのみを受信でき、インターネットへはアクセスできません。一方、フロントエンドのサブネットはインターネットと通信でき、受信 HTTP 要求のみを受信します。

以下の PowerShell のサンプル コマンドでは、上記シナリオに基づいて単純な環境が既に作成されていると想定します。 このドキュメントに表示されているコマンドを実行する場合は、まず、 VNet を作成してテスト環境を構築します。

フロントエンドのサブネットの NSG を作成する

  1. Azure PowerShell を初めて使う場合は、Azure PowerShell のインストールと構成の方法に関するページをご覧ください。

  2. NSG-FrontEnd という名前のネットワーク セキュリティ グループを作成します。

    New-AzureNetworkSecurityGroup -Name "NSG-FrontEnd" -Location uswest `
      -Label "Front end subnet NSG"
    
  3. インターネットからポート 3389 へのアクセスを許可するセキュリティ規則を作成します。

    Get-AzureNetworkSecurityGroup -Name "NSG-FrontEnd" `
      | Set-AzureNetworkSecurityRule -Name rdp-rule `
      -Action Allow -Protocol TCP -Type Inbound -Priority 100 `
      -SourceAddressPrefix Internet  -SourcePortRange '*' `
      -DestinationAddressPrefix '*' -DestinationPortRange '3389'
    
  4. インターネットからポート 80 へのアクセスを許可するセキュリティ規則を作成します。

    Get-AzureNetworkSecurityGroup -Name "NSG-FrontEnd" `
      | Set-AzureNetworkSecurityRule -Name web-rule `
      -Action Allow -Protocol TCP -Type Inbound -Priority 200 `
      -SourceAddressPrefix Internet  -SourcePortRange '*' `
      -DestinationAddressPrefix '*' -DestinationPortRange '80'
    
  5. ネットワーク セキュリティ グループをサブネットに関連付けます。

    Get-AzureNetworkSecurityGroup -Name "NSG-Frontend" `
    | Set-AzureNetworkSecurityGroupToSubnet -VirtualNetworkName "TestVNet" `
    -Subnet "FrontEnd"
    

バックエンドのサブネットの NSG を作成します。

  1. NSG-BackEnd という名前のネットワーク セキュリティ グループを作成します。

    New-AzureNetworkSecurityGroup -Name "NSG-BackEnd" -Location uswest `
      -Label "Back end subnet NSG"
    
  2. フロントエンドのサブネットからポート 1433 (SQL Server で使われる既定のポート) へのアクセスを許可するセキュリティ規則を作成します。

    Get-AzureNetworkSecurityGroup -Name "NSG-FrontEnd" `
      | Set-AzureNetworkSecurityRule -Name rdp-rule `
      -Action Allow -Protocol TCP -Type Inbound -Priority 100 `
      -SourceAddressPrefix 192.168.1.0/24  -SourcePortRange '*' `
      -DestinationAddressPrefix '*' -DestinationPortRange '1433'
    
  3. サブネットからインターネットへのアクセスをブロックするセキュリティ規則を作成します。

    Get-AzureNetworkSecurityGroup -Name "NSG-BackEnd" `
      | Set-AzureNetworkSecurityRule -Name block-internet `
      -Action Deny -Protocol '*' -Type Outbound -Priority 200 `
      -SourceAddressPrefix '*'  -SourcePortRange '*' `
      -DestinationAddressPrefix Internet -DestinationPortRange '*'
    
  4. ネットワーク セキュリティ グループをサブネットに関連付けます。

    Get-AzureNetworkSecurityGroup -Name "NSG-Backend" `
    | Set-AzureNetworkSecurityGroupToSubnet -VirtualNetworkName "TestVNet" `
    -Subnet "BackEnd"