HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: docker, безопасность, kubernetes, инфраструктурная платформа, docker image security, notary, anchore engine, imagepolicywebhook, portieris, mutating admission webhook, k8s</p>
1 <p>Теги: docker, безопасность, kubernetes, инфраструктурная платформа, docker image security, notary, anchore engine, imagepolicywebhook, portieris, mutating admission webhook, k8s</p>
2 <p>Начинаем публикацию серии статей, посвящённых<a>выступлению Дмитрия Лазаренко</a>, руководителя PaaS-направления в Mail.Ru Cloud Solutions. Он поделится опытом реализации типовых паттернов безопасности в<strong>Kubernetes</strong>, которые могут быть применены как в публичном, так и в частном облаке.</p>
2 <p>Начинаем публикацию серии статей, посвящённых<a>выступлению Дмитрия Лазаренко</a>, руководителя PaaS-направления в Mail.Ru Cloud Solutions. Он поделится опытом реализации типовых паттернов безопасности в<strong>Kubernetes</strong>, которые могут быть применены как в публичном, так и в частном облаке.</p>
3 <h2>С чем у вас ассоциируется Docker?</h2>
3 <h2>С чем у вас ассоциируется Docker?</h2>
4 <p>Kubernetes является одновременно и мощным, и сложным инструментом. Вопрос безопасности здесь не является исключением: тут всё совсем не так тривиально, как в случае с "классической" безопасностью приложений, работающих в виртуальных средах или даже на базе<strong>Docker</strong>.</p>
4 <p>Kubernetes является одновременно и мощным, и сложным инструментом. Вопрос безопасности здесь не является исключением: тут всё совсем не так тривиально, как в случае с "классической" безопасностью приложений, работающих в виртуальных средах или даже на базе<strong>Docker</strong>.</p>
5 <p>Говоря о Docker, давайте вспомним простую русскую матрёшку. С её помощью можно легко представить уровни безопасности в Kubernetes:</p>
5 <p>Говоря о Docker, давайте вспомним простую русскую матрёшку. С её помощью можно легко представить уровни безопасности в Kubernetes:</p>
6 <p>Теперь давайте рассмотрим каждый из этих уровней подробнее.</p>
6 <p>Теперь давайте рассмотрим каждый из этих уровней подробнее.</p>
7 <h2>Docker Image Security</h2>
7 <h2>Docker Image Security</h2>
8 <p>Первая матрёшка - это про безопасность докеров. Тут можно выделить базовые принципы, так называемые "<strong>9 заповедей докеровода</strong>": 1. Не записывайте secrets в Docker-файлы. 2. Не используйте root. 3. Всегда создавайте пользователя. 4. Используйте gosu вместо sudo. 5. Используйте COPY вместо ADD. 6. Всегда фиксируйте версию для базовых images, пакетов и т. д. 7. Безопасно скачивайте пакеты (checksum). 8. Удаляйте зависимости после сборки. 9. Убедитесь, что images не содержат известных уязвимостей.</p>
8 <p>Первая матрёшка - это про безопасность докеров. Тут можно выделить базовые принципы, так называемые "<strong>9 заповедей докеровода</strong>": 1. Не записывайте secrets в Docker-файлы. 2. Не используйте root. 3. Всегда создавайте пользователя. 4. Используйте gosu вместо sudo. 5. Используйте COPY вместо ADD. 6. Всегда фиксируйте версию для базовых images, пакетов и т. д. 7. Безопасно скачивайте пакеты (checksum). 8. Удаляйте зависимости после сборки. 9. Убедитесь, что images не содержат известных уязвимостей.</p>
9 <p>Решения для<strong>сканирования исходного кода</strong>: 1. InfoWatch Uppercut. 2. Snyk.</p>
9 <p>Решения для<strong>сканирования исходного кода</strong>: 1. InfoWatch Uppercut. 2. Snyk.</p>
10 <p>Решения для<strong>сканирования Docker Images</strong>: 1. Docker Security Scanning. 2. CoreOS Clair. 3. Anchore. 4. JFrog Xray. 5. Aqua MicroScanner.</p>
10 <p>Решения для<strong>сканирования Docker Images</strong>: 1. Docker Security Scanning. 2. CoreOS Clair. 3. Anchore. 4. JFrog Xray. 5. Aqua MicroScanner.</p>
11 <p>Представленные решения разбирают<strong>Docker Images</strong>на слои и начинают проверять каждый слой друг за другом. Пример:</p>
11 <p>Представленные решения разбирают<strong>Docker Images</strong>на слои и начинают проверять каждый слой друг за другом. Пример:</p>
12 <h2>Что с этим делать дальше?</h2>
12 <h2>Что с этим делать дальше?</h2>
13 <p>Если в результате проверки мы убедились, что Image доверенный, мы можем: 1) подписать Docker Image после успешной проверки (Docker Notary); 2) запретить pull неподписанных Images из Registry (Harbor); 3) запретить деплой подов из неподписанных Images в K8S.</p>
13 <p>Если в результате проверки мы убедились, что Image доверенный, мы можем: 1) подписать Docker Image после успешной проверки (Docker Notary); 2) запретить pull неподписанных Images из Registry (Harbor); 3) запретить деплой подов из неподписанных Images в K8S.</p>
14 <p>Пример реализованной архитектуры:</p>
14 <p>Пример реализованной архитектуры:</p>
15 <p><strong>Вишенка на торте</strong>- этот процесс не одноразовый, он может запускаться периодически, например, вы можете выполнять сканирование<strong>хоть каждый день</strong>.</p>
15 <p><strong>Вишенка на торте</strong>- этот процесс не одноразовый, он может запускаться периодически, например, вы можете выполнять сканирование<strong>хоть каждый день</strong>.</p>
16 <h2>Как это работает в Kubernetes?</h2>
16 <h2>Как это работает в Kubernetes?</h2>
17 <p>Реализация возможна благодаря тому, что в Kubernetes есть концепция адмишн-контроллеров:</p>
17 <p>Реализация возможна благодаря тому, что в Kubernetes есть концепция адмишн-контроллеров:</p>
18 <p>Если перейти к конкретике, то первым вариантом архитектуры является<strong>Anchore Engine</strong>- опенсорсный инструмент, который интегрируется с Kubernetes на базе<strong>ImagePolicyWebhook</strong>. Вот как выглядит эта архитектура:</p>
18 <p>Если перейти к конкретике, то первым вариантом архитектуры является<strong>Anchore Engine</strong>- опенсорсный инструмент, который интегрируется с Kubernetes на базе<strong>ImagePolicyWebhook</strong>. Вот как выглядит эта архитектура:</p>
19 <p>Есть и альтернативное решение, связанное с использованием стандартных Docker-инструментов, например,<strong>Notary</strong>. Его можно скрестить с проектом от IBM под названием<strong>Portieris</strong>. В свою очередь, Notary + Portieris можно скрестить с Kubernetes на базе<strong>Mutating Admission Webhook</strong>.</p>
19 <p>Есть и альтернативное решение, связанное с использованием стандартных Docker-инструментов, например,<strong>Notary</strong>. Его можно скрестить с проектом от IBM под названием<strong>Portieris</strong>. В свою очередь, Notary + Portieris можно скрестить с Kubernetes на базе<strong>Mutating Admission Webhook</strong>.</p>
20 <p>Что ж, одну "матрёшку" мы разобрали, в следующей заметке поговорим про<strong>Host Level Security</strong>. Следите за новостями!</p>
20 <p>Что ж, одну "матрёшку" мы разобрали, в следующей заметке поговорим про<strong>Host Level Security</strong>. Следите за новостями!</p>
21  
21