Як захистити дані у Jenkins: кращі поради

Jenkins — відкритий інструмент для безперервної інтеграції, написаний на Java. Він допомагає автоматизувати частину процесу розробки ПЗ, яка не потребує участі людини. 

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

Як підвищити безпеку Jenkins? Нумо розбиратися. 

Про безпеку у Jenkins

Програма сама по собі захищена і включає багато параметрів безпеки за замовчуванням під час першого налаштування. Інші параметри потребують окремого налаштування середовища та залежать від конкретних випадків використання Jenkins.

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

Перше правило: все має бути оновлено

Знайти вразливість у ПЗ можуть в будь-який момент. Згадайте log4shell, що існувала з 2017 року, але виявили та почали використовувати її у грудні минулого року. 

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

Тож оновлюйтесь до останньої версії, щоб дізнаватися про усунені проблеми зі сповіщення після оновлення, а не з гіркого досвіду. Оновлюйте свій екземпляр та його плагіни.

Спочатку перевірте, чи доступні оновлення для Jenkins: 

  1. Натисніть Керувати Jenkins у меню.
  2. На наступному екрані у верхній частині ви побачите чи доступна нова версія. Натисніть кнопку Або оновити автоматично, щоб оновити зараз. Або ж можете завантажити останню версію та оновитись в запланований час.

В тому ж розділі можна і відкотити оновлення назад. Для цього натисніть кнопку Повернутися.

Щоб оновити плагіни:

  1. Знов перейдіть у Керувати Jenkins.
  2. Натисніть Керувати плагінами.
  3. Переконайтеся, що ви перебуваєте на вкладці Оновлення та відмітьте те з них, яке хочете встановити. 
  4. Натисніть Завантажити зараз та встановіть після перезавантаження програми.
  5. Перезапустіть Jenkins, щоб завершити оновлення.

Змінюйте параметри безпеки за замовчуванням, лише якщо впевнені

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

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

Вносьте зміни, лише якщо впевнені в тому, що робите, а ще краще — робити це після рекомендацій вашого спеціаліста з кібербезпеки. Ці зміни можна зробити на сторінці «Налаштування глобальної безпеки». Щоб знайти її, виберіть «Керувати Jenkins» у меню ліворуч.

Захистіть операційну систему

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

Навіть найзахищеніший застосунок Jenkins не допоможе, якщо його встановити на незахищеному сервері або встановити необережно. 

Оскільки більшість серверів програми, скоріше за все базуватимуться на Linux, розглянемо як захистити цю ОС. Наші поради заборонять зловмисний доступ і модифікацію сервера:

  • Переконайтеся, що відкриті лише потрібні порти, такі як HTTP. Якщо вам треба додаткові протоколи, наприклад SSH, визначте відповідні правила фаєрволу, щоб заблокувати небажаний доступ.
  • Запустіть Jenkins як користувач без прав адміністратора.
  • Посильте дозволи для каталогу JENKINS_HOME лише для потрібного користувача Jenkins.
  • Перевірте, щоб користувач не міг підвищити свої дозволи за допомогою команди sudo. Ви можете заборонити це, змінивши файл /etc/sudoers.
  • Налаштуйте Jenkins за допомогою протоколу HTTPS і надійного сертифіката, як описано тут.
  • Враховуючи чутливість сервера Jenkins, заблокуйте публічний доступ до нього. Для цього встановіть його в локальній мережі або за допомогою жорсткої групової політики безпеки.

Головне правило: захищайте сервер так, як ви захищаєте свою програму Jenkins.

Уникайте створення на контролері

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

Агенти — це віртуальні екземпляри Jenkins, які виконують завдання замість вашого контролера. Використовуючи агенти, ви можете заборонити контролеру запускати збірки, щоб обмежити доступ до файлів, яким можуть завдати шкоди.

Щоб ваш контролер не запускав збірки:

  1. Натисніть Керувати Jenkins у меню.
  2. Натисніть Керувати вузлами та хмарами.
  3. Клацніть на гвинтик праворуч від вбудованого вузла.
  4. Далі у вас є 2 варіанти. Виберіть один і натисніть Зберегти:
  • Змініть кількість виконавців на 0, якщо ви не плануєте робити збірки на контролері.
  • У розкривному меню Використання виберіть Створювати лише завдання, що містять вирази міток, які відповідають цій ноді, якщо ви хочете збирати на контролері за потреби.

Надайте команді лише потрібні доступи

Недостатньо захистити системи від зовнішніх атак. Зайві доступи всередині команди також можуть привести до неприємних наслідків. 

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

Що із цим робити?

Дайте акаунт кожному користувачеві

Так ви зможете подивитись, хто і які дії виконував.

Як створити додаткових користувачів:

  1. Натисніть Керувати Jenkins у меню.
  2. Прокрутіть вниз і виберіть Керувати користувачами.
  3. Натисніть Створити користувача.
  4. Заповніть усі поля та знов натисніть Створити користувача.

Використовуйте плагін Matrix Authorization Strategy

Jenkins надає вбудовані методи авторизації, наприклад, «Будь-хто може робити все» та «Авторизовані користувачі можуть робити все». Краще замість таких налаштувань використовувати плагіни для більш розширених методів авторизації.

Один з найвідоміших для цієї мети є Matrix Authorization Strategy. Він забезпечує велику гнучкість для впровадження принципу найменших привілеїв PoLP. Плагін визначає привілеї анонімних, автентифікованих або окремих користувачів. Крім того, ви також можете визначити привілеї для кожного проєкту або призначити створені ролі для кожного користувача. 

Отже, ви можете використовувати цей плагін, щоб керувати доступом користувачів до програми більш детально. Наприклад, зможете:

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

Як встановити плагін: 

  1. Звичне Керувати Jenkins у меню ліворуч.
  2. Натисніть Керувати плагінами.
  3. Перейдіть на вкладку Доступні та почніть вводити Matrix Authorization. Плагін з’явиться в результатах.
  4. Поставте прапорець ліворуч від плагіну та натисніть Встановити без перезавантаження.

Щоб налаштувати дозволи за допомогою плагіну: 

  1. «Керувати Jenkins» — «Налаштувати глобальну безпеку»
  2. Натисніть перемикач для:
  • Matrix-based security — дозволяє керувати глобальними дозволами користувачів і груп.
  • Project-based Matrix Authorization Strategy — дозволяє керувати дозволами користувачів і груп на рівні проєкту.
  1. Незалежно від вашого вибору, використовуйте кнопки, щоб додати користувачів або групи та вибрати їхній рівень доступу за допомогою прапорців у таблиці. Натисніть Зберегти, коли закінчите.

Додаткові плагіни, які варто розглянути

Якщо ви користуєтесь іншими системами для керування доступом, то можете автентифікувати своїх користувачів Jenkins через них. Наприклад, є плагіни для Microsoft’s Active Directory та OpenID, що дасть вам керувати доступами в одному місці. 

Також зверніть увагу на плагіни Folders та Folder-based Authorization Strategy

Folders дозволяє групувати завдання у вкладених теках. Ви зможете групувати завдання зі спільними вимогами безпеки, щоб уважніше за ними стежити. 

Плагін Folder-based Authorization Strategy розширює захист теки, дозволяючи налаштувати доступ за допомогою ролей.

Надійно зберігайте свої облікові дані

Пам’ятайте про захист облікових даних. Плагін Credentials Binding шифрує та безпечно зберігає облікові дані, які з’єднують Jenkins з іншими службами. Сама програма рекомендує цей плагін під час першого встановлення, а інші плагіни використовують його як залежність.

Credentials Binding дозволяє зберігати та повторно використовувати всі типи методів автентифікації, наприклад:

  • імена користувачів і паролі,
  • SSH імена користувачів і закриті ключі,
  • секретні файли,
  • секретний текст,
  • сертифікати.

Висновок 

Ніщо не може бути захищеним на 100%. І хоч Jenkins — надійно захищена система, ви все одно маєте додатково дбати про її безпеку. Вчасно оновлюйтесь, захищайте не тільки Jenkins, а й операційну систему, обмежуйте доступи до важливих налаштувань та захищайте облікові дані.

Хай ваші системи будуть надійно захищені😉

Залишити відповідь

Дякуємо, що поділились