ネットワーク セキュリティ規則を診断する
[アーティクル] 08/15/2023
1 人の共同作成者
フィードバック
この記事の内容
ネットワーク セキュリティ グループ を使用すると、Azure リソースとの間で送受信されるネットワーク トラフィックのフィルター処理と制御ができます。 また、Azure Virtual Network Manager を使用して Azure リソースに管理者セキュリティ規則を適用し、ネットワーク トラフィックを制御することもできます。
この記事では、Azure Network Watcher の NSG 診断 を使用して、Azure トラフィックに適用されるセキュリティ規則をチェックしてトラブルシューティングする方法について説明します。 NSG 診断では、適用されたセキュリティ規則によってトラフィックが許可されているか拒否されているかをチェックします。
この記事の例では、ネットワーク セキュリティ グループが誤って構成されていることで、Azure Bastion を使用して仮想マシンに接続できないしくみを示します。
前提条件
アクティブなサブスクリプションが含まれる Azure アカウント。 アカウントは無料で作成できます 。
Azure Cloud Shell または Azure PowerShell。
この記事の手順では、Azure Cloud Shell で Azure PowerShell コマンドレットを対話型で実行します。 Cloud Shell でコマンドを実行するには、コード ブロックの右上隅にある [Cloud Shell を開く] を選択します。 [コピー] を選択してコードをコピーし、続いて Cloud Shell に貼り付けて実行します。 Azure portal 内から Cloud Shell を実行することもできます。
また、Azure PowerShell をローカルにインストールしてコマンドレットを実行することもできます。 この記事では、Az PowerShell モジュールが必要です。 詳細については、「Azure PowerShell のインストール方法」 を参照してください。 インストールされているバージョンを確認するには、Get-InstalledModule -Name Az
を実行します。 PowerShell をローカルで実行している場合は、Connect-AzAccount コマンドレットを使用して Azure にサインインします。
アクティブなサブスクリプションが含まれる Azure アカウント。 アカウントは無料で作成できます 。
Azure Cloud Shell または Azure CLI。
この記事の手順では、Azure Cloud Shell で Azure CLI コマンドを対話型で実行します。 Cloud Shell でコマンドを実行するには、コード ブロックの右上隅にある [Cloud Shell を開く] を選択します。 [コピー] を選択してコードをコピーし、Cloud Shell に貼り付けて実行します。 Azure portal 内から Cloud Shell を実行することもできます。
また、Azure CLI をローカルにインストール してコマンドを実行することもできます。 Azure CLI をローカルで実行する場合は、az login コマンドを使用して Azure にサインインします。
仮想ネットワークと bastion ホストを作成する
このセクションでは、2 つのサブネットと Azure Bastion ホストを使用して仮想ネットワークを作成します。 最初のサブネットは仮想マシンに、2 番目のサブネットは Bastion ホストに使用されます。 また、ネットワーク セキュリティ グループを作成し、最初のサブネットに適用します。
ポータルの上部にある検索ボックスに、「仮想ネットワーク」と入力します。 検索結果で、[仮想ネットワーク] を選択します。
[+ 作成] を選択します。 [仮想ネットワークの作成] の [基本] タブで、次の値を入力するか選びます。
設定
値
プロジェクトの詳細
サブスクリプション
Azure サブスクリプションを選択します。
リソース グループ
[新規作成] を選択します。 [名前] に「myResourceGroup 」と入力します。 [OK] を選択します。
インスタンスの詳細
仮想ネットワーク名
「myVNet 」と入力します。
リージョン
[(米国) 米国東部] を選択します。
[セキュリティ] タブを選択するか、ページ下部にある [次へ] ボタンを選択します。
[Azure Bastion] で、[Azure Bastion を有効にする] を選択し、次の既定値をそのまま使用します。
設定
値
Azure Bastion ホスト名
myVNet-Bastion 。
Azure Bastion のパブリック IP アドレス
(新規) myVNet-bastion-publicIpAddress 。
[IP アドレス] タブを選択するか、ページ下部にある [次へ] ボタンを選択します。
既定の IP アドレス空間 10.0.0.0/16 をそのまま使用し、鉛筆アイコンを選択して既定のサブネットを編集します。 [サブネットの編集] ページで、次の値を入力します。
設定
値
サブネットの詳細
名前
「mySubnet 」と入力します。
Security
ネットワーク セキュリティ グループ
[新規作成] を選択します。 [名前] に「mySubnet-nsg 」と入力します。 を選択します。
[確認および作成] を選択します。
設定を確認し、 [作成] を選択します。
New-AzResourceGroup を使用してリソース グループを作成します。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。
# Create a resource group.
New-AzResourceGroup -Name 'myResourceGroup' -Location 'eastus'
New-AzNetworkSecurityGroup を使用して、既定のネットワーク セキュリティ グループを作成します。
# Create a network security group.
$networkSecurityGroup = New-AzNetworkSecurityGroup -Name 'mySubnet-nsg' -ResourceGroupName 'myResourceGroup' -Location 'eastus'
New-AzVirtualNetworkSubnetConfig を使用して、仮想マシン サブネットと Bastion ホスト サブネットのサブネット構成を作成します。
# Create subnets configuration.
$firstSubnet = New-AzVirtualNetworkSubnetConfig -Name 'mySubnet' -AddressPrefix '10.0.0.0/24' -NetworkSecurityGroup $networkSecurityGroup
$secondSubnet = New-AzVirtualNetworkSubnetConfig -Name 'AzureBastionSubnet' -AddressPrefix '10.0.1.0/26'
New-AzVirtualNetwork を使用して、仮想ネットワークを作成します。
# Create a virtual network.
$vnet = New-AzVirtualNetwork -Name 'myVNet' -ResourceGroupName 'myResourceGroup' -Location 'eastus' -AddressPrefix '10.0.0.0/16' -Subnet $firstSubnet, $secondSubnet
New-AzPublicIpAddress を使用して、Bastion ホストに必要なパブリック IP アドレス リソースを作成します。
# Create a public IP address for Azure Bastion.
New-AzPublicIpAddress -ResourceGroupName 'myResourceGroup' -Name 'myBastionIp' -Location 'eastus' -AllocationMethod 'Static' -Sku 'Standard'
New-AzBastion を使用して、Bastion ホストを作成します。
# Create an Azure Bastion host.
New-AzBastion -ResourceGroupName 'myResourceGroup' -Name 'myVNet-Bastion' --PublicIpAddressRgName 'myResourceGroup' -PublicIpAddressName 'myBastionIp' -VirtualNetwork $vnet
az group create を使用してリソース グループを作成します。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。
# Create a resource group.
az group create --name 'myResourceGroup' --location 'eastus'
az network nsg create を使用して、既定のネットワーク セキュリティ グループを作成します。
# Create a network security group.
az network nsg create --name 'mySubnet-nsg' --resource-group 'myResourceGroup' --location 'eastus'
az network vnet create を使用して、仮想ネットワークを作成します。
az network vnet create --resource-group 'myResourceGroup' --name 'myVNet' --subnet-name 'mySubnet' --subnet-prefixes 10.0.0.0/24 --network-security-group 'mySubnet-nsg'
az network vnet subnet create を使用して、Azure Bastion のサブネットを作成します。
# Create AzureBastionSubnet.
az network vnet subnet create --name 'AzureBastionSubnet' --resource-group 'myResourceGroup' --vnet-name 'myVNet' --address-prefixes '10.0.1.0/26'
az network public-ip create を使用して、Bastion ホストのパブリック IP アドレスを作成します。
# Create a public IP address resource.
az network public-ip create --resource-group 'myResourceGroup' --name 'myBastionIp' --sku Standard
az network bastion create を使用して、Bastion ホストを作成します。
az network bastion create --name 'myVNet-Bastion' --public-ip-address 'myBastionIp' --resource-group 'myResourceGroup' --vnet-name 'myVNet'
重要
時間単位の価格は、送信データの使用状況に関係なく、Bastion ホストがデプロイされた時点から開始されます。 詳細については、価格 に関するページをご覧ください。 このリソースは、使用が終了したら削除することをお勧めします。
仮想マシンの作成
このセクションでは、仮想マシンとそのネットワーク インターフェイスに適用されるネットワーク セキュリティ グループを作成します。
ポータルの上部にある検索ボックスに「仮想マシン」と入力します。 検索結果から [仮想マシン] を選択します。
[+ 作成] を選択し、[Azure 仮想マシン] を選択します。
[仮想マシンの作成] の [基本] タブに次の値を入力するか選択します。
設定
値
プロジェクトの詳細
サブスクリプション
Azure サブスクリプションを選択します。
リソース グループ
[myResourceGroup] を選択します。
インスタンスの詳細
仮想マシン名
「myVM 」と入力します。
リージョン
[(米国) 米国東部] を選択します。
可用性オプション
[インフラストラクチャ冗長は必要ありません] を選択します。
セキュリティの種類
[Standard] を選択します。
Image
[Windows Server 2022 Datacenter: Azure Edition - x64 Gen2] を選択します。
サイズ
サイズを選択するか、既定の設定のままにします。
管理者アカウント
ユーザー名
ユーザー名を入力します。
Password
パスワードを入力します。
パスワードの確認
パスワードを再入力します。
[ネットワーク] タブまたは [次へ: ディスク] を選択してから [次へ: ネットワーク] を選択します。
[ネットワーク] タブで、次の値を選びます。
設定
値
ネットワーク インターフェイス
仮想ネットワーク
[myVNet] を選択します。
Subnet
[既定] を選択します。
パブリック IP
[なし] を選択します。
NIC ネットワーク セキュリティ グループ
[Basic] を選択します。
パブリック受信ポート
[なし] を選択します。
[Review + create](レビュー + 作成) を選択します。
設定を確認し、 [作成] を選択します。
New-AzNetworkSecurityGroup を使用して、既定のネットワーク セキュリティ グループを作成します。
# Create a default network security group.
New-AzNetworkSecurityGroup -Name 'myVM-nsg' -ResourceGroupName 'myResourceGroup' -Location eastus
New-AzVM を使用して、仮想マシンを作成します。 プロンプトが表示されたら、ユーザー名とパスワードを入力します。
# Create a virtual machine using the latest Windows Server 2022 image.
New-AzVm -ResourceGroupName 'myResourceGroup' -Name 'myVM' -Location 'eastus' -VirtualNetworkName 'myVNet' -SubnetName 'mySubnet' -SecurityGroupName 'myVM-nsg' -ImageName 'MicrosoftWindowsServer:WindowsServer:2022-Datacenter-azure-edition:latest'
az network nsg create を使用して、既定のネットワーク セキュリティ グループを作成します。
# Create a default network security group.
az network nsg create --name 'myVM-nsg' --resource-group 'myResourceGroup' --location 'eastus'
az vm create を使用して仮想マシンを作成します。 プロンプトが表示されたら、ユーザー名とパスワードを入力します。
# Create a virtual machine using the latest Windows Server 2022 image.
az vm create --resource-group 'myResourceGroup' --name 'myVM' --location 'eastus' --vnet-name 'myVNet' --subnet 'mySubnet' --public-ip-address '' --nsg 'myVM-nsg' --image 'Win2022AzureEditionCore'
ネットワーク セキュリティ グループにセキュリティ規則を追加する
このセクションでは、myVM のネットワーク インターフェイスに関連付けられているネットワーク セキュリティ グループにセキュリティ規則を追加します。 この規則では、仮想ネットワークからの受信トラフィックが拒否されます。
ポータルの上部にある検索ボックスに、「ネットワーク セキュリティ グループ 」と入力します。 検索結果から [ネットワーク セキュリティ グループ] を選択します。
ネットワーク セキュリティ グループの一覧で、[myVM-nsg] を選択します。
[設定] で [受信セキュリティ規則] を選びます。
[+ 追加] を選択します。 [ネットワーク] タブで、次の値を入力するか選びます。
設定
値
source
[Service Tag](サービス タグ) を選択します。
発信元サービス タグ
[VirtualNetwork] を選択します。
Source port ranges
「*」と入力します。
宛先
[任意] をクリックします。
サービス
[カスタム] を選択します。
宛先ポート範囲
「*」と入力します。
Protocol
[任意] をクリックします。
アクション
[拒否] を選択します。
優先度
「1000 」と入力します。
名前
「DenyVnetInBound 」と入力します。
[追加] を選択します。
Add-AzNetworkSecurityRuleConfig を使用して、仮想ネットワークからのトラフィックを拒否するセキュリティ規則を作成します。 次に、Set-AzNetworkSecurityGroup を使用して、ネットワーク セキュリティ グループを新しいセキュリティ規則で更新します。
# Place the network security group configuration into a variable.
$networkSecurityGroup = Get-AzNetworkSecurityGroup -Name 'myVM-nsg' -ResourceGroupName 'myResourceGroup'
# Create a security rule that denies inbound traffic from the virtual network service tag.
Add-AzNetworkSecurityRuleConfig -Name 'DenyVnetInBound' -NetworkSecurityGroup $networkSecurityGroup `
-Access 'Deny' -Protocol '*' -Direction 'Inbound' -Priority '1000' `
-SourceAddressPrefix 'virtualNetwork' -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '*'
# Updates the network security group.
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $networkSecurityGroup
az network nsg rule create を使用して、仮想ネットワークからのトラフィックを拒否するセキュリティ規則をネットワーク セキュリティ グループに追加します。
# Add to the network security group a security rule that denies inbound traffic from the virtual network service tag.
az network nsg rule create --name 'DenyVnetInBound' --resource-group 'myResourceGroup' --nsg-name 'myVM-nsg' --priority '1000' \
--access 'Deny' --protocol '*' --direction 'Inbound' --source-address-prefixes 'virtualNetwork' --source-port-ranges '*' \
--destination-address-prefixes '*' --destination-port-ranges '*'
Note
VirtualNetwork サービス タグは、仮想ネットワークのアドレス空間、すべての接続されたオンプレミスのアドレス空間、ピアリングされた仮想ネットワーク、仮想ネットワーク ゲートウェイに接続された仮想ネットワーク、ホストの仮想 IP アドレス、ユーザーが定義したルートで使用されるアドレス プレフィックスを表します。 詳細については、「サービス タグ 」を参照してください。
仮想マシンのトラフィックに適用されるセキュリティ規則をチェックする
NSG 診断を使用して、Bastion サブネットから仮想マシンへのトラフィックに適用されるセキュリティ規則をチェックします。
ポータルの上部にある検索ボックスで、Network Watcher を検索して選択します。
[ネットワーク診断ツール] で、[NSG Diagnostics](NSG 診断) を選択します。
[NSG diagnostics](NSG 診断) ページで、次の値を入力または選択します。
設定
値
ターゲット リソース
ターゲット リソースの種類
[仮想マシン] を選択します。
仮想マシン
myVM 仮想マシンを選択します。
トラフィックの詳細
Protocol
[TCP] を選択します。 その他の使用可能なオプションは、[Any] 、[UDP] 、[ICMP] です。
Direction
[Inbound](受信) を選択します。 その他の使用可能なオプションは、[Outbound](送信) です。
送信元の種類
[IPv4 アドレスまたは CIDR] を選択します。 その他の使用可能なオプションは、[Service Tag](サービス タグ) です。
IPv4 アドレスまたは CIDR
「10.0.1.0/26 」と入力します。これは、Bastion サブネットの IP アドレス範囲です。 使用できる値は、1 つの IP アドレス、複数の IP アドレス、1 つの IP プレフィックス、複数の IP プレフィックスです。
宛先 IP アドレス
既定値は 10.0.0.4 のままにします。これは myVM の IP アドレスです。
宛先ポート
すべてのポートを含めるには、「*」と入力します。
[NSG 診断の実行 ] を選択してテストを実行します。 NSG 診断によるすべてのセキュリティ規則のチェックが完了すると、結果が表示されます。
結果は、Bastion サブネットからの受信接続に対して評価されるセキュリティ規則が 3 つあることを示しています。
GlobalRules : このセキュリティ管理規則は、Azure Virtual Network Manager を使用して仮想ネットワーク レベルで適用されます。 この規則では、Bastion サブネットから仮想マシンへの受信 TCP トラフィックが許可されます。
mySubnet-nsg : このネットワーク セキュリティ グループは、サブネット レベル (仮想マシンのサブネット) で適用されます。 この規則では、Bastion サブネットから仮想マシンへの受信 TCP トラフィックが許可されます。
myVM-nsg : このネットワーク セキュリティ グループは、ネットワーク インターフェイス (NIC) レベルで適用されます。 この規則では、Bastion サブネットから仮想マシンへの受信 TCP トラフィックが拒否されます。
[myVM-nsg の詳細を表示 ] を選択して、このネットワーク セキュリティ グループが持つセキュリティ ルールとトラフィックを拒否しているルールの詳細を表示します。
myVM-nsg ネットワーク セキュリティ グループでは、VirtualNetwork サービス タグのアドレス空間から仮想マシンへのトラフィックが、セキュリティ規則 DenyVnetInBound によって拒否されます。 Bastion ホストは、VirtualNetwork サービス タグに含まれるアドレス範囲 10.0.1.0/26 の IP アドレスを使用して、仮想マシンに接続します。 そのため、Bastion ホストからの接続は DenyVnetInBound セキュリティ規則によって拒否されます。
Invoke-AzNetworkWatcherNetworkConfigurationDiagnostic を使用して、NSG 診断セッションを開始します。
# Create a profile for the diagnostic session.
$profile = New-AzNetworkWatcherNetworkConfigurationDiagnosticProfile -Direction Inbound -Protocol Tcp -Source 10.0.1.0/26 -Destination 10.0.0.4 -DestinationPort *
# Place the virtual machine configuration into a variable.
$vm = Get-AzVM -Name 'myVM' -ResourceGroupName 'myResourceGroup'
# Start the the NSG diagnostics session.
Invoke-AzNetworkWatcherNetworkConfigurationDiagnostic -Location 'eastus' -TargetResourceId $vm.Id -Profile $profile | Format-List
次のサンプル出力のような出力が返されます。
Results : {Microsoft.Azure.Commands.Network.Models.PSNetworkConfigurationDiagnosticResult}
ResultsText : [
{
"Profile": {
"Direction": "Inbound",
"Protocol": "Tcp",
"Source": "10.0.1.0/26",
"Destination": "10.0.0.4",
"DestinationPort": "*"
},
"NetworkSecurityGroupResult": {
"SecurityRuleAccessResult": "Deny",
"EvaluatedNetworkSecurityGroups": [
{
"NetworkSecurityGroupId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/NetworkAdmin/providers/Microsoft.Network/networkManagers/GlobalRules",
"MatchedRule": {
"RuleName": "VirtualNetwork",
"Action": "Allow"
},
"RulesEvaluationResult": [
{
"Name": "VirtualNetwork",
"ProtocolMatched": true,
"SourceMatched": true,
"SourcePortMatched": true,
"DestinationMatched": true,
"DestinationPortMatched": true
}
]
},
{
"NetworkSecurityGroupId": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/mySubnet-nsg",
"MatchedRule": {
"RuleName": "DefaultRule_AllowVnetInBound",
"Action": "Allow"
},
"RulesEvaluationResult": [
{
"Name": "DefaultRule_AllowVnetInBound",
"ProtocolMatched": true,
"SourceMatched": true,
"SourcePortMatched": true,
"DestinationMatched": true,
"DestinationPortMatched": true
}
]
},
{
"NetworkSecurityGroupId": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myVM-nsg",
"MatchedRule": {
"RuleName": "UserRule_DenyVnetInBound",
"Action": "Deny"
},
"RulesEvaluationResult": [
{
"Name": "UserRule_DenyVnetInBound",
"ProtocolMatched": true,
"SourceMatched": true,
"SourcePortMatched": true,
"DestinationMatched": true,
"DestinationPortMatched": true
}
]
}
]
}
}
]
結果は、Bastion サブネットからの受信接続に対して評価されるセキュリティ規則が 3 つあることを示しています。
GlobalRules : このセキュリティ管理規則は、Azure Virtual Network Manager を使用して仮想ネットワーク レベルで適用されます。 この規則では、Bastion サブネットから仮想マシンへの受信 TCP トラフィックが許可されます。
mySubnet-nsg : このネットワーク セキュリティ グループは、サブネット レベル (仮想マシンのサブネット) で適用されます。 この規則では、Bastion サブネットから仮想マシンへの受信 TCP トラフィックが許可されます。
myVM-nsg : このネットワーク セキュリティ グループは、ネットワーク インターフェイス (NIC) レベルで適用されます。 この規則では、Bastion サブネットから仮想マシンへの受信 TCP トラフィックが拒否されます。
myVM-nsg ネットワーク セキュリティ グループでは、VirtualNetwork サービス タグのアドレス空間から仮想マシンへのトラフィックが、セキュリティ規則 DenyVnetInBound によって拒否されます。 Bastion ホストは、VirtualNetwork サービス タグが含まれる 10.0.1.0/26 の IP アドレスを使用して、仮想マシンに接続します。 そのため、Bastion ホストからの接続は DenyVnetInBound セキュリティ規則によって拒否されます。
az network watcher run-configuration-diagnostic を使用して、NSG 診断セッションを開始します。
# Start the the NSG diagnostics session.
az network watcher run-configuration-diagnostic --resource 'myVM' --resource-group 'myResourceGroup' --resource-type 'virtualMachines' --direction 'Inbound' --protocol 'TCP' --source '10.0.1.0/26' --destination '10.0.0.4' --port '*'
次のサンプル出力のような出力が返されます。
{
"results": [
{
"networkSecurityGroupResult": {
"evaluatedNetworkSecurityGroups": [
{
"appliedTo": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet",
"matchedRule": {
"action": "Allow",
"ruleName": "VirtualNetwork"
},
"networkSecurityGroupId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/NetworkAdmin/providers/Microsoft.Network/networkManagers/GlobalRules",
"rulesEvaluationResult": [
{
"destinationMatched": true,
"destinationPortMatched": true,
"name": "VirtualNetwork",
"protocolMatched": true,
"sourceMatched": true,
"sourcePortMatched": true
}
]
},
{
"appliedTo": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet",
"matchedRule": {
"action": "Allow",
"ruleName": "DefaultRule_AllowVnetInBound"
},
"networkSecurityGroupId": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/mySubnet-nsg",
"rulesEvaluationResult": [
{
"destinationMatched": true,
"destinationPortMatched": true,
"name": "DefaultRule_AllowVnetInBound",
"protocolMatched": true,
"sourceMatched": true,
"sourcePortMatched": true
}
]
},
{
"appliedTo": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myvm36",
"matchedRule": {
"action": "Deny",
"ruleName": "UserRule_DenyVnetInBound"
},
"networkSecurityGroupId": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myVM-nsg",
"rulesEvaluationResult": [
{
"destinationMatched": true,
"destinationPortMatched": true,
"name": "UserRule_DenyVnetInBound",
"protocolMatched": true,
"sourceMatched": true,
"sourcePortMatched": true
}
]
}
],
"securityRuleAccessResult": "Deny"
},
"profile": {
"destination": "10.0.0.4",
"destinationPort": "*",
"direction": "Inbound",
"protocol": "TCP",
"source": "10.0.1.0/26"
}
}
]
}
結果は、Bastion サブネットからの受信接続に対して評価されるセキュリティ規則が 3 つあることを示しています。
GlobalRules : このセキュリティ管理規則は、Azure Virtual Network Manager を使用して仮想ネットワーク レベルで適用されます。 この規則では、Bastion サブネットから仮想マシンへの受信 TCP トラフィックが許可されます。
mySubnet-nsg : このネットワーク セキュリティ グループは、サブネット レベル (仮想マシンのサブネット) で適用されます。 この規則では、Bastion サブネットから仮想マシンへの受信 TCP トラフィックが許可されます。
myVM-nsg : このネットワーク セキュリティ グループは、ネットワーク インターフェイス (NIC) レベルで適用されます。 この規則では、Bastion サブネットから仮想マシンへの受信 TCP トラフィックが拒否されます。
myVM-nsg ネットワーク セキュリティ グループでは、VirtualNetwork サービス タグのアドレス空間から仮想マシンへのトラフィックが、セキュリティ規則 DenyVnetInBound によって拒否されます。 Bastion ホストは、VirtualNetwork サービス タグが含まれる 10.0.1.0/26 の IP アドレスを使用して、仮想マシンに接続します。 そのため、Bastion ホストからの接続は DenyVnetInBound セキュリティ規則によって拒否されます。
Bastion サブネットからのトラフィックを許可するセキュリティ規則を追加する
Azure Bastion を使用して myVM に接続するには、Bastion サブネットからのトラフィックがネットワーク セキュリティ グループによって許可されている必要があります。 10.0.1.0/26 からのトラフィックを許可するには、DenyVnetInBound ルールよりも高い優先順位 (低い優先順位番号) を持つセキュリティ ルールを追加するか、Bastion サブネットからのトラフィックを許可するように DenyVnetInBound ルールを編集します。
仮想マシンへのトラフィックを拒否するセキュリティ規則の詳細が表示された [Network Watcher] ページで、ネットワーク セキュリティ グループにセキュリティ規則を追加できます。
Network Watcher 内からセキュリティ規則を追加するには、[+ セキュリティ規則の追加] を選択し、次の値を入力または選択します。
設定
値
source
[IP アドレス] を選択します。
ソース IP アドレス/CIDR 範囲
「10.0.1.0/26 」と入力します。これは、Bastion サブネットの IP アドレス範囲です。
Source port ranges
「*」と入力します。
宛先
[任意] をクリックします。
サービス
[カスタム] を選択します。
宛先ポート範囲
「*」と入力します。
Protocol
[任意] をクリックします。
アクション
[許可] を選択します。
優先度
「900 」と入力します。これは、DenyVnetInBound 規則に使用した 1000 より高い優先度です。
名前
「AllowBastionConnections 」と入力します。
[再確認] を選択して、診断セッションをもう一度実行します。 診断セッションに、Bastion サブネットからのトラフィックが許可されていることが表示されます。
セキュリティ規則 AllowBastionConnections では、10.0.1.0/26 の任意の IP アドレスから仮想マシンへのトラフィックが許可されます。 Bastion ホストでは 10.0.1.0/26 の IP アドレスを使用するため、仮想マシンへの接続は AllowBastionConnections セキュリティ規則によって許可されます。
Add-AzNetworkSecurityRuleConfig を使用して、Bastion サブネットからのトラフィックを許可するセキュリティ規則を作成します。 次に、Set-AzNetworkSecurityGroup を使用して、ネットワーク セキュリティ グループを新しいセキュリティ規則で更新します。
# Place the network security group configuration into a variable.
$networkSecurityGroup = Get-AzNetworkSecurityGroup -Name 'myVM-nsg' -ResourceGroupName 'myResourceGroup'
# Create a security rule.
Add-AzNetworkSecurityRuleConfig -Name 'AllowBastionConnections' -NetworkSecurityGroup $networkSecurityGroup -Priority '900' -Access 'Allow' `
-Protocol '*' -Direction 'Inbound' -SourceAddressPrefix '10.0.1.0/26' -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '*'
# Updates the network security group.
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $networkSecurityGroup
Invoke-AzNetworkWatcherNetworkConfigurationDiagnostic を使用して、新しい NSG 診断セッションで再確認します。
# Create a profile for the diagnostic session.
$profile = New-AzNetworkWatcherNetworkConfigurationDiagnosticProfile -Direction 'Inbound' -Protocol 'Tcp' -Source '10.0.1.0/26' -Destination '10.0.0.4' -DestinationPort '*'
# Place the virtual machine configuration into a variable.
$vm = Get-AzVM -Name 'myVM' -ResourceGroupName 'myResourceGroup'
# Start the diagnostic session.
Invoke-AzNetworkWatcherNetworkConfigurationDiagnostic -Location 'eastus' -TargetResourceId $vm.Id -Profile $profile | Format-List
次のサンプル出力のような出力が返されます。
Results : {Microsoft.Azure.Commands.Network.Models.PSNetworkConfigurationDiagnosticResult}
ResultsText : [
{
"Profile": {
"Direction": "Inbound",
"Protocol": "Tcp",
"Source": "10.0.1.0/26",
"Destination": "10.0.0.4",
"DestinationPort": "*"
},
"NetworkSecurityGroupResult": {
"SecurityRuleAccessResult": "Allow",
"EvaluatedNetworkSecurityGroups": [
{
"NetworkSecurityGroupId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/NetworkAdmin/providers/Microsoft.Network/networkManagers/GlobalRules",
"MatchedRule": {
"RuleName": "VirtualNetwork",
"Action": "Allow"
},
"RulesEvaluationResult": [
{
"Name": "VirtualNetwork",
"ProtocolMatched": true,
"SourceMatched": true,
"SourcePortMatched": true,
"DestinationMatched": true,
"DestinationPortMatched": true
}
]
},
{
"NetworkSecurityGroupId": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/mySubnet-nsg",
"MatchedRule": {
"RuleName": "DefaultRule_AllowVnetInBound",
"Action": "Allow"
},
"RulesEvaluationResult": [
{
"Name": "DefaultRule_AllowVnetInBound",
"ProtocolMatched": true,
"SourceMatched": true,
"SourcePortMatched": true,
"DestinationMatched": true,
"DestinationPortMatched": true
}
]
},
{
"NetworkSecurityGroupId": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myVM-nsg",
"MatchedRule": {
"RuleName": "UserRule_AllowBastionConnections",
"Action": "Allow"
},
"RulesEvaluationResult": [
{
"Name": "UserRule_AllowBastionConnections",
"ProtocolMatched": true,
"SourceMatched": true,
"SourcePortMatched": true,
"DestinationMatched": true,
"DestinationPortMatched": true
}
]
}
]
}
}
]
セキュリティ規則 AllowBastionConnections では、10.0.1.0/26 の任意の IP アドレスから仮想マシンへのトラフィックが許可されます。 Bastion ホストでは 10.0.1.0/26 の IP アドレスを使用するため、仮想マシンへの接続は AllowBastionConnections セキュリティ規則によって許可されます。
az network nsg rule create を使用して、Bastion サブネットからのトラフィックを許可するセキュリティ規則をネットワーク セキュリティ グループに追加します。
# Add a security rule to the network security group.
az network nsg rule create --name 'AllowBastionConnections' --resource-group 'myResourceGroup' --nsg-name 'myVM-nsg' --priority '900' \
--access 'Allow' --protocol '*' --direction 'Inbound' --source-address-prefixes '10.0.1.0/26' --source-port-ranges '*' \
--destination-address-prefixes '*' --destination-port-ranges '*'
az network watcher run-configuration-diagnostic を使用して、新しい NSG 診断セッションで再確認します。
# Start the the NSG diagnostics session.
az network watcher run-configuration-diagnostic --resource 'myVM' --resource-group 'myResourceGroup' --resource-type 'virtualMachines' --direction 'Inbound' --protocol 'TCP' --source '10.0.1.0/26' --destination '10.0.0.4' --port '*'
次のサンプル出力のような出力が返されます。
{
"results": [
{
"networkSecurityGroupResult": {
"evaluatedNetworkSecurityGroups": [
{
"appliedTo": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet",
"matchedRule": {
"action": "Allow",
"ruleName": "VirtualNetwork"
},
"networkSecurityGroupId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/NetworkAdmin/providers/Microsoft.Network/networkManagers/GlobalRules",
"rulesEvaluationResult": [
{
"destinationMatched": true,
"destinationPortMatched": true,
"name": "VirtualNetwork",
"protocolMatched": true,
"sourceMatched": true,
"sourcePortMatched": true
}
]
},
{
"appliedTo": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet",
"matchedRule": {
"action": "Allow",
"ruleName": "DefaultRule_AllowVnetInBound"
},
"networkSecurityGroupId": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/mySubnet-nsg",
"rulesEvaluationResult": [
{
"destinationMatched": true,
"destinationPortMatched": true,
"name": "DefaultRule_AllowVnetInBound",
"protocolMatched": true,
"sourceMatched": true,
"sourcePortMatched": true
}
]
},
{
"appliedTo": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myvm36",
"matchedRule": {
"action": "Allow",
"ruleName": "UserRule_AllowBastionConnections"
},
"networkSecurityGroupId": "/subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myVM-nsg",
"rulesEvaluationResult": [
{
"destinationMatched": true,
"destinationPortMatched": true,
"name": "UserRule_AllowBastionConnections",
"protocolMatched": true,
"sourceMatched": true,
"sourcePortMatched": true
}
]
}
],
"securityRuleAccessResult": "Allow"
},
"profile": {
"destination": "10.0.0.4",
"destinationPort": "*",
"direction": "Inbound",
"protocol": "TCP",
"source": "10.0.1.0/26"
}
}
]
}
セキュリティ規則 AllowBastionConnections では、10.0.1.0/26 の任意の IP アドレスから仮想マシンへのトラフィックが許可されます。 Bastion ホストでは 10.0.1.0/26 の IP アドレスを使用するため、仮想マシンへの接続は AllowBastionConnections セキュリティ規則によって許可されます。
リソースをクリーンアップする
リソース グループとそれに含まれるすべてのリソースが不要になったら、それらを削除します。
ポータル上部の [検索] ボックスに「myResourceGroup 」と入力します。 検索結果から [myResourceGroup] を選択します。
[リソース グループの削除] を選択します。
[リソース グループの削除] に「myResourceGroup 」と入力し、[削除] を選択します。
[削除] を選択して、リソース グループとそのすべてのリソースの削除を確認します。
Remove-AzResourceGroup を使用して、リソース グループとその中のすべてのリソースを削除します。
# Delete the resource group and all the resources it contains.
Remove-AzResourceGroup -Name 'myResourceGroup' -Force
az group delete を使用して、リソース グループとそのグループに含まれているすべてのリソースを削除します
# Delete the resource group and all the resources it contains.
az group delete --name 'myResourceGroup' --yes --no-wait
次のステップ