다음을 통해 공유


자습서: Azure PowerShell을 사용하여 Windows 가상 머신용 Azure 가상 네트워크 만들기 및 관리

적용 대상: ✔️ Windows VM

Azure 가상 머신은 내부 및 외부 네트워크 통신에 Azure 네트워킹을 사용합니다. 이 자습서에서는 두 개의 가상 머신을 배포하고 이러한 VM에 대한 Azure 네트워킹을 구성하는 방법을 안내합니다. 이 자습서의 예제에서는 VM이 데이터베이스 백 엔드를 사용하여 웹 애플리케이션을 호스팅한다고 가정합니다. 그러나 애플리케이션은 자습서에 배포되지 않습니다. 이 자습서에서는 다음 방법을 알아봅니다.

  • 가상 네트워크 및 서브넷 만들기
  • 공용 IP 주소 만들기
  • 프런트 엔드 VM 만들기
  • 네트워크 트래픽 보호
  • 백 엔드 VM 만들기

VM 네트워킹 개요

Azure 가상 네트워크를 사용하면 가상 머신, 인터넷 및 Azure SQL Database와 같은 다른 Azure 서비스 간에 보안 네트워크 연결을 사용할 수 있습니다. 가상 네트워크는 서브넷이라는 논리 세그먼트로 세분화됩니다. 서브넷은 네트워크 흐름을 제어하고 보안 경계로 사용됩니다. VM을 배포할 때 일반적으로 서브넷에 연결된 가상 네트워크 인터페이스가 포함됩니다.

이 자습서를 완료하는 동안 생성된 리소스를 확인할 수 있습니다.

두 개의 서브넷이 있는 가상 네트워크

  • myVNet - VM이 서로 및 인터넷과 통신하는 데 사용하는 가상 네트워크입니다.
  • myFrontendSubnet - 프런트 엔드 리소스에서 사용하는 myVNet 의 서브넷입니다.
  • myPublicIPAddress - 인터넷에서 myFrontendVM 에 액세스하는 데 사용되는 공용 IP 주소입니다.
  • myFrontendNic - myFrontendVM에서 myBackendVM 과 통신하는 데 사용하는 네트워크 인터페이스 입니다.
  • myFrontendVM - 인터넷과 myBackendVM 간에 통신하는 데 사용되는 VM입니다.
  • myBackendNSG - myFrontendVMmyBackendVM 간의 통신을 제어하는 네트워크 보안 그룹입니다.
  • 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를 사용하여 myFrontendSubnetmyBackendSubnet을 사용하여 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 주소는 동적으로 할당됩니다. 동적 IP 주소는 VM가 할당 해제될 때 해제됩니다. 이 동작으로 인해 VM 할당 취소가 포함된 모든 작업 중에 IP 주소가 변경됩니다.

할당 방법을 정적으로 설정할 수 있으므로 할당 취소된 상태에서도 IP 주소가 VM에 할당된 상태로 유지됩니다. 고정 IP 주소를 사용하는 경우 IP 주소 자체를 지정할 수 없습니다. 대신 사용 가능한 주소 풀에서 할당됩니다.

New-AzPublicIpAddress를 사용하여 myPublicIPAddress라는 공용 IP 주소를 만듭니다.

$pip = New-AzPublicIpAddress `
  -ResourceGroupName myRGNetwork `
  -Location EastUS `
  -AllocationMethod Dynamic `
  -Name myPublicIPAddress

-AllocationMethod 매개 변수를 변경하여 고정 공용 IP 주소를 할당할 Static 수 있습니다.

프런트 엔드 VM 만들기

VM이 가상 네트워크에서 통신하려면 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 및 역할 인스턴스의 상태를 검색할 수 있도록 허용합니다. 부하 분산 집합을 사용하지 않는 경우 이 규칙을 재정의할 수 있습니다.

네트워크 보안 그룹 만들기

New-AzNetworkSecurityRuleConfig를 사용하여 myFrontendVM에서 들어오는 웹 트래픽을 허용하는 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을 사용하여 VM의 관리자 계정에 필요한 사용자 이름 및 암호를 설정합니다.

$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 네트워크를 만들고 보호했습니다.

  • 가상 네트워크 및 서브넷 만들기
  • 공용 IP 주소 만들기
  • 프런트 엔드 VM 만들기
  • 네트워크 트래픽 보호
  • 백 엔드 VM 만들기

VM 디스크를 보호하는 방법에 대한 자세한 내용은 디스크에 대한 백업 및 재해 복구를 참조하세요.