Мой доклад о безопасности в Docker и Kubernetes, о построении безопасного и защищенного Kubernetes-окружения, безопасных приложений и DevSecOps/SDLC с использованием Kubernetes. В нем я также рассказываю какие факторы безопасности мы учитываем в Mail.Ru Cloud Solutions
10. 10
1. Не записывайте secrets в Docker-файлы
2. Не используйте root
3. Всегда создавайте пользователя
4. Используйте gosu вместо sudo
5. Используйте COPY вместо ADD
6. Всегда фиксируйте версию для базовых
images, пакетов, и т. д.
7. Безопасно скачивайте пакеты (checksum)
8. Удаляйте зависимости после сборки
9. Убедитесь, что images не содержат
известных уязвимостей
9 ЗАПОВЕДЕЙ
ДОКЕРОВОДА
13. 13
• Сканируют Docker layers на наличие
уязвимостей в базе CVE
• Сканирование бинарников всех
компонентов Docker
• Сканирование статически линкованных
зависимостей
• Генерирование отчетов о наличии
уязвимостей
ЧТО ДЕЛАЮТ
СТАТИЧЕСКИЕ
СКАНЕРЫ
DOCKER IMAGES
14. ЧТО С ЭТИМ ДЕЛАТЬ
ДАЛЬШЕ?
1. Подписать Docker Image после
успешной проверки (Docker
Notary)
2. Запретить pull неподписанных
Images из Registry (Harbor)
3. Запретить деплой подов из
неподписанных Images в K8S
14
29. Readonly root file system
Доступна в Container-optimized OS:
- CoreOS
- Google Container Optimized OS
- Fedora Atomic Host
БЕЗОПАСНОСТЬ ХОСТ-МАШИНЫ
29
Hardened Operating
System
Нужно помнить,
как она обновляется
при обновлении K8S
33. CONTAINER
RUNTIME SECURITY
Как защититься от 0-day
уязвимостей?
1. Создать среду, в которой
все ограничено
2. Все, что выходит за рамки
дозволенного, будет
вызывать alarm
администратору
либо блокировку
33
36. SYSDIG FALCO
ПОВЕДЕНЧЕСКИЙ
МОНИТОРИНГ
36
WHITE-LIST ДЕЙСТВИЙ
• Какие процессы/команды могут быть запущены
в Docker-контейнере
• Какие процессы могут устанавливать исходящие
соединения или принимать входящие
• Какие порты могут слушаться
• В какие файлы и папки можно писать
• Какие вызовы ядра Linux могут выполняться
37. 1. Запуск shell в контейнере
2. Контейнер монтирует чувствительный
путь (/proc с хост-машины)
3. Порождается неожиданный процесс
4. Неожидаемое чтение файлов вида
/etc/shadow
5. Не device-файл записан в /dev
6. Стандартный системный бинарник (ls)
устанавливает исходящее сетевое
соединение
1. Syslog
2. File
3. Shell
■ mail -s ”We are under attack”
alerts@mail.ru
■ Telegram webhook
■ Slack webhook
37
ЧТО МОЖНО ОТЛОВИТЬ КАК РЕАГИРОВАТЬ
43. NETWORK PLUGINS MATRIX
43
Plugin name Layers
Ingress Network
Policy
Egress
networking
policy
Encryption
supported
Flannel L2 (VXLAN) No No No
Calico L3 (IPinIP, BGP) Yes Yes No
Weave L2 (VXLAN) Yes No Yes
44. Service Mesh!
1. (Все еще) очень сложно
2. (Все еще) не всегда
стабильно
44
МИКРОМЕНЕДЖМЕНТ
СЕТЕВОЙ БЕЗОПАСНОСТИ НО
45. IP white lists
Нужна поддержка
proxy protocol
в облачных балансерах
БЕЗОПАСНОСТЬ НА УРОВНЕ INGRESS
Web application firewall
+ Ingress
ModSecurity
в Nginx Ingress Controller
45
52. ПОЧЕМУ OPENID CONNECT – ЭТО КРУТО?
52
1. Это больше, чем проверка Username/Password
2. ID-токены OIDC короткоживущие à меньше риски
○ Есть Renew tokens
3. Можно делать 2-Factor Auth: TOTP токены
60. 1. Что случилось?
2. Когда случилось?
3. Кто это сделал?
4. В каком компоненте это
случилось?
5. Когда это закончилось?
KUBERNETES AUDIT POLICY
1. Записать лог на диск
2. Вызвать Webhook (Slack,
Telegram)
60
62. Kubernetes Secrets
APPLICATION SECURITY
Vault
1. Давно на рынке
2. Безопасно
3. Есть Dynamic secrets
62
Нет шифрования по умолчанию,
но в 1.13 вышла alpha encryption at rest
А также есть Sealed Secrets от Bitnami
63. ПРОБЛЕМЫ VAULT
С KUBERNETES
1. Автоматизация доставки Vault
Secrets в поды
• Sidecar containers
• Custom
resource definitions
63
64. ПОЛЕЗНЫЕ ПРОЕКТЫ ДЛЯ ИНТЕГРАЦИИ С VAULT
64
● https://github.com/Boostport/kubernetes-vault
● https://github.com/UKHomeOffice/vault-sidekick
● https://github.com/sethvargo/vault-kubernetes-authenticator
● https://vault.koudingspawn.de/
65. У НАС ОЧЕНЬ
КРУТЫЕ НОВОСТИ
• Поддержка Cluster Autoscaler
и Node Groups (Alpha)
• Делаем master-nodes
бесплатными для больших
проектов