Підтримуйте Docker Host і Docker Engine в актуальному стані разом зі своїми образами Docker.

Контейнери Docker працюють на рушії Docker, доступному на хост-комп’ютерах. Такими хост-комп’ютерами можуть бути Linux/Mac або Windows. Docker Engine може мати одну з доступних версій. Вкрай важливо використовувати останню стабільну версію, яка усуває відомі проблеми з попередніх випусків. Те саме стосується операційної системи хоста.

Важливо мати оновлення або виправлення, адже кожне виправлення усуває такі вразливості, як CVE-2021-41092. Це конкретне виправлення усунуло помилку, через яку облікові дані, використані для входу до реєстру Docker із CLI, надсилалися до «registry-1.docker.io», а не до потрібного приватного реєстру; раніше таке траплялося через неправильно налаштований файл конфігурації (зазвичай ~/.docker/config.json ), у якому перелічено credsStore або credHelpers.

Уникайте зберігання конфіденційних даних в інструкціях Dockerfile

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 співпрацюють.