Виды шифрования данных:
- Передача данных в открытом виде - полностью работаем с данными в открытом виде. Подходит только для внутренних сетей, где контролируется весь трафик.
- Транспортное шифрование (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 и lease | CSI driver, injector | Самый гибкий инструмент с широкой экосистемой |
| AWS Secrets Manager | AWS-ориентированные | Да, автоматическая ротация | Secrets Store CSI driver | Лучшее решение в экосистеме AWS |
| Azure Key Vault | Azure-ориентированные | Да, через managed identities | Secrets Store CSI driver | Лучшее решение в экосистеме Azure |
| Sealed Secrets (K8s) | Только Kubernetes | Нет, статичные sealed secrets | Нативная (CRD SealedSecret) | Простое решение для GitOps в Kubernetes |