Ваш вопрос, кажется, не предполагает каких-либо предположений о платформе / ОС, о которой идет речь. Вот почему может иметь смысл добавить ответ о том, как это обычно делается / решается в среде мэйнфреймов, где «инженеры» (как в названии вашего вопроса) на самом деле представляют собой группы людей, из которых десятки (возможно, сотни) людей участвует. Мой ответ основан на использовании продукта SCM, с которым я больше всего знаком (не уверен, нужно ли раскрывать название продукта).
1. Архитектура
Вот основные моменты того, как я отвечу на ваш вопрос:
- Весь код (и связанные с ним артефакты, такие как исполняемые файлы и т. Д.) Хранятся в файлах, которые вместе представляют собой то, что мы называем структурой библиотеки .
- Для каждой среды в каждой (возможно, удаленной) целевой системе существует сервер («запущенная задача» в мейнфрейме), который заботится обо всех (повтор: ВСЕХ) обновлениях чего-либо в структуре библиотеки. Есть несколько исключений (например, сотрудники службы безопасности или группа управления пространством), но кроме этого никто (повторяю: никто) не имеет полномочий применять обновления к любому файлу в этой структуре библиотеки. Другими словами: сервер получает эксклюзивные полномочия на обновление всей структуры библиотеки . Внимание: OPS-люди будут сумасшедшими, если вы войдете, чтобы ограничить их доступ (сначала они будут сопротивляться ...), поэтому убедитесь, что вы накрыты высшим руководством (CxO), чтобы навязать эти правила доступа ...
- Реальные изменения в программном обеспечении могут состоять из одного компонента (крошечное исправление кода посреди ночи ...), или это могут быть также сотни или тысячи источников, исполняемых файлов или любых других артефактов (в выходные дни релиза). Чтобы сделать их управляемыми, вещи, которые должны быть перемещены (более или менее) вместе, в то же время, объединены в так называемый пакет изменений программного обеспечения .
С учетом вышесказанного любое обновление, которое будет применено сервером к структуре библиотеки, будет возможно только через четко определенный рабочий процесс, который мы называем жизненным циклом пакета изменений программного обеспечения (SDLC, если вы предпочитаете). Чтобы фактически выполнить различные шаги в этом рабочем процессе, вот что нужно, чтобы это произошло:
- Только сервер выполнит необходимые (и предварительно сконфигурированные) шаги.
- Сервер выполнит только определенный шаг (= обновит что-то где-нибудь в структуре библиотеки) после того, как будут получены необходимые одобрения (от людей) для выполнения такого шага.
- Одобрения могут быть предоставлены только теми пользователями, у которых есть роль, которая позволяет им (= разрешение) выдавать такие одобрения.
2. Роли и разрешения
Сервер будет гарантировать, что пользователь, пытающийся заставить что-то произойти (например, «утвердить что-то»), сможет сделать это только при наличии соответствующих разрешений пользователя. Эта часть проста. Но вы не хотите использовать систему SCM для администрирования всех этих разрешений для всех вовлеченных пользователей, это то, что принадлежит вашей системе безопасности (а не системе SCM!), Чтобы вы могли адаптировать свой рабочий процесс (в вашей системе SCM) чтобы проверить эти разрешения, когда это уместно. Шаги ниже предоставляют некоторые подробности об этом.
Шаг 1. Настройка разрешений (в системе безопасности)
Определите объекты безопасности в вашей системе безопасности с четко определенными именами для этих объектов. Несколько примеров (добавьте столько же похожих, сколько вам нужно):
PrmUnit
Используется для получения разрешения на запрос повышения в программе « Unit -testing».
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-совместимым.