설명
Network Security Group(NSG)은 서브넷이나 네트워크 인터페이스에 연결하여 트래픽을 필터링합니다. 일반 애플리케이션 서브넷에 필요한 NSG가 연결되지 않으면 의도한 서브넷 단위 제한이 적용되지 않을 수 있습니다.
NSG 연결이 없다는 사실만으로 인터넷에 공개되었다고 판단할 수는 없습니다. 네트워크 인터페이스의 NSG, 라우팅과 다른 통제도 함께 확인해야 합니다.
잠재적 영향
- 필요한 트래픽 제한이 누락되어 애플리케이션이나 데이터 계층의 접근 범위가 넓어질 수 있습니다.
- 반대로 NSG를 지원하지 않는 서비스 전용 서브넷에 연결하면 서비스가 중단될 수 있습니다.
해결 방법
- 서브넷의 용도와 서비스 요구사항을 확인하고 필요한 NSG를 연결하세요.
GatewaySubnet과AzureFirewallSubnet에는 NSG를 연결하지 마세요. - 애플리케이션, 데이터베이스, 관리 통신에 필요한 규칙과 우선순위를 설정하고 기본 규칙도 검토하세요.
- 실제 연결과 적용되는 규칙을 확인하세요. 이름만 지정해도 필요한 보안 규칙이 자동 생성되는 것은 아닙니다.
예시
이전 azure 공급자의 구성 형식을 보존한 예시입니다. 현재 배포에는 AzureRM 공급자의 지원되는 리소스와 NSG 연결 방식을 사용하세요. NSG 자체의 정의와 규칙은 생략했습니다.
변경 전
hcl
resource "azure_virtual_network" "app_network" {
name = "test-network"
address_space = ["10.1.2.0/24"]
location = "West US"
subnet {
name = "subnet1"
address_prefix = "10.1.2.0/25"
}
}
서브넷에 NSG를 지정하지 않습니다. 다른 위치에 적용된 통제도 확인해야 합니다.
변경 후
hcl
resource "azure_virtual_network" "app_network" {
name = "test-network"
address_space = ["10.1.2.0/24"]
location = "West US"
subnet {
name = "subnet1"
address_prefix = "10.1.2.0/25"
security_group = "app-subnet-nsg"
}
}
기존 app-subnet-nsg를 연결하는 설정입니다. NSG가 실제로 존재하고 규칙이 서브넷의 통신 요구사항에 맞는지 확인하세요.