Если запустить контейнер в Kubernetes
и ничего не делать с capabilities (это подмножество привилегий, которые обычно предоставляются root
), то в итоге у контейнера они все равно будут. Это так называемые Default Capabilities
:
- cap_chown
- Разрешает изменение владельца файлов.
- cap_dac_override
- Разрешает доступ к файлам, игнорируя права.
- cap_fowner
- Разрешает изменение владельца файлов.
- cap_fsetid
- Разрешает установку битов setuid и setgid.
- cap_kill
- Разрешает отправку сигналов процессам.
- cap_setgid
- Разрешает изменение группы.
- cap_setuid
- Разрешает изменение пользователя.
- cap_setpcap
- Разрешает установку собственных способностей.
- cap_net_bind_service
- Разрешает привязку к привилегированным портам (ниже 1024).
- cap_net_raw
- Разрешает использование сырых сокетов.
- cap_sys_chroot
- Разрешает изменение корневой директории.
- cap_mknod
- Разрешает создание специальных файлов.
- cap_audit_write
- Разрешает запись в журнал аудита ядра.
- cap_setfcap
- Разрешает установку способностей для файлов.
Поэтому всегда не забывайте прописывать в настройках рабочих нагрузок:
securityContext:
capabilities:
drop:
- ALL
Это спокойно работает для
99.9%
любых бизнес микросервисов. С инфраструктурными сервисами разговор уже отдельный, но и там необходимо следовать принципу наименьших привилегий.
>>Click here to continue<<