Ответ
DMZ (Demilitarized Zone) — это сегмент сети, изолированный от внутренней (LAN) и внешней (WAN) сетей с помощью межсетевых экранов. В DevOps мы используем её для размещения публично доступных сервисов, таких как веб-серверы, API-шлюзы или почтовые ретрансляторы.
Архитектурная роль в DevOps:
- Изоляция риска: Даже при компрометации сервера в DMZ (например, через уязвимость в веб-приложении), злоумышленник не получит прямого доступа к критической внутренней инфраструктуре (базам данных, системам управления, CI/CD-агентам).
- Контроль потока трафика: Правила на межсетевых экранах строго регламентируют, какой трафик и куда может проходить. Например, из интернета разрешён только HTTPS (порт 443) к веб-серверу в DMZ, а из DMZ во внутреннюю сеть — только специфические подключения к порту БД для бэкапов.
Практическая реализация (на примере AWS): Чаще всего DMZ реализуется не на уровне роутера, а с помощью архитектуры облачных сетей.
# Пример структуры VPC в Terraform
# Публичная подсеть (DMZ) для балансировщиков нагрузки
resource "aws_subnet" "public" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
map_public_ip_on_launch = true
}
# Приватная подсеть (LAN) для внутренних сервисов
resource "aws_subnet" "private" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.2.0/24"
}
# Network ACL для публичной подсети (базовый набор правил DMZ)
resource "aws_network_acl" "public_nacl" {
vpc_id = aws_vpc.main.id
subnet_ids = [aws_subnet.public.id]
# Разрешить входящий HTTP/HTTPS из интернета
ingress {
protocol = "tcp"
rule_no = 100
action = "allow"
cidr_block = "0.0.0.0/0"
from_port = 80
to_port = 80
}
# ... другие правила
}
Важный нюанс: Современный подход (Zero Trust) часто предполагает отказ от классической DMZ в пользу микросегментации, где каждый сервис изолирован с помощью security groups или service mesh, но DMZ остаётся ключевым паттерном для периметровой защиты унаследованных или публичных систем.