Azure NSG入門:ネットワークセキュリティグループでクラウド環境を保護
クラウドコンピューティングの普及に伴い、クラウド環境におけるセキュリティの重要性はますます高まっています。Microsoft Azureは、堅牢なセキュリティ機能を提供することで、ユーザーのクラウド環境を保護するのに役立ちます。その中でも、ネットワークセキュリティグループ(NSG)は、Azure仮想ネットワークのセキュリティを確保するための重要な要素です。
この記事では、Azure NSGの基本概念から、具体的な設定方法、高度なユースケースまでを網羅的に解説します。NSGを理解し、効果的に活用することで、Azure環境のセキュリティを大幅に向上させることができます。
1. はじめに:クラウドセキュリティの重要性とNSGの役割
クラウド環境は、オンプレミス環境とは異なるセキュリティ上の課題を抱えています。共有インフラストラクチャ、ネットワークの複雑さ、そして絶え間なく変化する脅威の状況など、従来のセキュリティ対策だけでは十分ではありません。
Azure NSGは、これらの課題に対処するために設計されたファイアウォール機能です。NSGを使用することで、仮想ネットワーク内のトラフィックを詳細に制御し、不正なアクセスを防ぎ、セキュリティポリシーを適用できます。
1.1 なぜNSGが重要なのか?
- ネットワークレベルでのセキュリティ: NSGは、仮想ネットワークレベルでトラフィックを検査し、許可または拒否するルールを適用します。これにより、個々の仮想マシン(VM)だけでなく、ネットワーク全体を保護できます。
- マイクロセグメンテーション: NSGを使用すると、ネットワークをより小さな、隔離されたセグメントに分割できます。これにより、攻撃の影響範囲を限定し、横方向への移動を防ぐことができます。
- 集中管理: NSGはAzure Portal、Azure CLI、PowerShellなどのツールを使用して一元的に管理できます。これにより、セキュリティポリシーの一貫性を維持し、管理 overheadを削減できます。
- コンプライアンス: NSGは、PCI DSS、HIPAAなどのコンプライアンス要件を満たすのに役立ちます。
2. NSGの基本概念
NSGは、インバウンドトラフィック(VMに入るトラフィック)とアウトバウンドトラフィック(VMから出るトラフィック)を検査し、定義されたルールに基づいてトラフィックを許可または拒否します。
2.1 NSGの構成要素
NSGは、以下の主要な要素で構成されています。
- セキュリティルール: トラフィックを許可または拒否するためのルールを定義します。各ルールは、送信元、宛先、ポート、プロトコルなどの条件に基づいてトラフィックを評価します。
- 優先度: 複数のルールが同じトラフィックに適用される場合、優先度の高いルールが優先されます。優先度は、100から4096までの数値で表され、数値が小さいほど優先度が高くなります。
- 既定のルール: NSGには、既定のルールがいくつか存在します。これらのルールは、明示的に定義されたルールがない場合に適用されます。
2.2 セキュリティルールの構造
セキュリティルールは、以下の属性で構成されています。
- 名前: ルールの名前。
- 優先度: ルールの優先度(100~4096)。
- 送信元: トラフィックの送信元。IPアドレス、IPアドレス範囲、サービスタグ、アプリケーションセキュリティグループを指定できます。
- 送信元ポート範囲: トラフィックの送信元ポート範囲。
- 宛先: トラフィックの宛先。IPアドレス、IPアドレス範囲、サービスタグ、アプリケーションセキュリティグループを指定できます。
- 宛先ポート範囲: トラフィックの宛先ポート範囲。
- プロトコル: トラフィックのプロトコル(TCP、UDP、ICMP、Any)。
- アクション: トラフィックを許可(Allow)または拒否(Deny)するアクション。
- 方向: トラフィックの方向(InboundまたはOutbound)。
2.3 既定のルール
NSGには、以下の既定のルールが含まれています。
- インバウンドルール:
- AllowVNetInbound: 同じ仮想ネットワークからのトラフィックを許可します。
- AllowAzureLoadBalancerInbound: Azure Load Balancerからのトラフィックを許可します。
- DenyAllInbound: その他のすべてのインバウンドトラフィックを拒否します。
- アウトバウンドルール:
- AllowVNetOutbound: 同じ仮想ネットワークへのトラフィックを許可します。
- AllowInternetOutbound: インターネットへのトラフィックを許可します。
- DenyAllOutbound: その他のすべてのアウトバウンドトラフィックを拒否します。
これらの既定のルールは、削除または変更できません。ただし、より優先度の高いルールを追加することで、既定のルールの動作をオーバーライドできます。
2.4 サービスタグ
サービスタグは、特定のAzureサービスまたはサービスグループを表す名前付きのIPアドレスグループです。サービスタグを使用すると、特定のAzureサービスへのトラフィックを簡単に許可または拒否できます。
たとえば、Internet
サービスタグは、インターネット上のすべてのIPアドレスを表します。AzureLoadBalancer
サービスタグは、Azure Load BalancerのIPアドレスを表します。
サービスタグを使用すると、IPアドレスのリストを維持する必要がなくなり、セキュリティルールの管理が簡素化されます。
2.5 アプリケーションセキュリティグループ(ASG)
アプリケーションセキュリティグループ(ASG)は、類似した機能を実行するVMをグループ化するための論理的な単位です。ASGを使用すると、IPアドレスの代わりにASGをセキュリティルールの送信元または宛先として指定できます。
たとえば、Webサーバーとデータベースサーバーを異なるASGに配置し、Webサーバーからデータベースサーバーへのトラフィックのみを許可するルールを作成できます。
ASGを使用すると、VMのIPアドレスが変更された場合でも、セキュリティルールを変更する必要がなくなります。
3. NSGの設定方法
NSGは、Azure Portal、Azure CLI、PowerShellなどのツールを使用して設定できます。
3.1 Azure Portalでの設定
Azure Portalを使用してNSGを設定する手順は以下のとおりです。
- Azure Portalにサインインします。
- 「ネットワークセキュリティグループ」を検索し、選択します。
- 「追加」をクリックして、新しいNSGを作成します。
- 必要な情報を入力します(名前、リソースグループ、場所など)。
- 「作成」をクリックして、NSGを作成します。
- 作成したNSGを選択します。
- 「インバウンドセキュリティ規則」または「アウトバウンドセキュリティ規則」をクリックして、ルールを追加または編集します。
- 「追加」をクリックして、新しいルールを追加します。
- 必要な情報を入力します(優先度、送信元、宛先、ポート、プロトコル、アクションなど)。
- 「追加」をクリックして、ルールを作成します。
- NSGをサブネットまたはネットワークインターフェースに関連付けます。
3.2 Azure CLIでの設定
Azure CLIを使用してNSGを設定する手順は以下のとおりです。
- Azure CLIをインストールし、Azureアカウントにサインインします。
- 次のコマンドを使用して、新しいNSGを作成します。
az network nsg create --resource-group <リソースグループ名> --name <NSG名> --location <場所>
- 次のコマンドを使用して、新しいセキュリティルールを追加します。
az network nsg rule create --resource-group <リソースグループ名> --nsg-name <NSG名> --name <ルール名> --priority <優先度> --source-address-prefixes <送信元IPアドレス範囲> --destination-address-prefixes <宛先IPアドレス範囲> --destination-port-ranges <宛先ポート範囲> --protocol <プロトコル> --access <アクション> --direction <方向>
- 次のコマンドを使用して、NSGをサブネットまたはネットワークインターフェースに関連付けます。
az network nic update --resource-group <リソースグループ名> --name <ネットワークインターフェース名> --network-security-group <NSG名>
az network subnet update --resource-group <リソースグループ名> --name <サブネット名> --virtual-network-name <仮想ネットワーク名> --network-security-group <NSG名>
3.3 PowerShellでの設定
PowerShellを使用してNSGを設定する手順は以下のとおりです。
- Azure PowerShellモジュールをインストールし、Azureアカウントにサインインします。
- 次のコマンドを使用して、新しいNSGを作成します。
powershell
New-AzNetworkSecurityGroup -Name <NSG名> -ResourceGroupName <リソースグループ名> -Location <場所> - 次のコマンドを使用して、新しいセキュリティルールを追加します。
powershell
New-AzNetworkSecurityRuleConfig -Name <ルール名> -Priority <優先度> -Direction <方向> -Access <アクション> -Protocol <プロトコル> -SourceAddressPrefix <送信元IPアドレス範囲> -SourcePortRange <送信元ポート範囲> -DestinationAddressPrefix <宛先IPアドレス範囲> -DestinationPortRange <宛先ポート範囲>
$nsg = Get-AzNetworkSecurityGroup -Name <NSG名> -ResourceGroupName <リソースグループ名>
$nsg.SecurityRules.Add($rule)
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg - 次のコマンドを使用して、NSGをサブネットまたはネットワークインターフェースに関連付けます。
“`powershell
$nic = Get-AzNetworkInterface -Name <ネットワークインターフェース名> -ResourceGroupName <リソースグループ名>
$nic.IpConfigurations[0].NetworkSecurityGroup = Get-AzNetworkSecurityGroup -Name-ResourceGroupName <リソースグループ名>
Set-AzNetworkInterface -NetworkInterface $nic
$subnet = Get-AzVirtualNetworkSubnetConfig -Name <サブネット名> -VirtualNetwork $vnet
Set-AzVirtualNetworkSubnetConfig -Name <サブネット名> -VirtualNetwork $vnet -AddressPrefix $subnet.AddressPrefix -NetworkSecurityGroup $nsg
Set-AzVirtualNetwork -VirtualNetwork $vnet
“`
4. NSGの適用範囲
NSGは、サブネットまたはネットワークインターフェースに関連付けることができます。
- サブネットNSG: サブネットに関連付けられたNSGは、そのサブネット内のすべてのVMに適用されます。
- ネットワークインターフェースNSG: ネットワークインターフェースに関連付けられたNSGは、そのネットワークインターフェースにのみ適用されます。
サブネットNSGとネットワークインターフェースNSGの両方が適用される場合、ネットワークインターフェースNSGがサブネットNSGよりも優先されます。
4.1 NSGの評価ロジック
複数のNSGが適用される場合、Azureは以下の順序でルールを評価します。
- インバウンドトラフィック:
- ネットワークインターフェースNSG(最も近いものから順に)
- サブネットNSG
- アウトバウンドトラフィック:
- ネットワークインターフェースNSG(最も近いものから順に)
- サブネットNSG
各NSG内で、ルールは優先度に基づいて評価されます。優先度の高いルールが最初に評価され、一致するルールが見つかると、それ以降のルールは評価されません。
5. NSGのベストプラクティス
NSGを効果的に活用するためには、以下のベストプラクティスに従うことをお勧めします。
- 最小特権の原則: 必要なトラフィックのみを許可し、それ以外のトラフィックはすべて拒否します。
- マイクロセグメンテーション: ネットワークをより小さな、隔離されたセグメントに分割し、各セグメントに必要なトラフィックのみを許可します。
- サービスタグとASGの活用: サービスタグとASGを使用して、セキュリティルールの管理を簡素化し、柔軟性を高めます。
- ルールの優先順位: ルールの優先順位を適切に設定し、意図しないトラフィックが許可されないようにします。
- NSGの監視: NSGのログを監視し、不正なアクセスやセキュリティ上の問題を検出し、対応します。
- ドキュメント化: NSGの構成をドキュメント化し、変更履歴を記録します。
6. NSGの高度なユースケース
NSGは、さまざまな高度なユースケースに対応できます。
6.1 DMZの構築
DMZ(De-Militarized Zone)は、インターネットに公開されたサーバーを保護するために使用されるネットワークアーキテクチャです。NSGを使用すると、DMZを簡単に構築できます。
DMZを構築するには、インターネットに公開されたサーバーを専用のサブネットに配置し、そのサブネットにNSGを関連付けます。NSGは、インターネットからのトラフィックをWebサーバーのみに許可し、データベースサーバーなどの内部リソースへのアクセスを制限するように構成します。
6.2 VPNゲートウェイの保護
VPNゲートウェイは、オンプレミスネットワークとAzure仮想ネットワーク間の安全な接続を提供します。NSGを使用すると、VPNゲートウェイを保護し、不正なアクセスを防ぐことができます。
VPNゲートウェイを保護するには、VPNゲートウェイのサブネットにNSGを関連付けます。NSGは、オンプレミスネットワークからのトラフィックのみをVPNゲートウェイに許可し、インターネットからのアクセスを制限するように構成します。
6.3 Webアプリケーションファイアウォール(WAF)との連携
Webアプリケーションファイアウォール(WAF)は、Webアプリケーションを悪意のある攻撃から保護するために使用されます。NSGとWAFを連携させることで、多層防御を実現できます。
NSGは、WAFへのトラフィックのみを許可し、その他のトラフィックを拒否するように構成します。WAFは、悪意のあるリクエストを検出し、ブロックします。
7. NSGのトラブルシューティング
NSGの設定に問題が発生した場合、以下の手順でトラブルシューティングを行うことができます。
- NSGの構成を確認: NSGの構成をAzure Portal、Azure CLI、PowerShellなどで確認し、ルールが正しく設定されていることを確認します。
- 有効なルールを確認: Azure Network WatcherのIPフロー検証機能を使用して、特定のトラフィックに適用されるルールを確認します。
- NSGのログを確認: NSGのログをAzure Monitorで確認し、トラフィックが許可または拒否された理由を特定します。
- 接続のテスト: ネットワーク接続ツール(ping、telnetなど)を使用して、接続の問題を特定します。
8. まとめ
Azure NSGは、Azure仮想ネットワークのセキュリティを確保するための強力なツールです。NSGを理解し、効果的に活用することで、クラウド環境のセキュリティを大幅に向上させることができます。
この記事では、NSGの基本概念から、具体的な設定方法、高度なユースケースまでを網羅的に解説しました。この知識を基に、Azure環境のセキュリティを強化し、ビジネスの継続性を確保してください。
9. 付録:参考資料
- Azure ネットワークセキュリティグループの概要: https://docs.microsoft.com/ja-jp/azure/virtual-network/network-security-groups-overview
- ネットワークセキュリティグループを作成、変更、削除する: https://docs.microsoft.com/ja-jp/azure/virtual-network/manage-network-security-group
- アプリケーションセキュリティグループ: https://docs.microsoft.com/ja-jp/azure/virtual-network/application-security-groups
- サービス タグ: https://docs.microsoft.com/ja-jp/azure/virtual-network/service-tags-overview
- Azure Network Watcher: https://docs.microsoft.com/ja-jp/azure/network-watcher/network-watcher-monitoring-overview
この記事が、Azure NSGの理解と活用の一助となれば幸いです。
上記は、Azure NSGについて網羅的に説明した記事の例です。必要に応じて、具体的なシナリオや例を追加したり、技術的な詳細を調整したりしてください。また、最新のAzureのドキュメントを参照して、情報を常に最新の状態に保つようにしてください。