네트워크 보안 그룹을 사용하여 네트워크 액세스 제어
ERP 시스템을 Azure로 이동하기 위한 프로젝트의 일환으로, 허용된 시스템만 네트워크 연결을 만들 수 있도록 서버가 적절히 격리되도록 해야 합니다. 예를 들어, ERP 애플리케이션에 대한 데이터를 저장하는 데이터베이스 서버가 있는 경우 금지된 시스템에서 네트워크를 통해 서버와 통신하는 것을 차단하고 앱 서버에서 데이터베이스 서버와 통신하도록 허용하는 것이 좋습니다.
네트워크 보안 그룹
네트워크 보안 그룹은 Azure 리소스와의 네트워크 트래픽을 필터링합니다. 또한 인바운드 및 아웃바운드 트래픽을 허용하거나 거부하도록 구성하는 보안 규칙이 있습니다. 네트워크 보안 그룹을 사용하여 가상 네트워크 내에서와 인터넷에서 모두 VM 또는 서브넷 간의 트래픽을 필터링할 수 있습니다.
네트워크 보안 그룹 할당 및 평가
네트워크 보안 그룹은 네트워크 인터페이스 또는 서브넷에 할당됩니다. 네트워크 보안 그룹을 서브넷에 할당하면 규칙이 해당 서브넷의 모든 네트워크 인터페이스에 적용됩니다. 네트워크 보안 그룹을 VM의 네트워크 인터페이스에 연결하여 트래픽을 추가로 제한할 수 있습니다.
네트워크 보안 그룹을 서브넷 및 네트워크 인터페이스에 둘 다 적용하면 각 네트워크 보안 그룹이 독립적으로 평가됩니다. 인바운드 트래픽은 먼저 서브넷에 적용된 네트워크 보안 그룹에서 평가한 다음, 네트워크 인터페이스에 적용된 네트워크 보안 그룹에서 평가합니다. 반대로 VM의 아웃바운드 트래픽은 먼저 네트워크 인터페이스에 적용된 네트워크 보안 그룹에서 평가한 다음, 서브넷에 적용된 네트워크 보안 그룹에서 평가합니다.
네트워크 보안 그룹을 개별 네트워크 인터페이스 대신 서브넷에 적용하면 운영 및 관리 작업을 줄일 수 있습니다. 또한 이 방법을 사용하면 지정된 서브넷 내의 모든 VM이 동일한 규칙 집합으로 보호됩니다.
각 서브넷 및 네트워크 인터페이스에는 하나의 네트워크 보안 그룹이 적용될 수 있습니다. 네트워크 보안 그룹은 TCP(전송 제어 프로토콜), UDP(사용자 데이터그램 프로토콜) 및 ICMP(인터넷 제어 메시지 프로토콜)를 지원하며 OSI(Open Systems Interconnection) 모델의 계층 4에서 작동합니다.
이 제조 회사 시나리오에서는 네트워크 보안 그룹을 통해 네트워크를 보호할 수 있습니다. 앱 서버에 연결할 수 있는 컴퓨터를 제어할 수 있습니다. 특정 범위의 IP 주소만 서버에 연결할 수 있도록 네트워크 보안 그룹을 구성할 수 있습니다. 특정 포트 또는 개별 IP 주소에서만 액세스를 허용하여 이를 더 안전하게 잠금 할 수 있습니다. 온-프레미스 네트워크 또는 Azure 내의 리소스 간에 원격으로 연결하는 디바이스에 이러한 규칙을 적용할 수 있습니다.
보안 규칙
네트워크 보안 그룹에는 하나 이상의 보안 규칙이 있습니다. 트래픽을 허용하거나 거부하도록 보안 규칙을 구성할 수 있습니다.
규칙에 포함되는 몇 가지 속성은 다음과 같습니다.
속성 | 설명 |
---|---|
이름 | 네트워크 보안 그룹 내에서 고유한 이름 |
우선 순위 | 100 ~ 4096 사이의 숫자 |
원본 및 대상 | 임의 또는 개별 IP 주소, CIDR(Classless Inter-Domain Routing) 블록(예: 10.0.0.0/24), 서비스 태그 또는 앱 보안 그룹 |
프로토콜 | TCP, UDP 또는 임의 |
방향 | 인바운드 또는 아웃바운드 트래픽에 대한 규칙 적용 여부 |
포트 범위 | 개별 포트 또는 포트 범위 |
작업 | 트래픽 허용 또는 거부 |
네트워크 보안 그룹 보안 규칙은 우선 순위에 따라 평가됩니다. 5개 튜플 정보(원본, 원본 포트, 대상, 대상 포트 및 프로토콜)를 사용하여 트래픽을 허용하거나 거부합니다. 규칙 조건이 디바이스 구성과 일치하면 규칙 처리가 중지됩니다.
예를 들어 회사에서 우선 순위가 200인 RDP(3389 포트)에서 웹 서버로의 인바운드 트래픽을 허용하는 보안 규칙을 만들었다고 가정합니다. 그런 다음, 다른 관리자가 우선 순위 150의 3389 포트에서 인바운드 트래픽을 거부하는 규칙을 만들었다고 가정합니다. 거부 규칙이 먼저 처리되므로 우선 적용됩니다. 이는 150 우선 순위의 규칙이 200 우선 순위의 규칙보다 먼저 처리되기 때문입니다.
네트워크 보안 그룹을 사용하면 연결 상태가 저장됩니다. 반환 트래픽은 동일한 TCP/UDP 세션에 대해 자동으로 허용됩니다. 예를 들어 80 포트에서 트래픽을 허용하는 인바운드 규칙을 사용하면 VM에서 요청에 응답할 수 있습니다(일반적으로 사용 후 삭제 포트에서). 해당 아웃바운드 규칙이 없어도 됩니다.
ERP 시스템에 관련하여, ERP 앱용 웹 서버는 자체의 서브넷에 있는 데이터베이스 서버에 연결됩니다. 웹 서버에서 데이터베이스 서버로 허용되는 유일한 통신은 SQL Server 데이터베이스 통신용 1433 포트라고 지정한 보안 규칙을 적용할 수 있습니다. 이 경우 데이터베이스 서버에 대한 다른 모든 트래픽은 거부됩니다.
기본 보안 규칙
네트워크 보안 그룹을 만들 때 Azure에서 몇 가지 기본 규칙이 만들어집니다. 이러한 기본 규칙은 변경할 수 없지만, 사용자 고유의 규칙으로 재정의할 수 있습니다. 이 기본 규칙은 가상 네트워크 내 및 Azure 부하 분산 장치의 연결을 허용합니다. 또한 인터넷에 대한 아웃바운드 통신을 허용하며, 인터넷의 인바운드 트래픽을 거부합니다.
인바운드 트래픽의 기본 규칙은 다음과 같습니다.
우선 순위 | 규칙 이름 | 설명 |
---|---|---|
65000 | AllowVnetInbound | 가상 네트워크 내 모든 VM 간의 인바운드 허용 |
65001 | AllowAzureLoadBalancerInbound | 기본 부하 분산 장치에서 서브넷 내 모든 VM으로의 트래픽 허용 |
65500 | DenyAllInBound | 외부 원본에서 VM 중 하나로의 트래픽 거부 |
아웃바운드 트래픽의 기본 규칙은 다음과 같습니다.
우선 순위 | 규칙 이름 | 설명 |
---|---|---|
65000 | AllowVnetOutbound | 가상 네트워크 내 모든 VM 간의 아웃바운드 허용 |
65001 | AllowInternetOutbound | 모든 VM에서 인터넷으로 나가는 아웃바운드 트래픽 허용 |
65500 | DenyAllOutBound | 모든 내부 VM에서 가상 네트워크 외부 시스템으로 가는 트래픽 거부 |
보강된 보안 규칙
네트워크 보안 그룹에 대해 보강된 보안 규칙을 사용하여 많은 수의 규칙을 간단하게 관리할 수 있습니다. 보강된 보안 규칙은 더 복잡한 네트워크 규칙 집합을 구현해야 하는 경우에도 도움이 됩니다. 보강된 규칙을 사용하면 다음 옵션을 단일 보안 규칙에 추가할 수 있습니다.
- 여러 IP 주소
- 여러 포트
- 서비스 태그
- 앱 보안 그룹
회사에서 여러 네트워크 주소 범위에 분산된 데이터 센터의 리소스에 대한 액세스를 제한하려고 하는 경우라고 가정해 보겠습니다. 보강된 규칙을 사용하면 이 모든 범위를 단일 규칙에 추가하여 네트워크 보안 그룹의 관리 오버헤드와 복잡성을 줄일 수 있습니다.
서비스 태그
서비스 태그를 사용하여 네트워크 보안 그룹 보안을 더욱 간소화할 수 있습니다. 특정 Azure 서비스로의 트래픽을 전역으로 또는 지역별로 허용하거나 거부할 수 있습니다.
서비스 태그는 리소스 또는 서비스별로 액세스를 제한할 수 있도록 허용하여 VM 및 Azure 가상 네트워크에 대한 보안을 간소화합니다. 서비스 태그는 IP 주소 그룹을 나타내며 보안 규칙의 구성을 간소화하는 데 도움이 됩니다. 태그를 사용하여 지정할 수 있는 리소스의 경우 IP 주소 또는 포트 세부 정보를 알 필요가 없습니다.
여러 서비스에 대한 액세스를 제한할 수 있습니다. Microsoft에서 서비스 태그를 관리합니다(사용자 고유의 서비스 태그를 만들 수 없음). 몇 가지 태그 예제는 다음과 같습니다.
- VirtualNetwork: Azure 및 온-프레미스 네트워크(하이브리드 연결을 사용하는 경우)의 모든 가상 네트워크 주소를 나타냅니다.
- AzureLoadBalancer: Azure의 인프라 부하 분산 장치를 나타냅니다. 이 태그는 Azure의 상태 프로브가 시작되는 호스트의 가상 IP 주소(168.63.129.16)로 변환됩니다.
- 인터넷: 공용 IP 주소가 있는 리소스를 포함하여 공개적으로 연결할 수 있는 가상 네트워크 주소 외부의 모든 서비스를 나타냅니다. 한 가지 리소스의 예는 Azure App Service의 Web Apps 기능입니다.
- AzureTrafficManager: Azure Traffic Manager의 IP 주소를 나타냅니다.
- 스토리지: Azure Storage의 IP 주소 공간을 나타냅니다. 트래픽의 허용 여부를 지정할 수 있습니다. 또한 액세스가 특정 지역에만 허용되는지 지정할 수 있지만, 개별 스토리지 계정은 선택할 수 없습니다.
- SQL: Azure SQL Database, Azure Database for MySQL, Azure Database for PostgreSQL 및 Azure Synapse Analytics 서비스의 주소를 나타냅니다. 트래픽 허용 여부를 지정하고 특정 지역으로 제한할 수 있습니다.
- AppService: Azure App Service의 주소 접두사를 나타냅니다.
앱 보안 그룹
앱 보안 그룹을 사용하면 특정 앱에서 사용하는 리소스에 대한 네트워크 보안을 구성할 수 있습니다. VM의 IP 주소 또는 서브넷 할당에 관계없이 해당 VM을 논리적으로 그룹화할 수 있습니다.
네트워크 보안 그룹 내에서 앱 보안 그룹을 사용하여 보안 규칙을 리소스 그룹에 적용할 수 있습니다. 특정 앱 워크로드를 더 쉽게 배포하고 스케일 업할 수 있습니다. 하나 이상의 앱 보안 그룹에 새 VM 배포를 추가할 수 있으며 해당 VM은 해당 워크로드에 대한 보안 규칙을 자동으로 선택합니다.
앱 보안 그룹을 사용하여 네트워크 인터페이스를 그룹화할 수 있습니다. 그런 다음, 앱 보안 그룹을 네트워크 보안 그룹 내에서 원본 또는 대상 규칙으로 사용할 수 있습니다.
예를 들어 회사에서는 가상 네트워크에 다수의 프런트 엔드 서버를 보유하고 있습니다. 웹 서버는 80 및 8080 포트를 통해 액세스하고, 데이터베이스 서버는 1433 포트를 통해 액세스할 수 있어야 합니다. 웹 서버의 네트워크 인터페이스는 하나의 앱 보안 그룹에 할당하고, 데이터베이스 서버의 네트워크 인터페이스는 다른 앱 보안 그룹에 할당합니다. 그런 다음, 두 개의 인바운드 규칙을 네트워크 보안 그룹에 만듭니다. 한 규칙에서는 웹 서버 앱 보안 그룹의 모든 서버에 대한 HTTP 트래픽을 허용하고, 다른 규칙에서는 데이터베이스 서버 앱 보안 그룹의 모든 서버에 대한 SQL 트래픽을 허용합니다.
앱 보안 그룹이 없으면 각 VM에 대해 별도의 규칙을 만들어야 합니다. 또는 서브넷에 네트워크 보안 그룹을 추가한 다음 모든 VM을 해당 서브넷에 추가해야 합니다.
앱 보안 그룹의 주요 이점은 더 쉽게 관리할 수 있다는 것입니다. 앱 서버를 배포하거나 다시 배포할 때 네트워크 인터페이스를 앱 보안 그룹에 쉽게 추가하고 제거할 수 있습니다. 또한 새 규칙을 앱 보안 그룹에 동적으로 적용할 수도 있습니다. 그러면 해당 앱 보안 그룹의 모든 VM에 자동으로 적용됩니다.
네트워크 보안 그룹을 사용하는 경우
항상 네트워크 보안 그룹을 사용하여 원치 않는 트래픽으로부터 네트워크로 연결된 자산을 보호하는 것이 가장 좋습니다. 네트워크 보안 그룹은 모든 VM 또는 가상 네트워크에 대한 보안 규칙을 설정하는 잠재적 복잡성 없이 네트워크 계층을 통해 세분화된 제어 액세스를 제공합니다.