네트워크 보안 그룹 및 애플리케이션 보안 그룹
NSG 규칙으로 인바운드 및 아웃바운드 트래픽을 필터링하고, Application Security Groups로 VM을 논리적으로 그룹화해 규칙 관리를 간소화합니다.
네트워크 보안 그룹 및 애플리케이션 보안 그룹은(는) CoddyKit의 무료 Azure Fundamentals 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Azure Fundamentals 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Azure Fundamentals 강의에는 총 4개의 강의가 포함되어 있습니다.
Network Security Group이란?
Network Security Group (NSG)은 Azure 리소스를 위한 가상 방화벽 역할을 합니다. NSG에는 원본 IP, 대상 IP, 포트 번호, 프로토콜을 기준으로 인바운드 및 아웃바운드 네트워크 트래픽을 허용하거나 거부하는 보안 규칙 목록이 포함됩니다. NSG는 서브넷(해당 서브넷의 모든 리소스에 영향을 줌) 또는 개별 네트워크 인터페이스(단일 VM에 영향을 줌)에 연결할 수 있습니다. 서브넷 NSG와 NIC NSG가 모두 있으면 Azure는 두 NSG를 모두 평가합니다. 인바운드 트래픽에는 서브넷 NSG가 먼저 적용되고, 아웃바운드 트래픽에는 NIC NSG가 먼저 적용됩니다.
# Create an NSG
az network nsg create \
--resource-group myRG \
--name myNSGNSG 규칙 구조
각 NSG 규칙에는 다음 속성이 있습니다. 우선순위 — 100에서 4096 사이의 숫자이며, 숫자가 낮을수록 먼저 평가됩니다. 원본/대상 — IP 주소, CIDR 범위, 서비스 태그 또는 Application Security Group입니다. 원본/대상 포트 — 특정 포트 번호 또는 범위입니다(예: 80, 443, 3389 또는 1024-65535). 프로토콜 — TCP, UDP, ICMP 또는 모두입니다. 동작 — Allow 또는 Deny입니다. 규칙은 우선순위 순서로 평가되며, 처음 일치하는 규칙이 적용됩니다. 일치하는 규칙이 없으면 기본 규칙이 적용되어 모든 인바운드 트래픽은 거부하고 모든 아웃바운드 트래픽은 허용합니다.
# Allow HTTPS inbound from the internet
az network nsg rule create \
--resource-group myRG \
--nsg-name myNSG \
--name AllowHTTPS \
--priority 110 \
--direction Inbound \
--source-address-prefixes Internet \
--destination-port-ranges 443 \
--protocol Tcp \
--access Allow기본 NSG 규칙
모든 NSG에는 삭제할 수 없는 우선순위 65000~65500의 기본 인바운드 규칙 3개와 기본 아웃바운드 규칙 3개가 포함됩니다. 기본 인바운드 규칙은 다음과 같습니다. AllowVnetInBound(VNet에서 오는 트래픽 허용), AllowAzureLoadBalancerInBound(Azure 상태 프로브 허용), DenyAllInBound(그 외 모든 트래픽 거부). 기본 아웃바운드 규칙은 다음과 같습니다. AllowVnetOutBound, AllowInternetOutBound, DenyAllOutBound. 기본 규칙보다 먼저 적용되도록 더 낮은 우선순위 번호(100~64999)의 규칙을 추가하여 기본 규칙을 재정의할 수 있습니다.
NSG 규칙의 서비스 태그
서비스 태그는 Azure 서비스의 IP 주소 범위를 미리 정의한 그룹입니다. 시간이 지나면서 변경되는 긴 IP 주소 목록을 직접 지정하지 않고도 간결한 NSG 규칙을 작성할 수 있습니다. 일반적인 서비스 태그는 다음과 같습니다. Internet — VNet 외부의 모든 IP 주소. VirtualNetwork — VNet 내부의 모든 IP 주소. AzureLoadBalancer — Azure 인프라 부하 분산 장치의 IP 주소. Storage — 선택한 지역의 Azure Storage 서비스 IP 주소. AzureActiveDirectory — Entra ID 엔드포인트. Microsoft가 이러한 태그를 자동으로 관리하므로 서비스 IP가 변경되어도 NSG 규칙이 정확하게 유지됩니다.
# Allow outbound to Azure Storage using a service tag
az network nsg rule create \
--resource-group myRG \
--nsg-name myNSG \
--name AllowStorageOutbound \
--priority 120 \
--direction Outbound \
--destination-address-prefixes Storage \
--destination-port-ranges 443 \
--protocol Tcp \
--access Allow서브넷에 NSG 연결하기
NSG를 서브넷에 연결하면 해당 서브넷의 모든 리소스에 NSG 규칙이 적용되므로, 대규모 환경에서 네트워크 정책을 적용하는 가장 효율적인 방법입니다. 예를 들어 'DenyRDP' NSG를 데이터 계층 서브넷에 연결하면 NIC 수준 NSG에서 무엇을 허용하든 해당 서브넷의 모든 VM이 외부에서 RDP(포트 3389)를 통해 액세스되는 것을 차단할 수 있습니다. 이 서브넷 수준 NSG는 트래픽이 개별 VM에 도달하기 전에 적용되는 첫 번째 방어선으로 작동하여 네트워크 경계에서 공격 표면을 줄입니다.
# Associate NSG with a subnet
az network vnet subnet update \
--resource-group myRG \
--vnet-name myVNet \
--name web-tier \
--network-security-group myNSGApplication Security Group이란?
Application Security Group (ASG)을 사용하면 IP 주소가 아니라 애플리케이션 역할을 기준으로 Azure VM 네트워크 인터페이스를 그룹화할 수 있습니다. 예를 들어 webServers, appServers, dbServers라는 ASG를 만든 다음 각 VM의 NIC를 적절한 ASG에 할당합니다. 그러면 NSG 규칙에 IP 주소를 지정하지 않고 '포트 8080에서 webServers의 트래픽을 appServers로 허용'이라고 작성할 수 있습니다. VM을 추가하거나 제거할 때는 ASG 멤버십만 업데이트하면 되며, 모든 NSG 규칙이 규칙 변경 없이 자동으로 올바르게 적용됩니다.
# Create an Application Security Group
az network asg create \
--resource-group myRG \
--name webServers
# Associate a VM's NIC with the ASG
az network nic ip-config update \
--resource-group myRG \
--nic-name myWebVMNic \
--name ipconfig1 \
--application-security-groups webServersASG를 사용하는 NSG 규칙
ASG를 정의하고 VM을 할당한 후에는 원본 또는 대상으로 ASG를 참조하는 NSG 규칙을 작성합니다. 이 방식은 다음과 같은 이유로 IP 기반 규칙보다 유지 관리가 훨씬 쉽습니다. IP 관리 불필요 — VM IP를 알 필요가 없으며 ASG 멤버십이 매핑을 처리합니다. 동적 확장 — 새 VM을 올바른 ASG에 추가하면 해당 VM이 올바른 규칙을 자동으로 상속합니다. 의미가 명확함 — 불투명한 IP 범위가 아니라 '8080에서 webServers → appServers'처럼 규칙을 자연스럽게 읽을 수 있습니다. ASG는 VM이 자주 추가되거나 교체되는 동적 환경에서 특히 유용합니다.
# NSG rule using ASG as source and destination
az network nsg rule create \
--resource-group myRG \
--nsg-name myNSG \
--name WebToApp \
--priority 200 \
--direction Inbound \
--source-asgs webServers \
--destination-asgs appServers \
--destination-port-ranges 8080 \
--protocol Tcp \
--access Allow문제 해결을 위한 NSG 흐름 로그
NSG 흐름 로그는 NSG를 통과하는 모든 IP 트래픽에 대한 정보를 기록합니다. 여기에는 원본 및 대상 IP, 포트, 프로토콜, 트래픽 허용 또는 거부 여부, 전송된 바이트가 포함됩니다. 흐름 로그는 JSON 형식으로 Azure Storage 계정에 기록되며 Azure Network Watcher의 Traffic Analytics 도구에서 시각화할 수 있습니다. 흐름 로그는 연결 문제('이 트래픽이 차단되는 이유는 무엇인가?')를 해결하고, 보안 조사를 수행하며, 트래픽 패턴에 대한 증거가 필요한 규정 준수 보고서를 작성하는 데 매우 유용합니다.
피해야 할 일반적인 NSG 실수
연결 문제를 일으키는 일반적인 NSG 실수는 다음 세 가지입니다. 평가 순서를 잊는 것 — 우선순위 100의 Deny 규칙이 있고 Allow 규칙의 우선순위가 200이면, 우선순위 숫자가 낮은 규칙이 먼저 적용되므로 트래픽이 거부됩니다. Azure 상태 프로브를 차단하는 것 — 부하 분산 장치 상태 프로브는 IP 168.63.129.16에서 전송됩니다. 이 원본을 차단하면 부하 분산 장치의 백 엔드가 비정상으로 표시되고 트래픽 수신을 중단합니다. 서브넷 NSG와 NIC NSG를 중복 구성하는 것 — 트래픽은 두 NSG 평가를 모두 통과해야 하므로, 서브넷 NSG에서 트래픽을 허용하는 규칙이 있어도 NIC NSG가 이를 거부하면 트래픽은 차단됩니다.
NSG와 Azure Firewall 비교
NSG와 Azure Firewall은 서로 보완하지만 역할은 다릅니다. NSG — 분산형이며 서브넷과 NIC에 연결되고, 계층 3/4(IP 및 포트) 필터링을 제공하며, 기본적으로 트래픽 로깅을 하지 않고 모든 VNet에 무료로 제공됩니다. Azure Firewall — 중앙 집중형 관리 서비스로 허브 VNet에 배포되며, 계층 3/4와 계층 7(FQDN, URL, IDPS) 필터링, Azure Monitor를 통한 전체 로깅을 제공하고 비용은 월 약 1,000달러 이상입니다. 기본 경계 보안과 계층 격리에는 NSG를 사용하십시오. FQDN 필터링, 위협 인텔리전스 또는 TLS 검사를 포함한 중앙 집중식 감사 가능 아웃바운드 액세스 제어가 필요할 때는 Azure Firewall을 사용하십시오.
유효 보안 규칙
NSG가 서브넷과 NIC 모두에 연결되어 있으면 실제로 어떤 규칙이 적용되는지 파악하기 어려울 수 있습니다. Azure는 모든 VM의 NIC에 대해 포털에서 유효 보안 규칙 보기를 제공하며, 서브넷 수준과 NIC 수준의 모든 NSG 규칙을 결합한 결과를 보여 줍니다. 이는 해당 VM에 실제로 허용되거나 거부되는 항목을 보여 주는 확정적인 목록입니다. Azure Network Watcher의 IP 흐름 확인 도구를 사용하면 더 자세히 확인할 수 있습니다. 원본 및 대상 IP/포트를 지정하면 트래픽이 허용될지 거부될지와 그 원인이 되는 특정 규칙을 즉시 알려 줍니다.
빠른 확인
이 단원에서 다룬 Microsoft Azure 기초(AZ-900) 개념을 얼마나 이해했는지 확인해 보십시오.
단원 요약
이 단원에서는 다음을 배웠습니다. NSG에는 우선순위 순서로 평가되어 서브넷 또는 개별 네트워크 인터페이스의 트래픽을 필터링하는 허용/거부 규칙이 포함됩니다. 또한 서비스 태그는 동적으로 변하는 Azure 서비스 IP 범위 그룹을 나타내어 규칙을 간소화합니다. 그리고 Application Security Group을 사용하면 환경에 맞춰 확장되는 유지 관리 부담 없는 NSG 규칙을 위해 VM을 역할 기준으로 그룹화할 수 있습니다. 다음 단원에서는 VNet 간 리소스와 Azure 서비스에 연결하기 위한 VNet 피어링과 서비스 엔드포인트를 살펴보겠습니다.
자주 묻는 질문
“네트워크 보안 그룹 및 애플리케이션 보안 그룹” 강의는 무료인가요?
네 — “네트워크 보안 그룹 및 애플리케이션 보안 그룹” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Azure Fundamentals 강의 전체를 잠금 해제할 수 있습니다. Azure Fundamentals 강의에는 총 4개의 강의가 포함되어 있습니다.
“네트워크 보안 그룹 및 애플리케이션 보안 그룹”에서 뭘 배우나요?
NSG 규칙으로 인바운드 및 아웃바운드 트래픽을 필터링하고, Application Security Groups로 VM을 논리적으로 그룹화해 규칙 관리를 간소화합니다. 브라우저에서 직접 실행하는 실습 코드로 Azure Fundamentals을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Azure Fundamentals을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Azure Fundamentals은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“네트워크 보안 그룹 및 애플리케이션 보안 그룹” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Azure Fundamentals 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Azure Fundamentals 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 가상 네트워크 및 서브넷
- 네트워크 보안 그룹 및 애플리케이션 보안 그룹
- VNet 피어링 및 서비스 엔드포인트
- Azure DNS 및 Load Balancer 기초