자습서: Azure PowerShell을 사용하여 Windows 가상 머신을 위한 Azure 가상 네트워크 만들기 및 관리
적용 대상: ✔️ Windows VM
Azure 가상 머신은 내부 및 외부 네트워크 통신에서 Azure 네트워킹을 사용합니다. 이 자습서에서는 두 개의 가상 머신을 배포하고 이러한 VM에 Azure 네트워킹을 구성하기 위해 단계별로 안내합니다. 이 자습서의 예제에서는 VM에서 데이터베이스 백 엔드가 있는 웹 애플리케이션을 호스팅한다고 가정하고 있지만 애플리케이션은 이 자습서에서 배포되지 않습니다. 이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.
- 가상 네트워크 및 서브넷 만들기
- 공용 IP 주소 만들기
- 프런트 엔드 VM 만들기
- 네트워크 트래픽 보안
- 백 엔드 VM 만들기
VM 네트워킹 개요
Azure 가상 네트워크를 사용하면 네트워크에서 가상 머신, 인터넷 및 다른 Azure 서비스(예: Azure SQL Database) 간에 안전하게 연결할 수 있습니다. 가상 네트워크는 서브넷이라는 논리적 세그먼트로 구분됩니다. 서브넷은 보안 경계로서 네트워크 흐름을 제어하는 데 사용됩니다. VM을 배포할 때는 일반적으로 서브넷에 연결된 가상 네트워크 인터페이스가 포함됩니다.
이 자습서를 완료하면 다음과 같은 리소스가 만들어진 것을 볼 수 있습니다.
- myVNet - VM이 다른 VM 및 인터넷과 통신할 때 사용하는 가상 네트워크.
- myFrontendSubnet - 프런트 엔드 리소스에서 사용되는 myVNet의 서브넷.
- myPublicIPAddress - 인터넷에서 myFrontendVM을 액세스할 때 사용되는 공용 IP 주소.
- myFrontendNic - myFrontendVM이 myBackendVM과 통신할 때 사용하는 네트워크 인터페이스.
- myFrontendVM - 인터넷과 myBackendVM 사이에 통신할 때 사용되는 VM.
- myBackendNSG - myFrontendVM과 myBackendVM 사이의 통신을 제어하는 네트워크 보안 그룹.
- myBackendSubnet - myBackendNSG에 연동되어 백엔드 리소스에 의해 사용되는 서브넷.
- myBackendNic - myBackendVM이 myFrontendVM과 통신할 때 사용하는 네트워크 인터페이스.
- myBackendVM - 포트 1433을 사용하여 myFrontendVM과 통신하는 VM.
Azure Cloud Shell 시작
Azure Cloud Shell은 이 문서의 단계를 실행하는 데 무료로 사용할 수 있는 대화형 셸입니다. 공용 Azure 도구가 사전 설치되어 계정에서 사용하도록 구성되어 있습니다.
Cloud Shell을 열려면 코드 블록의 오른쪽 위 모서리에 있는 사용해 보세요를 선택하기만 하면 됩니다. 또한 https://shell.azure.com/powershell 로 이동하여 별도의 브라우저 탭에서 Cloud Shell을 시작할 수 있습니다. 복사를 선택하여 코드 블록을 복사하여 Cloud Shell에 붙여넣고, Enter 키를 눌러 실행합니다.
서브넷 만들기
이 자습서에서는 두 개의 서브넷이 있는 단일 가상 네트워크를 만듭니다. 서브넷 하나는 웹 애플리케이션을 호스트하기 위한 프런트 엔드 서브넷이고 다른 하나는 데이터베이스 서버를 호스트하기 위한 백 엔드 서브넷입니다.
가상 네트워크를 만들려면 먼저 New-AzResourceGroup을 사용하여 리소스 그룹을 만듭니다. 다음 예제에서는 EastUS 위치에 myRGNetwork라는 리소스 그룹을 만듭니다.
New-AzResourceGroup -ResourceGroupName myRGNetwork -Location EastUS
New-AzVirtualNetworkSubnetConfig를 사용하여 myFrontendSubnet이라는 서브넷 구성을 만듭니다.
$frontendSubnet = New-AzVirtualNetworkSubnetConfig `
-Name myFrontendSubnet `
-AddressPrefix 10.0.0.0/24
그런 다음 myBackendSubnet이라는 서브넷 구성을 만듭니다.
$backendSubnet = New-AzVirtualNetworkSubnetConfig `
-Name myBackendSubnet `
-AddressPrefix 10.0.1.0/24
가상 네트워크 만들기
New-AzVirtualNetwork를 통해 myFrontendSubnet과 myBackendSubnet을 사용하여 myVNet이라는 VNET을 만듭니다.
$vnet = New-AzVirtualNetwork `
-ResourceGroupName myRGNetwork `
-Location EastUS `
-Name myVNet `
-AddressPrefix 10.0.0.0/16 `
-Subnet $frontendSubnet, $backendSubnet
이 시점에서 네트워크가 만들어져 하나는 프론트 엔드 서비스를, 다른 하나는 백 엔드 서비스를 위한 두 개의 서브넷으로 분할되었습니다. 다음 섹션에서는 가상 머신을 만들어 이 서브넷에 연결합니다.
공용 IP 주소 만들기
공용 IP 주소를 사용하면 Azure 리소스를 인터넷에서 액세스할 수 있습니다. 공용 IP 주소의 할당 방법은 동적 또는 정적 할당으로 구성할 수 있습니다. 기본적으로 공용 IP 주소는 동적 할당됩니다. VM 할당을 취소하는 경우 동적 IP 주소도 해제됩니다. 이 동작은 VM 할당 취소를 포함하는 모든 작업 중에 IP 주소가 변경되게 합니다.
할당 방법은 정적으로 설정할 수 있으며, 이렇게 하면 할당이 취소된 상태에서도 IP 주소가 VM에 할당된 상태로 유지됩니다. 정적 IP 주소를 사용하는 경우 IP 주소 자체는 지정할 수 없습니다. 대신 사용 가능한 주소 풀에서 할당됩니다.
New-AzPublicIpAddress를 사용하여 myPublicIPAddress라는 공용 IP 주소를 만듭니다.
$pip = New-AzPublicIpAddress `
-ResourceGroupName myRGNetwork `
-Location EastUS `
-AllocationMethod Dynamic `
-Name myPublicIPAddress
-AllocationMethod 매개 변수를 Static
으로 변경하면 정적 공용 IP 주소를 할당할 수 있습니다.
프런트 엔드 VM 만들기
가상 네트워크가 VNet에서 통신하려면 가상 네트워크 인터페이스(NIC)가 필요합니다. New-AzNetworkInterface를 사용하여 NIC를 만듭니다.
$frontendNic = New-AzNetworkInterface `
-ResourceGroupName myRGNetwork `
-Location EastUS `
-Name myFrontend `
-SubnetId $vnet.Subnets[0].Id `
-PublicIpAddressId $pip.Id
Get-Credential을 사용하여 VM의 관리자 계정에 필요한 사용자 이름 및 암호를 설정합니다. 다음과 같은 추가 단계에서 이러한 자격 증명을 사용하여 VM에 연결합니다.
$cred = Get-Credential
New-AzVM을 사용하여 VM을 만듭니다.
New-AzVM `
-Credential $cred `
-Name myFrontend `
-PublicIpAddressName myPublicIPAddress `
-ResourceGroupName myRGNetwork `
-Location "EastUS" `
-Size Standard_D1 `
-SubnetName myFrontendSubnet `
-VirtualNetworkName myVNet
네트워크 트래픽 보안
NSG(네트워크 보안 그룹)에는 Azure VNet(Virtual Network)에 연결된 리소스에 대한 네트워크 트래픽을 허용하거나 거부하는 보안 규칙 목록이 포함되어 있습니다. NSG는 서브넷 또는 개별 네트워크 인터페이스에 연결할 수 있습니다. 네트워크 인터페이스에 연결된 NSG는 연결된 VM에만 적용됩니다. NSG를 서브넷에 연결하면 규칙이 서브넷에 연결된 모든 리소스에 적용됩니다.
네트워크 보안 그룹 규칙
NSG 규칙은 트래픽이 허용되거나 거부되는 네트워킹 포트를 정의합니다. 규칙에는 원본 및 대상 IP 주소 범위가 포함될 수 있으므로 특정 시스템이나 서브넷 간의 트래픽이 제어됩니다. NSG 규칙에는 우선 순위(1-4096 사이)도 포함됩니다. 규칙은 우선 순위에 따라 평가됩니다. 우선 순위가 100인 규칙은 우선 순위가 200인 규칙보다 먼저 평가됩니다.
모든 NSG에는 기본 규칙 집합이 포함됩니다. 기본 규칙은 삭제할 수 없지만, 가장 낮은 우선순위가 할당되기 때문에 직접 만든 규칙으로 재정의할 수 있습니다.
- 가상 네트워크: 가상 네트워크에서 시작하고 끝나는 트래픽은 인바운드와 아웃바운드 방향 둘 다에서 허용됩니다.
- 인터넷: 아웃바운드 트래픽은 허용되지만 인바운드 트래픽은 차단됩니다.
- 부하 분산 장치: Azure의 부하 분산 장치에서 VM과 역할 인스턴스의 상태를 검색할 수 있도록 허용합니다. 부하 분산된 집합을 사용하지 않는 경우 이 규칙을 재정의할 수 있습니다.
네트워크 보안 그룹 만들기
myFrontendVM에서 웹 트래픽의 수신이 허용되도록 New-AzNetworkSecurityRuleConfig를 사용하여 myFrontendNSGRule이라는 인바운드 규칙을 만듭니다.
$nsgFrontendRule = New-AzNetworkSecurityRuleConfig `
-Name myFrontendNSGRule `
-Protocol Tcp `
-Direction Inbound `
-Priority 200 `
-SourceAddressPrefix * `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 80 `
-Access Allow
백 엔드 서브넷에 대한 NSG를 만들어 myFrontendVM에서만 myBackendVM으로 내부 트래픽을 보내도록 제한할 수 있습니다. 다음 예제는 myBackendNSGRule이라는 NSG 규칙을 만듭니다.
$nsgBackendRule = New-AzNetworkSecurityRuleConfig `
-Name myBackendNSGRule `
-Protocol Tcp `
-Direction Inbound `
-Priority 100 `
-SourceAddressPrefix 10.0.0.0/24 `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 1433 `
-Access Allow
New-AzNetworkSecurityGroup을 사용하여 myFrontendNSG라는 네트워크 보안 그룹을 추가합니다.
$nsgFrontend = New-AzNetworkSecurityGroup `
-ResourceGroupName myRGNetwork `
-Location EastUS `
-Name myFrontendNSG `
-SecurityRules $nsgFrontendRule
이제 New-AzNetworkSecurityGroup을 사용하여 myBackendNSG라는 네트워크 보안 그룹을 추가합니다.
$nsgBackend = New-AzNetworkSecurityGroup `
-ResourceGroupName myRGNetwork `
-Location EastUS `
-Name myBackendNSG `
-SecurityRules $nsgBackendRule
서브넷에 네트워크 보안 그룹을 추가합니다.
$vnet = Get-AzVirtualNetwork `
-ResourceGroupName myRGNetwork `
-Name myVNet
$frontendSubnet = $vnet.Subnets[0]
$backendSubnet = $vnet.Subnets[1]
$frontendSubnetConfig = Set-AzVirtualNetworkSubnetConfig `
-VirtualNetwork $vnet `
-Name myFrontendSubnet `
-AddressPrefix $frontendSubnet.AddressPrefix `
-NetworkSecurityGroup $nsgFrontend
$backendSubnetConfig = Set-AzVirtualNetworkSubnetConfig `
-VirtualNetwork $vnet `
-Name myBackendSubnet `
-AddressPrefix $backendSubnet.AddressPrefix `
-NetworkSecurityGroup $nsgBackend
Set-AzVirtualNetwork -VirtualNetwork $vnet
백엔드 VM 만들기
이 자습서에서 백엔드 VM을 만드는 가장 쉬운 방법은 SQL Server 이미지를 사용하는 것입니다. 이 자습서에서는 데이터베이스 서버를 사용하여 VM을 만들기만 하며 데이터베이스에 액세스하는 방법에 대한 정보는 제공하지 않습니다.
myBackendNic을 만듭니다.
$backendNic = New-AzNetworkInterface `
-ResourceGroupName myRGNetwork `
-Location EastUS `
-Name myBackend `
-SubnetId $vnet.Subnets[1].Id
Get-Credential을 사용하여 가상 컴퓨터의 관리자 계정에 필요한 사용자 이름 및 암호를 설정합니다.
$cred = Get-Credential
myBackendVM을 만듭니다.
New-AzVM `
-Credential $cred `
-Name myBackend `
-ImageName "MicrosoftSQLServer:SQL2016SP1-WS2016:Enterprise:latest" `
-ResourceGroupName myRGNetwork `
-Location "EastUS" `
-SubnetName MyBackendSubnet `
-VirtualNetworkName myVNet
이 예제의 이미지에는 SQL Server가 설치되어 있지만 이 자습서에서는 사용하지 않습니다. 여기서는 웹 트래픽을 처리하도록 VM을 구성하는 방법 및 데이터베이스 관리를 처리하도록 VM을 구성하는 방법을 보여 주기 위해 포함되었습니다.
다음 단계
이 자습서에서는 가상 머신과 관련된 Azure Networks를 만들고 보호했습니다.
- 가상 네트워크 및 서브넷 만들기
- 공용 IP 주소 만들기
- 프런트 엔드 VM 만들기
- 네트워크 트래픽 보안
- 백엔드 VM 만들기
VM 디스크를 보호하는 방법에 대한 자세한 내용은 디스크의 백업 및 재해 복구를 참조하세요.