Gymterview
senior

Что такое Zero Trust Architecture?

Zero Trust — архитектурный подход к безопасности, основанный на принципе «никогда не доверяй, всегда проверяй». В отличие от традиционной модели (доверяем всему внутри периметра), Zero Trust предполагает, что угроза может исходить откуда угодно, в том числе из внутренней сети.

Традиционная модель vs Zero Trust

Параметр Традиционная (Castle and Moat) Zero Trust
Доверие Всё внутри периметра — доверенное Ничему не доверяем
Аутентификация Только на периметре На каждом шаге
Шифрование Внешний трафик Весь трафик (включая внутренний)
Контроль Периметральный файрвол Микросегментация, контекстная авторизация

Принципы Zero Trust

  1. Проверяй каждый запрос — аутентификация и авторизация на каждом шаге
  2. Минимальные привилегии — каждый сервис/пользователь получает только необходимые права
  3. Предполагай компрометацию — проектируй систему так, будто злоумышленник уже внутри
  4. Микросегментация — каждый сервис изолирован, трафик между ними контролируется
  5. Непрерывный мониторинг — все действия логируются и анализируются

Реализация Zero Trust для Java-микросервисов

  1. Идентификация сервисов (mTLS через Service Mesh):
Пример
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: strict-mtls
  namespace: istio-system
spec:
  mtls:
    mode: STRICT
  1. Авторизация на каждом уровне:
Пример
// Spring Security: проверка роли и контекста
@PreAuthorize("hasRole('PAYMENT_SERVICE') and #request.amount <= 1000000")
public TransferResult processTransfer(TransferRequest request) {
    // ...
}
  1. Сетевая микросегментация (Kubernetes NetworkPolicy):
Пример
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: payment-isolation
spec:
  podSelector:
    matchLabels:
      app: payment-service
  policyTypes: [Ingress, Egress]
  ingress:
    - from:
        - podSelector: { matchLabels: { app: api-gateway } }
  egress:
    - to:
        - podSelector: { matchLabels: { app: postgresql } }
  1. Контекстная авторизация:
Пример Zero Trust фильтра
@Component
public class ZeroTrustFilter extends OncePerRequestFilter {
    @Override
    protected void doFilterInternal(HttpServletRequest request, ...) {
        String ip = request.getRemoteAddr();
        String userAgent = request.getHeader("User-Agent");
        String geoLocation = geoService.getLocation(ip);

        // Аномальная геолокация?
        if (!isKnownLocation(userId, geoLocation)) {
            log.warn("Подозрительный вход: user={}, geo={}", userId, geoLocation);
            requireAdditionalVerification(userId);
        }
    }
}

Zero Trust в контексте регуляторов

  • PCI DSS — требует сегментацию сети и контроль доступа
  • ЦБ РФ (ГОСТ Р 57580) — требует разграничение доступа и мониторинг
  • Практика — Zero Trust реализуется поэтапно: mTLS -> NetworkPolicy -> авторизация сервисов -> контекстная аналитика

На собеседовании: интервьюер хочет услышать принцип «никогда не доверяй, всегда проверяй» и конкретные инструменты реализации (mTLS, NetworkPolicy, AuthorizationPolicy). Частая ошибка — описывать Zero Trust только как концепцию, не приводя примеры технической реализации.