2.1 Рекомендации по безопасности

  • Контейнеры Docker не имеют никаких ограничений ресурсов по умолчанию. Это позволяет каждому контейнеру иметь доступ ко всем ресурсам ЦП и памяти, которые предоставляются ядром хоста. Кроме того, необходимо обеспечить, чтобы ни один выполняющийся контейнер не использовал излишние ресурсы за счет других контейнеров. Для этого нужно задать ограничения на объем ресурсов, которые может использовать один контейнер.

    • В контейнере Docker должно быть установлено жесткое ограничение для используемой им памяти. Для этого используется флаг --memory в команде запуска Docker.

    • В контейнере Docker должно быть ограничение на объем ЦП, используемый запущенным контейнером. Для этого используется флагcpuset-cpus в команде запуска Docker.

  • Для --pids-limit необходимо задать значение 300, чтобы ограничить количество потоков ядра, появляющихся в контейнере в каждый данный момент времени. Это необходимо для предотвращения атак DoS.

  • Для политики перезапуска контейнера при сбое необходимо задать значение 5, используя флаг --restart в команде запуска Docker.

  • После появления контейнера и отображения состояния Healthy (Работоспособный) необходимо использовать только контейнер. Чтобы проверить состояние работоспособности контейнера, выполните следующую команду:

    docker ps <container_name/ID>
  • Контейнер Docker всегда будет запускаться от имени непривилегированного пользователя (nds). В качестве дополнительной меры безопасности в управляющей программе включите переназначение пространства имен пользователя для предотвращения атак с повышением привилегий из данного контейнера. Дополнительную информацию о переназначении пространства имен пользователя см. в разделе Isolate containers with a user namespace (Изолирование контейнеров с пространством имен).