Виды шифрования данных:

  • Передача данных в открытом виде - полностью работаем с данными в открытом виде. Подходит только для внутренних сетей, где контролируется весь трафик.
  • Транспортное шифрование (TLS/SSL) - шифруем данные при передаче между клиентом и сервером. Данные расшифровываются на сервере и могут обрабатываться в открытом виде.
  • Сквозное шифрование (E2E) - данные шифруются на устройстве отправителя и расшифровываются только на устройстве получателя. Сервер не имеет доступа к содержимому.
OAuth 2.0

OAuth 2.0 - это протокол авторизации, позволяющий приложению получить ограниченный доступ к ресурсам пользователя на другом сервисе без передачи пароля.

Основные роли:

  • Resource Owner - пользователь, владеющий ресурсом
  • Client - приложение, запрашивающее доступ
  • Authorization Server - сервер, выдающий токены
  • Resource Server - сервер, хранящий защищённые ресурсы

Основные потоки (grant types):

  • Authorization Code - для серверных приложений. Самый безопасный вариант.
  • Client Credentials - для межсервисного взаимодействия без пользователя
  • PKCE (Proof Key for Code Exchange) - расширение Authorization Code для мобильных и SPA приложений
JWT

JWT (JSON Web Token) - компактный формат передачи информации между сторонами в виде JSON-объекта, подписанного цифровой подписью.

Структура: Header.Payload.Signature

  • Header - алгоритм подписи (RS256, HS256)
  • Payload - данные (claims): sub, exp, iat и кастомные поля
  • Signature - подпись, гарантирующая целостность

Типичное использование: access token (короткоживущий, 15-30 минут) и refresh token (долгоживущий, хранится в httpOnly cookie).

JWT нельзя отозвать до истечения срока. Для принудительного отзыва используют blacklist в Redis или короткий TTL с частым обновлением.

mTLS

mTLS (mutual TLS) - расширение стандартного TLS, при котором обе стороны предъявляют сертификаты. Используется для аутентификации между микросервисами внутри кластера. Service Mesh решения (Istio, Linkerd) часто реализуют mTLS автоматически.

Zero Trust Architecture

Zero Trust Architecture - модель безопасности, основанная на принципе “никогда не доверяй, всегда проверяй”. Каждый запрос аутентифицируется и авторизуется независимо от расположения в сети.

Принципы:

  • Verify explicitly - явная проверка подлинности и авторизации на каждый запрос
  • Least privilege access - минимально необходимые права доступа
  • Assume breach - проектирование с допущением, что система уже скомпрометирована

Отличие от периметровой безопасности:

Традиционная модель “замок и ров” предполагает доверие ко всему внутри корпоративной сети. Zero Trust отменяет это допущение - угроза может исходить как извне, так и изнутри.

Инструменты:

  • OPA (Open Policy Agent) - политики безопасности как код для распределённых систем
  • Istio/Linkerd - автоматический mTLS между сервисами в Kubernetes
  • BeyondCorp - реализация Zero Trust от Google для корпоративного доступа
  • ZTNA (Zero Trust Network Access) - замена VPN с проверкой каждого соединения

Zero Trust не заменяет сетевую безопасность, а дополняет её. Сетевые файрволы (L3/L4) по-прежнему нужны для ограничения поверхностей атаки.

Secrets Management

Secrets Management - централизованное хранение, ротация и контроль доступа к секретам: паролям, API-ключам, сертификатам и токенам.

Проблема:

Хранение секретов в файлах окружения, конфигурациях и коде остаётся одной из главных уязвимостей. Утечка репозитория или компрометация сервера немедленно раскрывает учётные данные.

Static secrets vs Dynamic secrets:

  • Static secrets - долгоживущие ключи, требующие ручной ротации. Риск утечки растёт со временем.
  • Dynamic secrets - автоматически генерируются при запросе с ограниченным временем жизни (TTL). После истечения срока действия ключ становится недействительным без ручного вмешательства.
ИнструментТип секретовDynamic secretsИнтеграция с K8sИспользование
HashiCorp VaultУниверсальное хранилищеДа, с поддержкой TTL и leaseCSI driver, injectorСамый гибкий инструмент с широкой экосистемой
AWS Secrets ManagerAWS-ориентированныеДа, автоматическая ротацияSecrets Store CSI driverЛучшее решение в экосистеме AWS
Azure Key VaultAzure-ориентированныеДа, через managed identitiesSecrets Store CSI driverЛучшее решение в экосистеме Azure
Sealed Secrets (K8s)Только KubernetesНет, статичные sealed secretsНативная (CRD SealedSecret)Простое решение для GitOps в Kubernetes