senior
Что такое Zero Trust Architecture?
Zero Trust — архитектурный подход к безопасности, основанный на принципе «никогда не доверяй, всегда проверяй». В отличие от традиционной модели (доверяем всему внутри периметра), Zero Trust предполагает, что угроза может исходить откуда угодно, в том числе из внутренней сети.
Традиционная модель vs Zero Trust
| Параметр | Традиционная (Castle and Moat) | Zero Trust |
|---|---|---|
| Доверие | Всё внутри периметра — доверенное | Ничему не доверяем |
| Аутентификация | Только на периметре | На каждом шаге |
| Шифрование | Внешний трафик | Весь трафик (включая внутренний) |
| Контроль | Периметральный файрвол | Микросегментация, контекстная авторизация |
Принципы Zero Trust
- Проверяй каждый запрос — аутентификация и авторизация на каждом шаге
- Минимальные привилегии — каждый сервис/пользователь получает только необходимые права
- Предполагай компрометацию — проектируй систему так, будто злоумышленник уже внутри
- Микросегментация — каждый сервис изолирован, трафик между ними контролируется
- Непрерывный мониторинг — все действия логируются и анализируются
Реализация Zero Trust для Java-микросервисов
- Идентификация сервисов (mTLS через Service Mesh):
Пример
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: strict-mtls
namespace: istio-system
spec:
mtls:
mode: STRICT
- Авторизация на каждом уровне:
Пример
// Spring Security: проверка роли и контекста
@PreAuthorize("hasRole('PAYMENT_SERVICE') and #request.amount <= 1000000")
public TransferResult processTransfer(TransferRequest request) {
// ...
}
- Сетевая микросегментация (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 } }
- Контекстная авторизация:
Пример 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 только как концепцию, не приводя примеры технической реализации.