Схоже, ваше запитання не дає жодних припущень щодо платформи / ОС, про яку йдеться. Ось чому може бути доцільним додати відповідь про те, як це зазвичай робиться / вирішується в середовищі мейнфреймів, де "інженери" (як у вашій назві питання) насправді є групами людей, де десятки (можливо, сотні) людей залучений. Моя відповідь заснована на використанні продукту SCM, з яким я найбільше знайомий (не впевнений, чи потрібно розкривати назву продукту).
1. Архітектура
Ось основні моменти, як я відповів би на ваше запитання:
- Весь код (і пов'язані з ним артефакти, такі як виконувані файли тощо) зберігається у файлах, які разом називають структуру бібліотеки .
- Для кожного середовища в кожній (можливо, віддаленій) цільовій системі існує сервер ("розпочате завдання" в основному режимі розмови), який піклується про ВСІ (повторюємо: ВСІ) оновлення до будь-чого в структурі бібліотеки. Є кілька винятків (як люди із безпеки, або команда управління простором), але крім цього, ніхто (повторюємо: ніхто) не має права застосовувати оновлення до будь-якого файлу в цій структурі бібліотеки. Іншими словами: сервер отримує ексклюзивні права оновлення всієї структури бібліотеки . Увага: люди OPS підуть на заїзд, якщо ви заходите обмежувати їхній доступ (спочатку вони чинять опір ...), тож переконайтеся, що вас охоплює вище керівництво (CxO), щоб накласти ці правила доступу ...
- Фактичні зміни програмного забезпечення складаються з одного компонента (крихітний виправлення коду посеред ночі ...), а також це може бути сотні чи тисячі джерел, виконуваних файлів або будь-яких інших артефактів (під час вихідних вихідних). Щоб зробити їх керованими, речі, які слід переміщувати (більш-менш) разом, одночасно поєднуються в те, що називається пакетом змін програмного забезпечення .
З урахуванням вищезазначеного, будь-яке оновлення, яке сервер повинен застосувати до структури бібліотеки, буде можливим лише за допомогою чітко визначеного робочого процесу, який ми називаємо життєвим циклом пакету змін програмного забезпечення (SDLC, якщо ви бажаєте). Щоб реально виконати різні кроки в цьому робочому процесі, це потрібно, щоб це сталося:
- Тільки сервер виконає необхідні (і попередньо налаштовані) кроки.
- Сервер зробить лише певний крок (= оновить щось десь у структурі бібліотеки) після того, як необхідні схвалення (від людей) будуть зібрані для виконання такого кроку.
- Схвалення можуть давати лише користувачі, які виконують роль, яка дозволяє їм (= дозвіл) видавати такі схвалення.
2. Ролі та дозволи
Сервер гарантує, що користувач, який намагається щось зробити (наприклад, "схвалити щось"), зможе зробити це лише у разі дозволу користувача. Ця частина проста. Але ви не хочете використовувати систему SCM для адміністрування всіх цих дозволів для всіх залучених користувачів, саме це належить до вашої системи безпеки (а не до системи SCM!), Щоб ви могли адаптувати ваш робочий процес (у своїй системі SCM) перейти перевірити ці дозволи, коли це доречно. Наведені нижче кроки містять додаткові деталі щодо цього.
Крок 1: Налаштування дозволів (у системі безпеки)
Визначте об'єкти безпеки у своїй системі безпеки із чітко визначеними назвами для цих об'єктів. Кілька зразків (додайте стільки подібних, щоб відповідати вашим власним потребам):
PrmUnit
, Використовуваний для отримання дозволу , щоб запросити Заохочувати сказати Unit -тестування.
PrmQA
, Використовуваний для отримання дозволу , щоб запросити Заохочувати сказати Qa -тестування (давайте припустимо , що це найвищий рівень тестування).
PrdEnduser
, що використовується кінцевими користувачами, які беруть участь у певному рівні тестування, щоб вказати, що вони задоволені результатами, отриманими в результаті якогось тестування. І через це ці кінцеві користувачі погоджуються із зміною, що рухається вперед у структурі бібліотеки.
PrdRelmgnt
, використовувана менеджерами випусків для авторизації активації у виробництві (= останній / найвищий рівень у структурі бібліотеки).
Визначте групи користувачів у вашій системі безпеки. Кілька зразків (додайте стільки подібних, щоб відповідати вашим власним потребам):
GrpDevs
, що (скажімо) відповідає вашим розробникам (мабуть, більше, ніж лише 1).
GrpEnduser
, що (скажімо) відповідає вашим кінцевим споживачам (принаймні 1, бажано з більш подібними користувачами).
GrpRelMgnt
, що (скажімо) відповідає вашим менеджерам випусків (принаймні 1, бажано ще декілька користувачів).
Надайте дозволи , також використовуючи вашу систему безпеки, щоб дозволити доступ до вибраних " об'єктів безпеки " для вибраних " груп користувачів ". Для продовження наведеного вище прикладу, ось що здається доречним (адаптуйте до власних потреб):
- Група
GrpDevs
отримує доступ до (лише!) Суб'єкта безпеки PrmUnit
.
- Група
GrpEnduser
отримує доступ до (лише!) Суб'єкта безпеки PrdEnduser
.
- Група
GrpRelMgnt
отримує доступ до (обох!) Суб'єктів безпеки PrmQA
та PrdRelmgnt
.
Крок 2. Налаштування робочого процесу (в системі SCM)
Після налаштування дозволів у вашій системі безпеки (як на кроці 1), все, що вам потрібно зробити у вашій системі SCM, - це налаштувати, як різні етапи життєвого циклу відповідають відповідним особам безпеки у вашій системі безпеки. Тобто, лише ті користувачі, які мають відповідний доступ до потрібного об'єкта безпеки, можуть запитувати сервер на виконання відповідного кроку в робочому процесі.
Ось кілька прикладів того, як ви налаштували систему SCM, щоб здійснити магію:
- Якщо користувач має доступ до нього
PrmUnit
, то такому користувачеві дозволяється просити просунути до тестування одиниці . Очевидно, що користувачі в групі GrpDevs
- це користувачі, уповноважені на це (зверніть увагу: ні, наприклад, користувачі в групі GrpRelMgnt
).
- Якщо користувач має доступ до нього
PrmQA
, то такому користувачеві дозволено подати запит на просування до QA- тестування. Очевидно, що користувачі в групі GrpRelMgnt
- це користувачі, уповноважені на це (зверніть увагу: ні, наприклад, користувачі в групі GrpDevs
чи в групіGrpEnduser
).
- Якщо користувач має доступ до нього
PrdEnduser
, тоді такий користувач може дозволити зміну, яка рухається вперед у структурі бібліотеки (що, як правило, є попереднім запитом для користувачів групи, GrpRelMgnt
які навіть зможуть переглянути зміни). Очевидно, що користувачі в групі GrpEnduser
- це (єдині) користувачі, уповноважені на це.
- Якщо користувач має доступ до нього
PrdRelmgnt
, тоді такий користувач може дозволити активацію активації у виробництві (= останній / найвищий рівень у структурі бібліотеки).
3. Очікуйте несподіваного і будьте готові до цього
Наведене вище - лише план, який, сподіваємось, допомагає зрозуміти, як врешті-решт саме сервер піклується про поділ обов'язків ... за умови, що у вас є покриття CxO, щоб ви наклали деякі правила доступу, які не всім сподобаються.
Щоб завершити малюнок, як пояснено вище, сервер створює аудиторський слід (реєстрацію) усього, що відбувається в системі. Так що в будь-який момент часу завжди можна відповісти на такі питання
Що сталося, коли і чому, і який авторизований користувач насправді це схвалив ... наперед?
Але, мабуть, найскладніша частина - це наявність адекватних інструментів звітування (і вміння ними користуватися). Принаймні (легко) задовольнити запити ІТ-аудиторів (їх питання можуть бути дуже складними). Але також вказати на відповідні записи журналів у вашій системі SCM, щоб відповісти на всілякі запитання "Що трапилось" у кризових ситуаціях, коли (частина) виробництва зменшується.
PS: Я залишаю це за власним судженням, якщо моя відповідь - так чи ні, сумісна з DevOps.