[Def] Security
Docker capabilities
У докер контейнеров есть возможность ограничивать или предоставлять доступ к какой-то функциональности (например, доступ к сетевым интерфейсам хоста, или дать возможность контейнеру работать с группами, менять их и тп).
В целях безопасности:
Обязательны для блокировки:
SYS_CHROOT
SYS_PTRACE
NET_RAW
NET_ADMIN
SYS_ADMIN
Опциональны для блокировки (рекомендуется для собственных сервисов, дополнение к обязательным):
FSETID
SETUID
SETGID
CHOWN
NET_BIND_SERVICE
Не надо использовать директиву privileged.
Во всех образах должны быть созданы отдельные пользователи, т.е. запрещено использование пользователя root (uid=0)
Часть капабилити будут выключены в принудительном порядке, поэтому сервис надо разрабатывать с учетом этого. Вы обязательно должны дропнуть (cap_drop
) следующие капабилити: FSETID, SETUID, SETGID, SYS_CHROOT, SYS_PTRACE, CHOWN, NET_RAW, NET_ADMIN, SYS_ADMIN, NET_BIND_SERVICE, подробнее: https://docs.docker.com/compose/compose-file/compose-file-v3/#cap_add-cap_drop
Безопасность Docker-контейнеров
Хороший материал об обеспечении безопасности Docker'а. Начиная от правильной конфигурации самого демона, и заканчивая настройкой seccomp (позволяет ограничить список системных вызовов, доступных конкретному приложению) и Docker secrets.
Last updated
Was this helpful?