Контейнерна віртуалізація і безпеку розробок
Віртуалізація – це розбиття апаратного сервера на кілька віртуальних машин (ВМ). В результаті обчислювальні потужності розподіляються між декількома «користувачами».
Якщо говорити простими словами, то віртуалізація нагадує швидкісний поїзд, в якому їде відразу безліч пасажирів. Вони фактично ділять між собою витрати на паливо і обслуговування транспорту, користуються ним за потребою і економлять місце на дорогах (в порівнянні з ситуацією, коли кожен замість поїзда міг би вибрати власний автомобіль).
Виртуализацией управляє програмний компонент, званий гіпервізором. Він відволікає ВМ від апаратного забезпечення, тому користувальницький додаток не знає, що працює у віртуальному середовищі.
Звідси випливає головна перевага віртуалізації: віртуальну машину можна без змін переносити з одного сервера на інший разом з операційною системою і додатками.
Як працюють контейнери
У випадку з контейнерами на окремі компоненти розбивається не “залізо”, а операційна система. Контейнери – це ізольована середовище для додатка, в якій міститься все необхідне для його роботи, наприклад, програмні бібліотеки, файли і метадані.
Можна провести аналогію з морськими контейнерами, за допомогою яких на кораблях, фурах або поїздах перевозять окремі вантажі. Програмні контейнери – це модулі з кодом, який виконує специфічну задачу. Контейнери спрощують конвеєри збірки, тестування і розгортання в DevOps.
DevOps (development + operations) – це зародилася в 2009 році методологія, націлена на взаємодію програмістів і системних адміністраторів для збільшення частоти випуску релізів.
Що таке системи управління контейнерами
Система управління контейнерами (система оркестровки) – це веб-панель адміністрування, яка керує роботою контейнерів. Прикладом може бути відкрита платформа Kubernetes, розроблена Google. Є й інші рішення – Docker, Rancher, OpenShift і так далі.
Ці рішення потрібні для гнучкого масштабування віртуальної інфраструктури. Ці системи управляють «розкладом» (кажуть, коли запускати той чи інший сервіс) і розподіляють навантаження на сервери, щоб обчислювальні ресурси витрачалися рівномірно.
Розробники та системні адміністратори можуть, нарешті, погодитися в одному – контейнери дають розробникам можливість експериментувати без жодних ризиків і обмежень. Віртуальні контейнери – це каталоги (якщо ви прихильник Windows, можете називати їх папками), які безпечним чином ізольовані від решти простору операційної системи. По суті, контейнер – це безпечна система для розробки, яка спільно з хостовой операційною системою використовує найбільш важливі файли, при цьому дозволяючи розробнику створювати додаток, не побоюючись можливих негативних наслідків для хоста. Контейнер оснащений своїм власним IP-адресою, ідентифікатором, файлової системою (тільки кілька файлів «позичаються» у хоста) і рівнем виконання.
Всі вже звикли до того, що системні адміністратори і розробники ПЗ постійно сперечаються один з одним з приводу прав користувачів, прав додатків, доступу з привілеями адміністратора, розміщення додатків та вимог до його виділяє дискового простору. Контейнерна віртуалізація знімає всі ці протиріччя, крім питання про дисковий простір. Системні адміністратори зберігають за собою привілей виділення місця на диску для контейнерів, але в інших питаннях розробники адмініструють свій контейнер як хочуть. Вони можуть перезавантажувати контейнер, коли їм заманеться, встановлювати будь-яке ПЗ і виконувати будь-які тести та експерименти, не побоюючись потурбувати хост.
Що ще робить контейнери настільки привабливими для розробників – це можливість налагоджувати додаток рівно в тій же середовищі, в якій воно буде експлуатуватися. Традиційно налагодження ведеться в середовищі, що має ряд відмінностей від промислової – інша процесорна архітектура (наприклад, менше ядер), відмінності в версіях базового ПО, інший графік установки оновлень.
Ці неприємні відмінності створюють проблеми в підтримку програмного забезпечення, які здатні звести адміністратора з розуму. Розробники вважають за краще будувати додатки з використанням найсвіжіших версій використовуваного ПО. Але адміністратори робочих середовищ не дозволять ставити такі версії, так як до них є питання по частині стабільності та наявності вразливостей, і ці питання цілком справедливі, особливо до ПО на стадії бета-версії.
Однак застосування контейнерів знімає цілий ряд подібних складнощів налагодження ПО на промисловій системі. Розробники можуть використовувати найсвіжіші версії потрібних інструментів і перевіряти стабільність їх роботи. Всі можливі уразливості виявляються «замкнені» в контейнері і не несуть ризиків для промислової системи.
Варто зазначити, що однією з найбільш популярних контейнерних систем є Docker. Це відкрита платформа, яка дає розробникам і системним адміністраторам можливість створювати, поширювати і виконувати розподілені додатки. У контейнерах Docker додатки можуть працювати на будь-якій операційній системі. Використання Docker дозволяє прискорити розробку додатків і скоротити час їх підготовки до початку продажів користувачам.
Безпека розробок
Важливим і необхідним в найближчі роки, у міру зростання швидкості розробок, кібербезпека зміщується ближче до початку циклу, і тепер перед розробниками стоїть завдання виявити загрози і захистити від них продукт не тільки під час його запуску, але і до початку циклу розробки. Захисні рішення повинні розроблятися таким чином, щоб успішно захищати різні середовища (фізичні, віртуальні і хмарні), забезпечуючи тісну взаємодію ІТ-безпеки і процесів DevOps, а також сприяти консолідації захисних інструментів і виконання регуляторних вимог, не втручаючись в процеси розробки. З ростом DevOps з’являються нові джерела вразливостей, і більший сегмент бізнесу потребує захисту. Тут на допомогу розробникам приходить нове рішення від компанії Trend Micro, яка розширює можливості захисту контейнерів завдяки запуску Deep Security Smart Check.
Deep Security Smart Check допомагає фахівцям з DevOps забезпечувати безпеку розробок завдяки швидкому і безперервному скануванню на наявність загроз і вразливостей, єдиної панелі управління, повідомленнями і журналам сканування, тим самим виконуючи вимоги регуляторів. Рішення Smart Check оптимізовано для провідних контейнерних платформ з підтримкою Docker API 2.0, таких як Docker Trusted Registry, Amazon Elastic Container Registry, Azure Container Registry і Google Container Registry; також рішення інтегрується з провідними системами SIEM і інструментами оркестровки, такими як Jenkins, Kubernetes, SumoLogic, Splunk і ін.
Якщо ви розробник, то вам слід випробувати контейнери в своїй роботі. Якщо ви системний адміністратор, то вам варто дозволити використання цих ізольованих середовищ в підтримуваних вами системах, а рішення Smart Check дозволяє архітекторам і розробникам вбудовувати безпеку як код в додатки до їх розгортання, ефективно забезпечуючи захист на ранніх стадіях розробки, і в той же час знизить кількість ручних операцій за допомогою автоматичного сканування образів на наявність нових вразливостей і шкідливих програм.