적용 대상: ✔️ Linux VM ✔️ 유연한 확장 집합
Azure 가상 머신은 내부 및 외부 네트워크 통신에 Azure 네트워킹을 사용합니다. 이 자습서에서는 두 개의 가상 머신을 배포하고 이러한 VM에 대한 Azure 네트워킹을 구성하는 방법을 안내합니다. 이 자습서의 예제에서는 VM이 데이터베이스 백 엔드를 사용하여 웹 애플리케이션을 호스팅한다고 가정합니다. 그러나 애플리케이션은 자습서에 배포되지 않습니다. 이 자습서에서는 다음 방법을 알아봅니다.
- 가상 네트워크 및 서브넷 만들기
- 공용 IP 주소 만들기
- 프런트 엔드 VM 만들기
- 네트워크 트래픽 보호
- 백 엔드 VM 만들기
이 자습서에서는 지속적으로 최신 버전으로 업데이트되는 Azure Cloud Shell 내의 CLI를 사용합니다. Cloud Shell을 열려면 코드 블록 상단에서 사용해 보세요를 선택합니다.
CLI를 로컬로 설치하여 사용하도록 선택한 경우 이 자습서에서 Azure CLI 버전 2.0.30 이상을 실행해야 합니다.
az --version을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.
VM 네트워킹 개요
Azure 가상 네트워크를 사용하면 가상 머신, 인터넷 및 Azure SQL Database와 같은 다른 Azure 서비스 간에 보안 네트워크 연결을 사용할 수 있습니다. 가상 네트워크는 서브넷이라는 논리 세그먼트로 세분화됩니다. 서브넷은 네트워크 흐름을 제어하고 보안 경계로 사용됩니다. VM을 배포할 때 일반적으로 서브넷에 연결된 가상 네트워크 인터페이스가 포함됩니다.
자습서를 완료하면 다음 가상 네트워크 리소스가 만들어집니다.
- myVNet - VM이 서로 및 인터넷과 통신하는 데 사용하는 가상 네트워크입니다.
- myFrontendSubnet - 프런트 엔드 리소스에서 사용하는 myVNet 의 서브넷입니다.
- myPublicIPAddress - 인터넷에서 myFrontendVM 에 액세스하는 데 사용되는 공용 IP 주소입니다.
- myFrontentNic - myFrontendVM에서 myBackendVM 과 통신하는 데 사용하는 네트워크 인터페이스 입니다.
- myFrontendVM - 인터넷과 myBackendVM 간에 통신하는 데 사용되는 VM입니다.
- myBackendNSG - myFrontendVM 과 myBackendVM 간의 통신을 제어하는 네트워크 보안 그룹입니다.
- myBackendSubnet - myBackendNSG 와 연결되고 백 엔드 리소스에서 사용되는 서브넷입니다.
- myBackendNic - myBackendVM 에서 myFrontendVM과 통신하는 데 사용하는 네트워크 인터페이스입니다.
- myBackendVM - 포트 22 및 3306을 사용하여 myFrontendVM과 통신하는 VM입니다.
가상 네트워크 및 서브넷 만들기
이 자습서에서는 두 개의 서브넷을 사용하여 단일 가상 네트워크를 만듭니다. 웹 애플리케이션을 호스팅하기 위한 프런트 엔드 서브넷 및 데이터베이스 서버를 호스팅하기 위한 백 엔드 서브넷입니다.
가상 네트워크를 만들기 전에 az group create를 사용하여 리소스 그룹을 만듭니다. 다음 예제에서는 eastus 위치에 myRGNetwork 라는 리소스 그룹을 만듭니다.
az group create --name myRGNetwork --location eastus
가상 네트워크 만들기
az network vnet create 명령을 사용하여 가상 네트워크를 만듭니다. 이 예제에서 네트워크의 이름은 mvVNet 이며 주소 접두사 10.0.0.0/16이 지정됩니다. 또한 myFrontendSubnet 의 이름과 접두사 10.0.1.0/24를 사용하여 서브넷을 만듭니다. 이 자습서의 뒷부분에서 프런트 엔드 VM은 이 서브넷에 연결됩니다.
az network vnet create \
--resource-group myRGNetwork \
--name myVNet \
--address-prefix 10.0.0.0/16 \
--subnet-name myFrontendSubnet \
--subnet-prefix 10.0.1.0/24
서브넷 만들기
az network vnet subnet create 명령을 사용하여 새 서브넷이 가상 네트워크에 추가됩니다. 이 예제에서 서브넷의 이름은 myBackendSubnet 이며 주소 접두사 10.0.2.0/24가 지정됩니다. 이 서브넷은 모든 백 엔드 서비스와 함께 사용됩니다.
az network vnet subnet create \
--resource-group myRGNetwork \
--vnet-name myVNet \
--name myBackendSubnet \
--address-prefix 10.0.2.0/24
이 시점에서 네트워크가 만들어지고 프런트 엔드 서비스용 서브넷과 백 엔드 서비스를 위한 서브넷으로 분할되었습니다. 다음 섹션에서는 가상 머신을 만들고 이러한 서브넷에 연결합니다.
공용 IP 주소 만들기
공용 IP 주소를 사용하면 인터넷에서 Azure 리소스에 액세스할 수 있습니다. 공용 IP 주소의 할당 방법을 동적 또는 정적으로 구성할 수 있습니다. 기본적으로 공용 IP 주소는 동적으로 할당됩니다. 동적 IP 주소는 VM가 할당 해제될 때 해제됩니다. 이 동작으로 인해 VM 할당 취소가 포함된 모든 작업 중에 IP 주소가 변경됩니다.
할당 방법을 정적으로 설정할 수 있으므로 할당 취소된 상태에서도 IP 주소가 VM에 할당된 상태로 유지됩니다. 정적으로 할당된 IP 주소를 사용하는 경우 IP 주소 자체를 지정할 수 없습니다. 대신 사용 가능한 주소 풀에서 할당됩니다.
az network public-ip create --resource-group myRGNetwork --name myPublicIPAddress
az vm create 명령을 사용하여 VM을 만들 때 기본 공용 IP 주소 할당 방법은 동적입니다.
az vm create 명령을 사용하여 가상 머신을 만들 때 정적 공용 IP 주소를 할당하는 인수를 포함합니다--public-ip-address-allocation static. 이 작업은 이 자습서에서는 표시되지 않습니다. 그러나 다음 섹션에서는 동적으로 할당된 IP 주소가 정적으로 할당된 주소로 변경됩니다.
할당 방법 변경
az network public-ip update 명령을 사용하여 IP 주소 할당 방법을 변경할 수 있습니다. 이 예제에서는 프런트 엔드 VM의 IP 주소 할당 방법이 정적으로 변경됩니다.
먼저 VM의 할당을 취소합니다.
az vm deallocate --resource-group myRGNetwork --name myFrontendVM
az network public-ip update 명령을 사용하여 할당 방법을 업데이트합니다. 이 경우 --allocation-method가 정적으로 설정됩니다.
az network public-ip update --resource-group myRGNetwork --name myPublicIPAddress --allocation-method static
VM을 시작합니다.
az vm start --resource-group myRGNetwork --name myFrontendVM --no-wait
공용 IP 주소 없음
인터넷을 통해 VM에 액세스할 필요가 없는 경우가 많습니다. 공용 IP 주소 없이 VM을 만들려면 빈 큰따옴표 집합이 있는 인수를 사용합니다 --public-ip-address "" . 이 구성은 이 자습서의 뒷부분에서 설명합니다.
프런트 엔드 VM 만들기
az vm create 명령을 사용하여 myPublicIPAddress를 사용하여 myFrontendVM이라는 VM을 만듭니다.
az vm create \
--resource-group myRGNetwork \
--name myFrontendVM \
--vnet-name myVNet \
--subnet myFrontendSubnet \
--nsg myFrontendNSG \
--public-ip-address myPublicIPAddress \
--image Ubuntu2204 \
--generate-ssh-keys
네트워크 트래픽 보호
NSG(네트워크 보안 그룹)에는 Azure VNet(Virtual Network)에 연결된 리소스에 대한 네트워크 트래픽을 허용하거나 거부하는 보안 규칙 목록이 포함되어 있습니다. NSG는 서브넷 또는 개별 네트워크 인터페이스에 연결할 수 있습니다. NSG가 네트워크 인터페이스와 연결된 경우 연결된 VM만 적용됩니다. NSG를 서브넷에 연결하면 규칙이 서브넷에 연결된 모든 리소스에 적용됩니다.
네트워크 보안 그룹 규칙
NSG 규칙은 트래픽이 허용되거나 거부되는 네트워킹 포트를 정의합니다. 규칙은 특정 시스템 또는 서브넷 간에 트래픽이 제어되도록 원본 및 대상 IP 주소 범위를 포함할 수 있습니다. NSG 규칙에는 우선 순위(1에서 4096 사이)도 포함됩니다. 규칙은 우선 순위 순으로 평가됩니다. 우선 순위가 100인 규칙은 우선 순위가 200인 규칙 전에 평가됩니다.
모든 NSG에는 기본 규칙 집합이 포함됩니다. 기본 규칙은 삭제할 수 없지만 가장 낮은 우선 순위가 할당되므로 사용자가 만든 규칙으로 재정의할 수 있습니다.
NSG에 대한 기본 규칙은 다음과 같습니다.
- 가상 네트워크 - 가상 네트워크에서 시작 및 종료되는 트래픽은 인바운드 및 아웃바운드 방향 모두에서 허용됩니다.
- 인터넷 - 아웃바운드 트래픽은 허용되지만 인바운드 트래픽은 차단됩니다.
- 부하 분산 장치 - Azure의 부하 분산 장치가 VM 및 역할 인스턴스의 상태를 검색할 수 있도록 허용합니다. 부하 분산 집합을 사용하지 않는 경우 이 규칙을 재정의할 수 있습니다.
네트워크 보안 그룹 만들기
az vm create 명령을 사용하여 VM과 동시에 네트워크 보안 그룹을 만들 수 있습니다. 이렇게 하면 NSG는 VM 네트워크 인터페이스와 연결되고 NSG 규칙은 모든 원본의 포트 22 에서 트래픽을 허용하도록 자동으로 만들어집니다. 이 자습서의 앞부분에서 프런트 엔드 NSG는 프런트 엔드 VM을 사용하여 자동으로 만들어졌습니다. 포트 22에 대한 NSG 규칙도 자동으로 생성되었습니다.
경우에 따라 기본 SSH 규칙을 만들지 않아야 하는 경우 또는 NSG를 서브넷에 연결해야 하는 경우와 같이 NSG를 미리 만드는 것이 유용할 수 있습니다.
az network nsg create 명령을 사용하여 네트워크 보안 그룹을 만듭니다.
az network nsg create --resource-group myRGNetwork --name myBackendNSG
NSG를 네트워크 인터페이스에 연결하지 않고 서브넷과 연결됩니다. 이 구성에서 서브넷에 연결된 모든 VM은 NSG 규칙을 상속합니다.
myBackendSubnet이라는 기존 서브넷을 새 NSG로 업데이트합니다.
az network vnet subnet update \
--resource-group myRGNetwork \
--vnet-name myVNet \
--name myBackendSubnet \
--network-security-group myBackendNSG
들어오는 트래픽 보호
프런트 엔드 VM을 만들 때 포트 22에서 들어오는 트래픽을 허용하도록 NSG 규칙이 생성되었습니다. 이 규칙은 VM에 대한 SSH 연결을 허용합니다. 이 예제에서는 포트 80에서도 트래픽을 허용해야 합니다. 이 구성을 사용하면 VM에서 웹 애플리케이션에 액세스할 수 있습니다.
az network nsg rule create 명령을 사용하여 포트 80에 대한 규칙을 만듭니다.
az network nsg rule create \
--resource-group myRGNetwork \
--nsg-name myFrontendNSG \
--name http \
--access allow \
--protocol Tcp \
--direction Inbound \
--priority 200 \
--source-address-prefix "*" \
--source-port-range "*" \
--destination-address-prefix "*" \
--destination-port-range 80
프런트 엔드 VM은 포트 22 및 포트 80에서만 액세스할 수 있습니다. 들어오는 다른 모든 트래픽은 네트워크 보안 그룹에서 차단됩니다. NSG 규칙 구성을 시각화하는 것이 유용할 수 있습니다. az network rule list 명령을 사용하여 NSG 규칙 구성을 반환합니다.
az network nsg rule list --resource-group myRGNetwork --nsg-name myFrontendNSG --output table
VM에서 VM으로의 트래픽 보호
네트워크 보안 그룹 규칙은 VM 간에도 적용할 수 있습니다. 이 예제에서는 프런트 엔드 VM이 포트 22 및 3306에서 백 엔드 VM과 통신해야 합니다. 이 구성을 사용하면 프런트 엔드 VM의 SSH 연결을 허용하고 프런트 엔드 VM의 애플리케이션이 백 엔드 MySQL 데이터베이스와 통신할 수 있습니다. 프런트 엔드 및 백 엔드 가상 머신 간에 다른 모든 트래픽을 차단해야 합니다.
az network nsg rule create 명령을 사용하여 포트 22에 대한 규칙을 만듭니다. 인수는 --source-address-prefix10.0.1.0/24 값을 지정합니다. 이 구성은 프런트 엔드 서브넷의 트래픽만 NSG를 통해 허용되도록 합니다.
az network nsg rule create \
--resource-group myRGNetwork \
--nsg-name myBackendNSG \
--name SSH \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 100 \
--source-address-prefix 10.0.1.0/24 \
--source-port-range "*" \
--destination-address-prefix "*" \
--destination-port-range "22"
이제 포트 3306에서 MySQL 트래픽에 대한 규칙을 추가합니다.
az network nsg rule create \
--resource-group myRGNetwork \
--nsg-name myBackendNSG \
--name MySQL \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 200 \
--source-address-prefix 10.0.1.0/24 \
--source-port-range "*" \
--destination-address-prefix "*" \
--destination-port-range "3306"
마지막으로 NSG에는 동일한 VNet의 VM 간 모든 트래픽을 허용하는 기본 규칙이 있으므로 백 엔드 NSG가 모든 트래픽을 차단하도록 규칙을 만들 수 있습니다. 여기서 --priority 는 NSG 및 MySQL 규칙 모두보다 낮은 값인 300이 제공됩니다. 이 구성을 사용하면 NSG를 통해 SSH 및 MySQL 트래픽이 계속 허용됩니다.
az network nsg rule create \
--resource-group myRGNetwork \
--nsg-name myBackendNSG \
--name denyAll \
--access Deny \
--protocol Tcp \
--direction Inbound \
--priority 300 \
--source-address-prefix "*" \
--source-port-range "*" \
--destination-address-prefix "*" \
--destination-port-range "*"
백 엔드 VM 만들기
이제 myBackendSubnet에 연결된 가상 머신을 만듭니다.
--nsg 인수에 빈 큰따옴표 값이 있음을 주목하십시오. VM을 사용하여 NSG를 만들 필요가 없습니다. VM은 미리 만들어진 백 엔드 NSG로 보호되는 백 엔드 서브넷에 연결됩니다. 이 NSG는 VM에 적용됩니다. 또한 여기서는 인수 값 --public-ip-address 이 큰따옴표로 비어 있습니다. 이 구성은 공용 IP 주소 없이 VM을 만듭니다.
az vm create \
--resource-group myRGNetwork \
--name myBackendVM \
--vnet-name myVNet \
--subnet myBackendSubnet \
--public-ip-address "" \
--nsg "" \
--image Ubuntu2204 \
--generate-ssh-keys
백 엔드 VM은 프런트 엔드 서브넷에서 포트 22 및 포트 3306 에서만 액세스할 수 있습니다. 들어오는 다른 모든 트래픽은 네트워크 보안 그룹에서 차단됩니다. NSG 규칙 구성을 시각화하는 것이 유용할 수 있습니다. az network rule list 명령을 사용하여 NSG 규칙 구성을 반환합니다.
az network nsg rule list --resource-group myRGNetwork --nsg-name myBackendNSG --output table
다음 단계
이 자습서에서는 가상 머신과 관련된 Azure 네트워크를 만들고 보호했습니다. 당신은 다음을 배우셨습니다:
- 가상 네트워크 및 서브넷 만들기
- 공용 IP 주소 만들기
- 프런트 엔드 VM 만들기
- 네트워크 트래픽 보호
- 백 엔드 VM 만들기
VM 디스크를 보호하는 방법에 대한 자세한 내용은 디스크에 대한 백업 및 재해 복구를 참조하세요.