Як заборонити доступ до внутрішніх контейнерів Docker?


14

Я хочу доставити свою програму клієнтам у формі зображення докера. Але важливо забезпечити, щоб кінцевий користувач нічого не змінював всередині контейнера. Користувач повинен мати змогу запускати / зупиняти контейнер і взаємодіяти з контейнером через мережу.

Чи можна заборонити доступ до внутрішніх контейнерів? Чи можна перевірити цілісність зображення з цього контейнера?


2
Якщо ви не керуєте хостом докера, я вважаю, що ви не можете. Яку проблему ви готові вирішити, запобігаючи цьому доступу?
Тенсібай

Як згадує Тенсібай, це залежить. Якщо вам потрібно знати, що контейнер неможливо змінити з міркувань безпеки, вам потрібно запустити його на власних серверах. Якщо ви просто хочете відмовити людям змінювати його, щоб вони не порушували речі, напевно, ви можете це зробити. Опис вашого випадку використання допоможе тут.
Aurora0001

Відповіді:


12

Коротше кажучи, ви не можете перешкодити своїм клієнтам змінювати контейнери, які вони працюють у власній інфраструктурі. Контейнери не схожі на бінарні файли, які можуть бути затуманені; вони є середовищами виконання. Код, який ви поширюєте всередині контейнера, може бути прихованим.

Ваше запитання натякає на питання сторонньої підтримки: клієнти модифікують програмне забезпечення, яке вони працюють у власних умовах. Якщо ви надаєте інструменти для керування контейнерами, які ви постачаєте (наприклад, моніторинг та ведення журналів), то клієнти повинні погодитись (як частина ліцензії на програмне забезпечення) не вносити в них несанкціоновані зміни. Це стосується всіх типів стороннього програмного забезпечення, а не лише контейнерів.

Залежно від вашої ситуації, ви також можете надати свій додаток як Software As A Service (SaaS), що працює в хмарній інфраструктурі.

Якщо ваш клієнт вимагає, щоб ваші контейнери працювали на їхній інфраструктурі, і відмовляється дотримуватися обмежень щодо модифікації, ви, ймовірно, не хочете намагатися підтримувати їх використання вашого програмного забезпечення.


6

Docker не надає жодних засобів для заборони доступу користувача до контейнера, проте як розробник зображень ви можете дотримуватися декількох стратегій

  • Закрийте програмне забезпечення (ruby, python тощо)
  • Створіть своє зображення з базового зображення, яке не має оболонки, та інших двійкових файлів, якими користувач може сковувати зображення.

Звичайно, вони завжди можуть експортувати контейнер і перепакувати його, але це крайні заходи ...


Чому Ruby та Python подаються як приклади для задумливого коду? Код цими мовами зазвичай зберігається у вигляді файлів з чітким текстом у виконаній операційній системі. Чи не було б кращим використовувати мову компільованого типу C ++, C #, Java або таку, яку можна "мінімізувати", як JS?
AjaxLeung

5

Ви можете видалити користувачів з групи Докер і створити sudos для docker startі docker stop.


3
можливий / ефективний, лише якщо ви володієте цими серверами ...
Dan Cornilescu,

5

Якщо ваш клієнт готовий вкласти гроші, тоді вам слід скористатися корпоративним виданням Docker. У Docker EE у вас є один інструмент - це UCP(Universal Control Plane) UCP . За допомогою UCP ви можете створювати ролі та права доступу та обмежувати користувача, щоб змінювати / змінювати контейнери.

Якщо ви хочете перевірити UCP, ніж DDC (Docker Data Center), що має одномісячну пробну ліцензію, яка допоможе вам розробити деталі відповідно до ваших вимог.

Сподіваюся, це допоможе!

Дякую!


1
Як рішення щодо докерних груп, це працює, якщо ви керуєте лише хост-системою
докера

2

Здійснюйте доставку через відповідні сценарії. Зберігайте всілякі обмеження та перевірки у скрипті ansible.


2
Як це запобіжить доступ до контейнера? Спробуйте пояснити, як ваша пропозиція насправді вирішить проблему ОП.
Майкл Ле Барб'є Грюневальд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.