NSG(네트워크 보안 그룹) 및 ASG(애플리케이션 보안 그룹) 계획 및 구현

완료됨

Azure 네트워크 보안 그룹을 사용하여 Azure 가상 네트워크의 Azure 리소스 간의 네트워크 트래픽을 필터링할 수 있습니다. 네트워크 보안 그룹에는 여러 종류의 Azure 리소스에서 오는 인바운드 트래픽 또는 이러한 리소스로 나가는 아웃바운드 네트워크 트래픽을 허용하거나 거부하는 보안 규칙이 포함됩니다. 규칙마다 원본 및 대상, 포트, 프로토콜을 지정할 수 있습니다.

NSG(네트워크 보안 그룹)

보안 규칙

네트워크 보안 그룹은 Azure 구독 제한 내에서 필요한 개수 만큼 규칙을 포함합니다. 각 규칙은 다음 속성을 지정합니다.

속성 설명
이름 네트워크 보안 그룹 내에서 고유한 이름입니다. 이름은 최대 80자까지 지정할 수 있습니다. 단어 문자로 시작해야 하며 단어 문자 또는 '_'로 끝나야 합니다. 이름에 단어 문자 또는 '.', '-', '_'가 포함될 수 있습니다.
우선 순위 100~4096 사이의 숫자입니다. 낮은 번호의 우선 순위가 더 높기 때문에 규칙은 낮은 번호가 높은 번호보다 먼저 처리되는 우선 순위 순서로 처리됩니다. 트래픽이 규칙과 일치하면 처리가 중지됩니다. 따라서 우선 순위가 높은 규칙과 동일한 특성을 가진 우선 순위가 낮은 규칙(높은 번호)은 처리되지 않습니다.
Azure 기본 보안 규칙은 사용자 지정 규칙이 항상 먼저 처리되도록 가장 낮은 우선 순위에 가장 높은 숫자를 부여합니다.
원본 또는 대상 임의 또는 개별 IP 주소, CIDR(Classless Inter-Domain Routing) 블록(예: 10.0.0.0/24), 서비스 태그 또는 애플리케이션 보안 그룹입니다. Azure 리소스의 주소를 지정하는 경우 리소스에 할당된 개인 IP 주소를 지정하세요. 네트워크 보안 그룹은 Azure가 공용 IP 주소를 인바운드 트래픽용 개인 IP 주소로 변환한 후에, 그리고 Azure가 개인 IP 주소를 아웃바운드 트래픽용 공용 IP 주소로 변환하기 전에 처리됩니다. 범위, 서비스 태그 또는 애플리케이션 보안 그룹을 지정할 때 더 적은 수의 보안 규칙이 필요합니다. 규칙에서 여러 개별 IP 주소와 범위를 지정하는 기능(여러 서비스 태그 또는 애플리케이션 그룹을 지정할 수 없음)은 보강된 보안 규칙이라고 합니다. 보강된 보안 규칙은 Resource Manager 배포 모델을 통해 만들어진 네트워크 보안 그룹에서만 만들 수 있습니다. 클래식 배포 모델을 통해 만든 네트워크 보안 그룹에서는 여러 개의 IP 주소 및 IP 주소 범위를 지정할 수 없습니다.
프로토콜 TCP, UDP, ICMP, ESP, AH 또는 Any. ESP 및 AH 프로토콜은 현재 Azure Portal을 통해 사용할 수 없지만 Azure Resource Manager 템플릿을 통해 사용할 수 있습니다.
방향 규칙이 인바운드 또는 아웃바운드 트래픽에 적용되는지 여부입니다.
포트 범위 개별 포트나 포트의 범위를 지정할 수 있습니다. 예를 들어 80 또는 10000-10005과 같이 지정할 수 있습니다. 범위를 지정하면 더 적은 보안 규칙을 만들어도 됩니다. 보강된 보안 규칙은 Resource Manager 배포 모델을 통해 만들어진 네트워크 보안 그룹에서만 만들 수 있습니다. 클래식 배포 모델을 통해 만든 네트워크 보안 그룹에서는 동일한 보안 규칙에 여러 개의 포트 또는 포트 범위를 지정할 수 없습니다.
작업 허용 또는 거부

보안 규칙은 5-튜플(1. 원본, 2. 원본 포트, 3. 대상, 4. 대상 포트, 5. 프로토콜) 정보를 기반으로 평가 및 적용됩니다. 우선 순위와 방향이 같은 두 개의 보안 규칙을 만들 수 없습니다. 기존 연결에 대한 흐름 레코드가 만들어집니다. 통신은 흐름 레코드의 연결 상태에 따라 허용 또는 거부됩니다. 흐름 레코드는 네트워크 보안 그룹의 상태 저장을 허용합니다. 예를 들어 포트 80을 통해 모든 주소에 대한 아웃바운드 보안 규칙을 지정하는 경우 아웃바운드 트래픽에 대한 응답에 인바운드 보안 규칙을 지정하지 않아도 됩니다. 통신이 외부에서 시작된 경우 인바운드 보안 규칙을 지정하기만 하면 됩니다. 반대의 경우도 마찬가지입니다. 포트를 통해 인바운드 트래픽이 허용되는 경우 포트를 통해 트래픽에 응답하도록 아웃바운드 보안 규칙을 지정하지 않아도 됩니다.

연결을 허용한 보안 규칙을 제거해도 기존 연결이 중단되지 않을 수 있습니다. 네트워크 보안 그룹 규칙을 수정하면 새 연결에만 영향을 줍니다. 네트워크 보안 그룹에서 새 규칙을 만들거나 기존 규칙을 업데이트하는 경우 새 연결에만 적용됩니다. 기존 연결은 새 규칙으로 재평가되지 않습니다.

네트워크 보안 그룹이 네트워크 트래픽을 필터링하는 방법

여러 Azure 서비스의 리소스를 한 Azure 가상 네트워크에 배포할 수 있습니다. 가상 머신의 각 가상 네트워크 서브넷 및 네트워크 인터페이스에 네트워크 보안 그룹을 하나 연결하거나 연결하지 않을 수 있습니다. 동일한 네트워크 보안 그룹을 원하는 수의 서브넷 및 네트워크 인터페이스에 연결할 수 있습니다. 다음 그림은 TCP 포트 80을 통해 인터넷과의 상호 트래픽을 허용하도록 네트워크 보안 그룹을 배포하는 방법에 대한 다양한 시나리오를 보여줍니다.

TCP 포트 80을 통해 인터넷의 네트워크 트래픽을 허용하도록 네트워크 보안 그룹을 배포하는 방식의 예시를 보여주는 다이어그램.

다음 텍스트와 함께 이미지를 참조하여 Azure에서 네트워크 보안 그룹에 대한 인바운드 및 아웃바운드 규칙을 처리하는 방법을 이해합니다.

인바운드 트래픽

인바운드 트래픽의 경우 Azure는 서브넷에 연결된 네트워크 보안 그룹이 있으면 이 그룹의 규칙을 먼저 처리한 후 네트워크 인터페이스에 연결된 네트워크 보안 그룹이 있으면 이 그룹의 규칙을 처리합니다. 이 프로세스에는 서브넷 내 트래픽도 포함됩니다.

  • VM1: Subnet 1에 연결되었고 VM1Subnet 1에 있으므로 NSG1의 보안 규칙이 처리됩니다. 포트 80 인바운드를 허용하는 규칙을 만들지 않은 경우 DenyAllInbound 기본 보안 규칙은 트래픽을 거부합니다. 트래픽은 네트워크 인터페이스와 연결되어 있으므로 NSG2에서 평가하지 않습니다. NSG1이 보안 규칙에서 포트 80을 허용하는 경우 NSG2가 트래픽을 처리합니다. 가상 머신에 포트 80을 허용하려면 NSG1NSG2 모두 인터넷에서 포트 80을 허용하는 규칙이 있어야 합니다.
  • VM2: VM2 역시 Subnet 1에 있기 때문에 NSG1의 규칙이 처리됩니다. VM2은 네트워크 인터페이스에 연결된 네트워크 보안 그룹이 없으므로 NSG1을 통해 허용된 트래픽 또는 NSG1에 의해 거부된 트래픽을 모두 수신합니다. 네트워크 보안 그룹이 서브넷에 연결된 경우 동일한 서브넷의 모든 리소스에 대한 트래픽이 허용되거나 거부됩니다.
  • VM3: Subnet 2에 연결된 네트워크 보안 그룹이 없으므로 서브넷으로 가는 트래픽이 허용되고 NSG2에 의해 처리됩니다. NSG2VM3에 연결된 네트워크 인터페이스에 연결되었기 때문입니다.
  • VM4: 네트워크 보안 그룹이 Subnet 3 또는 가상 머신의 네트워크 인터페이스와 연결되어 있지 않으므로 VM4에 대한 트래픽이 허용됩니다. 서브넷 및 네트워크 인터페이스에 네트워크 보안 그룹이 연결되지 않으면 서브넷 및 네트워크 인터페이스를 통과하는 모든 네트워크 트래픽이 허용됩니다.

아웃바운드 트래픽

인바운드 트래픽의 경우 Azure는 네트워크 인터페이스에 연결된 네트워크 보안 그룹이 있으면 이 그룹의 규칙을 먼저 처리한 후 서브넷에 연결된 네트워크 보안 그룹이 있으면 이 그룹의 규칙을 처리합니다. 이 프로세스에는 서브넷 내 트래픽도 포함됩니다.

  • VM1: NSG2의 보안 규칙이 처리됩니다. NSG1NSG2AllowInternetOutbound 기본 보안 규칙은 인터넷에 대한 포트 80 아웃바운드를 거부하는 보안 규칙을 만들지 않는 한 트래픽을 허용합니다. NSG2가 보안 규칙에서 포트 80을 거부하는 경우 트래픽을 거부하고 NSG1은 이를 평가하지 않습니다. 두 네트워크 보안 그룹 중 어느 하나 또는 둘 모두의 가상 머신에서 포트 80을 거부하려면 규칙이 네트워크 보안 그룹에 인터넷으로 나가는 포트 80을 거부하는 있어야 합니다.
  • VM2: VM2에 연결된 네트워크 인터페이스에 네트워크 보안 그룹이 연결되지 않았기 때문에 모든 트래픽이 네트워크 인터페이스를 통해 서브넷으로 전송됩니다. NSG1의 규칙이 처리됩니다.
  • VM3: NSG2가 보안 규칙에서 포트 80을 거부하는 경우 트래픽을 거부합니다. NSG2가 포트 80을 거부하지 않는 경우 NSG2AllowInternetOutbound 기본 보안 규칙은 Subnet 2와 연결된 네트워크 보안 그룹이 없으므로 트래픽을 허용합니다.
  • VM4: 네트워크 보안 그룹이 가상 머신에 연결된 네트워크 인터페이스 또는 Subnet 3과 연결되어 있지 않으므로 VM4로부터의 모든 네트워크 트래픽이 허용됩니다.

서브넷 내 트래픽

서브넷에 연결된 NSG의 보안 규칙은 서브넷 내 VM 간의 연결에 영향을 줄 수 있다는 점에 유의해야 합니다. 기본적으로 동일한 서브넷의 가상 머신은 서브넷 내 트래픽을 허용하는 기본 NSG 규칙에 따라 통신할 수 있습니다. 모든 인바운드 및 아웃바운드 트래픽을 거부하는 규칙을 NSG1에 추가하면 VM1VM2는 서로 통신할 수 없습니다.

네트워크 인터페이스의 유효 보안 규칙을 확인하여 네트워크 인터페이스에 적용되는 집계 규칙을 쉽게 볼 수 있습니다. Azure Network Watcher에서 IP 흐름 확인 기능을 사용하여 통신이 네트워크 인터페이스 간에 허용되는지 여부를 결정할 수도 있습니다. IP 흐름 확인을 사용하여 통신이 허용되는지 아니면 거부되는지 파악할 수 있습니다. 또한 IP 흐름 확인을 사용하여 트래픽 허용 또는 거부를 담당하는 네트워크 보안 규칙의 ID를 표시합니다.

네트워크 보안 그룹은 서브넷 또는 클래식 배포 모델에 배포된 가상 머신 및 클라우드 서비스 및 Resource Manager 배포 모델의 서브넷 또는 네트워크 인터페이스에 연결됩니다.

특별한 이유가 없다면 네트워크 보안 그룹을 서브넷 또는 네트워크 인터페이스 중 한 쪽에만 연결하는 것이 좋습니다. 서브넷에 연결된 네트워크 보안 그룹의 규칙이 네트워크 인터페이스에 연결된 네트워크 보안 그룹의 규칙과 충돌할 수 있으므로 예기치 않은 통신 문제가 발생할 수 있습니다.

애플리케이션 보안 그룹(ASG)

애플리케이션 보안 그룹을 사용하면 네트워크 보안을 애플리케이션 구조의 자연 확장으로 구성하여 가상 머신을 그룹화하고 해당 그룹에 따라 네트워크 보안 정책을 정의할 수 있습니다. 명시적 IP 주소를 수동으로 유지 관리하지 않고 대규모 보안 정책을 재사용할 수 있습니다. 플랫폼은 명시적 IP 주소 및 여러 규칙 집합의 복잡성을 처리하여 비즈니스 논리에 집중할 수 있도록 합니다. 애플리케이션 보안 그룹에 대해 보다 정확하게 이해하려면 다음 예제를 잘 살펴보세요.

Azure 네트워크 보안 그룹 및 애플리케이션 보안 그룹의 예시를 보여주는 다이어그램.

이전 그림에서 NIC1NIC2AsgWeb 애플리케이션 보안 그룹의 멤버입니다. NIC3AsgLogic 애플리케이션 보안 그룹의 멤버입니다. NIC4AsgDb 애플리케이션 보안 그룹의 멤버입니다. 이 예제의 각 네트워크 인터페이스(NIC)는 한 네트워크 보안 그룹의 멤버이긴 하지만, 네트워크 인터페이스는 Azure 제한 내에서 여러 애플리케이션 보안 그룹의 멤버가 될 수 있습니다. 어떤 네트워크 인터페이스에도 네트워크 보안 그룹이 연결되지 않았습니다. NSG1은 두 서브넷에 연결되었으며 다음 규칙을 포함하고 있습니다.

Allow-HTTP-Inbound-Internet

이 규칙은 인터넷에서 웹 서버로 가는 트래픽을 허용하기 위해 필요합니다. 인터넷의 인바운드 트래픽을 DenyAllInbound 기본 보안 규칙에서 거부하기 때문에 AsgLogic 또는 AsgDb 애플리케이션 보안 그룹에 대한 규칙을 추가하지 않아도 됩니다.

우선 순위 원본 원본 포트 대상 대상 포트 프로토콜 Access
100 인터넷 * AsgWeb 80 TCP Allow

Deny-Database-All

AllowVNetInBound 기본 보안 규칙은 동일한 가상 네트워크의 리소스 간 통신을 모두 허용하므로, 모든 리소스에서 들어오는 트래픽을 거부하려면 이 규칙이 필요합니다.

우선 순위 원본 원본 포트 대상 대상 포트 프로토콜 Access
120 * * AsgDb 1433 모두 거부

Allow-Database-BusinessLogic

이 규칙은 AsgLogic 애플리케이션 보안 그룹에서 AsgDb 애플리케이션 보안 그룹으로 가는 트래픽을 허용합니다. 이 규칙의 우선 순위는 Deny-Database-All 규칙의 우선 순위보다 높습니다. 결과적으로 이 규칙이 Deny-Database-All 규칙보다 먼저 처리되므로 AsgLogic 애플리케이션 보안 그룹의 트래픽은 허용되는 반면, 그 외의 트래픽은 모두 차단됩니다.

우선 순위 원본 원본 포트 대상 대상 포트 프로토콜 Access
110 AsgLogic * AsgDb 1433 TCP 허용

애플리케이션 보안 그룹의 구성원인 네트워크 인터페이스는 원본 또는 대상으로 지정하는 규칙을 적용합니다. 이 규칙은 다른 네트워크 인터페이스에 영향을 주지 않습니다. 네트워크 인터페이스가 애플리케이션 보안 그룹의 멤버가 아닌 경우에는 네트워크 보안 그룹이 서브넷과 연결되어도 규칙이 네트워크 인터페이스에 적용되지 않습니다.

Application Security Group에는 다음과 같은 제약 사항이 있습니다.

  • 한 구독에 허용되는 애플리케이션 보안 그룹의 개수 제한 및 애플리케이션 보안 그룹과 관련된 기타 제한이 있습니다.

  • 애플리케이션 보안 그룹에 할당된 모든 네트워크 인터페이스는 애플리케이션 보안 그룹에 할당된 첫 번째 네트워크 인터페이스가 있는 가상 네트워크와 동일한 가상 네트워크에 있어야 합니다. 예를 들어 AsgWeb라는 애플리케이션 보안 그룹에 할당된 첫 번째 네트워크 인터페이스가 VNet1이라는 가상 네트워크에 있는 경우 ASGWeb에 할당되는 모든 후속 네트워크 인터페이스는 VNet1에 있어야 합니다. 서로 다른 가상 네트워크의 네트워크 인터페이스를 동일한 애플리케이션 보안 그룹에 추가할 수 없습니다.

  • 애플리케이션 보안 그룹을 보안 규칙의 원본 및 대상으로 지정하는 경우, 두 애플리케이션 보안 그룹의 네트워크 인터페이스는 동일한 가상 네트워크에 있어야 합니다.

    • 예를 들어 AsgLogicVNet1의 네트워크 인터페이스가 있었고 AsgDbVNet2의 네트워크 인터페이스가 있었던 경우입니다. 이 경우 AsgLogic을 원본으로, AsgDb를 규칙의 대상으로 할당하는 것은 불가능합니다. 원본 및 대상 애플리케이션 보안 그룹에 대한 모든 네트워크 인터페이스는 동일한 가상 네트워크에 있어야 합니다.

필요한 보안 규칙 수를 최소화하고 규칙 변경을 최소화하려면 되도록이면 개별 IP 주소 또는 IP 주소 범위 대신 서비스 태그 또는 애플리케이션 보안 그룹을 사용하여 필요한 애플리케이션 보안 그룹에 대한 계획을 세우고 규칙을 만드세요.