ARMテンプレートを使ったAzure Network Security Groupのデプロイ手順
ARMテンプレートを使用したNSG(Azure Network Security Group)の作成手順です。
ARMテンプレートのデプロイにはAzure PowerShellを使用しています。
今回は仮想マシン(Azure VM)のNSGとして利用頻度が高いRDP(ポート番号3389)について、特定のIPアドレスからのみ受信を許可する設定で確認しています。
※本記事では、Azure Network Security Group(ネットワークセキュリティグループ)をNSGと表記します。
※本記事では、Azure Virtual Machines(Azure VM)を仮想マシンとして表記しています。
NSG(Azure Network Security Group)とは
仮想マシンなどのAzureリソースへのアクセス制御に使用されるサービスとしてNSGがあります。
ネットワークセキュリティグループの概要、Azure Portalを利用したリソースの作成方法、仮想マシンでの適用例については、こちらで紹介しています。
NSG(Azure Network Security Group)のARMテンプレートを作成
NSGのARMテンプレートを作成します。
作成するNSGの設定値
NSGのARMテンプレートでは、以下の2つの設定を行っています。
-
- NSGの作成
- 受信セキュリティ規則の作成
NSGの基本設定については、パラメーターとして指定できるようにしています。
設定項目 | 設定値 |
名前 | パラメーターで指定 |
地域 | パラメーターで指定 デフォルト値:japaneast |
作成した受信セキュリティ規則の設定内容です。
設定項目 | 設定値 |
名前 | パラメーターで指定 デフォルト値:RDP-Permit |
優先度 | 1000 |
通信内容 | ソース : パラメーターで指定したパブリックIPアドレス 宛先 : VirtualNetwork |
ポート番号 | サービス : RDP 宛先ポート範囲 : 3389 |
プロトコル | TCP |
許可設定 | Allow |
NSGのARMテンプレートで使用したパラメーター
NSGのARMテンプレートで使用したパラメーターです。
パラメーター名 | パラメーターで指定する内容 |
NSGName | NSGの名前 |
Location | NSGの地域 デフォルト値:japaneast |
NSGRuleName | 受信規則名 デフォルト値:RDP-Permit |
PermitIP | 受信許可するアドレス |
※設定するパラメーターは、環境にあわせて修正します。
NSGのARMテンプレート
作成したNSGのARMテンプレートです。
NSGのデフォルトルールは、リソース作成時に自動的に生成されます。
テンプレート内で明示的に定義する必要はありません。
{
“$schema": “https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
“contentVersion": “1.0.0.0",
“parameters": {
“NSGName": {
“type": “String",
“metadata": {}
},
“Location": {
“type": “String",
“defaultValue": “japaneast",
“metadata":{}
},
“NSGRuleName": {
“type": “String",
“defaultValue": “RDP-Permit",
“metadata":{}
},
“PermitIP": {
“type": “String",
“metadata":{}
}
},
“variables": {},
“resources": [
{
“type": “Microsoft.Network/networkSecurityGroups",
“apiVersion": “2019-11-01",
“name": “[parameters('NSGName’)]",
“location": “[parameters('Location’)]",
“properties": {
“securityRules": [
{
“name": “[parameters('NSGRuleName’)]",
“properties": {
“protocol": “Tcp",
“sourcePortRange": “*",
“destinationPortRange": “3389",
“sourceAddressPrefix": “[parameters('PermitIP’)]",
“destinationAddressPrefix": “VirtualNetwork",
“access": “Allow",
“priority": 1000,
“direction": “Inbound",
“sourcePortRanges": [],
“destinationPortRanges": [],
“sourceAddressPrefixes": [],
“destinationAddressPrefixes": []
}
}
]
}
},
{
“type": “Microsoft.Network/networkSecurityGroups/securityRules",
“apiVersion": “2019-11-01",
“name": “[concat(parameters('NSGName’), '/’, parameters('NSGRuleName’))]",
“dependsOn": [
“[resourceId('Microsoft.Network/networkSecurityGroups’, parameters('NSGName’))]"
],
“properties": {
“protocol": “Tcp",
“sourcePortRange": “*",
“destinationPortRange": “3389",
“sourceAddressPrefix": “[parameters('PermitIP’)]",
“destinationAddressPrefix": “VirtualNetwork",
“access": “Allow",
“priority": 1000,
“direction": “Inbound",
“sourcePortRanges": [],
“destinationPortRanges": [],
“sourceAddressPrefixes": [],
“destinationAddressPrefixes": []
}
}
]
}
|
—広告—
PowerShellを使用してNSGのARMテンプレートをデプロイ
作成したNSGのARMテンプレートをPowerShellを使用してデプロイします。
ARMテンプレートのデプロイにはNew-AzResourceGroupDeployment
ARMテンプレートのデプロイは、New-AzResourceGroupDeploymentコマンドレットを使用して実施しています。
リソースグループ名、地域名、受信セキュリティ規則名、ARMテンプレートファイルパスは、PowerShellスクリプト内に直接記載しています。
デプロイ時に指定するのは、NSG名と許可IPです。
※設定するパラメーターは、環境にあわせて修正します。
# NSG Template Deploy [String] [Parameter(Mandatory=$true)] $NSGName ,
[String] [Parameter(Mandatory=$true)] $Address
)
$resourceGroupName = “リソースグループ名"
$Location = “地域名"
$NSGRuleName = “受信セキュリティ規則名"
$TemplateFilePath = “ARMテンプレートファイルのパス"
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName `
-TemplateFile $TemplateFilePath `
-NSGName $NSGName `
-NSGRuleName $NSGRuleName `
-PermitIP $Address `
-Location $Location
|
デプロイを実行
NSGのARMテンプレートをデプロイします。
ARMテンプレートはNSG_20220709.jsonとして保存しています。
デプロイ用のPowerShellスクリプトはNSG_Template_Deploy_20220709.ps1として保存しています。
NSG名はps-test-nsg、許可するIPアドレスは192.168.1.1を設定しています。
最後に
今回は、ARMテンプレートを使用したNSGの作成手順を確認しました。
PowerShellを使ってARMテンプレートをデプロイしていますが、Azure Portal上にあるテンプレート機能を利用しても同様のことが可能です。
ARMテンプレートを使い回すことで、簡単にリソースを複数作成することができて非常に便利かと思いました。