Существуют различные основные направления, которые можно предпринять для улучшения безопасности контейнера Docker с самого начала, т. е. от написания файла Dockerfile до запуска контейнера Docker. Давайте продолжим и рассмотрим 12 лучших рекомендаций по безопасности Docker, которые могут внедрить Docker Container Security.
Контейнеры Docker работают на движке Docker, доступном на хост-компьютерах. Этими хост-компьютерами могут быть Linux/Mac или Windows. Docker Engine может быть одной из доступных версий. Крайне важно использовать последнюю стабильную версию, которая устраняет известные проблемы из предыдущих выпусков. То же самое относится и к операционной системе хоста.
Важно иметь обновления или исправления, поскольку каждое исправление устраняет такие уязвимости, как CVE-2021-41092. Этот конкретный патч исправил ошибку, из-за которой учетные данные, используемые для входа в реестр Docker из CLI, отправлялись в «registry-1.docker.io», а не в предполагаемый частный реестр; раньше это происходило из-за неправильно сконфигурированного файла конфигурации (обычно ~/.docker/config.json ), в котором перечислены credsStore или credHelpers.
Dockerfile содержит инструкции по созданию образов Docker. COPY, RUN, ADD, CMD, ENTRYPOINT и т. д. Это лишь некоторые из командных инструкций, которые могут быть частью Dockerfile. Мы также можем использовать ENV и ARGS для установки переменных во время выполнения или во время сборки, в зависимости от требований. Вы можете использовать переменные среды в контейнерах Docker с помощью инструкций ENV или ARGS. При настройке переменных среды вы должны отметить, что никогда не следует назначать секреты, учетные данные, пароли и т. Д. Переменным в Dockerfile или жестко кодировать в какой-либо команде. Считайте это одной из лучших практик безопасности Dockerfile, поскольку ее игнорирование может привести к потенциальным угрозам безопасности и может стоить вам дорого.
Например, если вы жестко запрограммируете пароль или сведения о подключении к своим базам данных в Dockerfile, назначите их переменным среды и загрузите Dockerfile в общедоступный репозиторий, любой, у кого есть доступ к репозиторию, сможет получить эти учетные данные и получить доступ к данным или подключиться к базы данных.
Реестр образов — это место, где хранятся образы Docker. Он может быть частным или публичным. Docker Hub — это официальный облачный реестр образов Docker для Docker, который используется по умолчанию при его установке. Если вы не настроите какой-либо реестр, образы будут извлечены из этого общедоступного репозитория.
Когда вы извлекаете образы Docker из любого общедоступного реестра, помните об источнике, поскольку вы можете не знать, кто их создал, как они были созданы и заслуживают ли они доверия или нет. Всякий раз, когда вы извлекаете образ из ненадежного издателя, не забудьте проверить исходный реестр и файл Docker, используемый для создания образа. Кроме того, базовый образ для вашего Dockerfile, то есть инструкция FROM.
При написании Dockerfile для приложений, которым требуется копирование файлов с вашего локального компьютера в образ Docker, вы должны знать, что содержимое копируется с помощью инструкции COPY. На вашем локальном компьютере могут быть файлы, которые могут содержать конфиденциальные данные или секреты. Таким образом, если эти файлы будут скопированы в образ Docker, любой, у кого есть доступ к контейнеру, сможет получить эти файлы из контейнера. Следовательно, очень важно копировать только файлы, необходимые в контейнере, а не копировать все, как показано в следующей инструкции, чтобы улучшить безопасность контейнера Docker.
Вы можете попробовать .dockerignor. Это может помочь исключить файлы и каталоги, соответствующие шаблонам, и избежать ненужной отправки больших или конфиденциальных файлов в образы с помощью ADD или COPY.
Образы Docker создаются из Dockerfiles, а Dockerfiles содержат инструкции по использованию базового образа, установке пакетов, запуску приложений и т. д. Dockerfile также может содержать учетные данные, жестко запрограммированные в нем по ошибке. Итак, что, если базовый образ, который вы используете, имеет некоторые уязвимости, а учетные данные, жестко закодированные в Dockerfile, просочились из контейнера, созданного с использованием образа, созданного с использованием этого Dockerfile?
Сканирование образов — это процесс выявления известных уязвимостей безопасности в ваших образах Docker, чтобы вы могли исправить их, прежде чем отправлять их в Docker Hub или любой другой реестр.
Теперь вы можете запускать сканирование уязвимостей Snyk непосредственно из интерфейса командной строки Docker Desktop, поскольку Snyk и Docker сотрудничают друг с другом.
Docker, разработка, безопасность