Разделение (или Разделение) обязанностей в бизнесе и информационных технологиях — это важный внутренний процесс, описывающий ограничение власти любого человека с целью борьба с ошибками и мошенничеством. Р. А. Бота и Дж. Х. П. Элофф в Разделении обязанностей по обеспечению контроля доступа в средах рабочих процессов описывают SoD как:

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

Сегодня мы рассмотрим эту концепцию и то, как она помогает обеспечить безопасность вашего Overcee (и впоследствии вашей ИТ-инфраструктуры), сохраняя при этом мощность и производительность, связанные с Overcee.

Точные детали того, как Overcee обрабатывает незавершенные заказы, для наших клиентов по большей части маловажны, для них главное, чтобы это работало, когда должно. Однако понимание процессов, происходящих в фоновом режиме, и того, почему мы внедряем разделение обязанностей, может действительно помочь при планировании ваших инструментов и последовательностей инструментов, а также может иметь решающее значение для понимания файлов журнала диспетчера заданий и рабочих, если что-то пойдет не так.

Разделение обязанностей в контексте программного обеспечения

В то время как бизнес заботится о сокращении мошенничества и проблем, возникающих из-за физического разделения обязанностей, команда разработчиков программного обеспечения должна смотреть на это с несколько иной точки зрения.

Хотя проблема очень похожа, иногда может быть сложнее визуализировать решение. В нашем примере мы будем говорить о службе Windows, которая работает под определенной учетной записью пользователя (в данном случае — под локальной системой). Создание разделения обязанностей в этом случае требует использования совершенно другой учетной записи пользователя для запуска инструментов (подробнее об этом позже).

Варианты, которые мы рассматривали при подходе к этой проблеме, были:

Олицетворение

Процесс использования локальных или сетевых ресурсов путем олицетворения сетевого идентификатора другого пользователя. Это требует, чтобы учетные данные пользователя были доступны во время выполнения, а это означает, что они должны храниться настолько надежно, насколько это может предложить двустороннее шифрование (как правило, плохая практика).

Создание нового процесса

Запуск специального исполняемого файла, работающего с инструментом, с использованием необходимых учетных данных. Это также требует сохранения учетных данных для доступа во время выполнения.

Разделение услуг

Создание отдельной службы, которая запускается с другими учетными данными и отвечает исключительно за запуск инструментов.

Мы пошли на разделение сервисов, потому что им проще управлять, проще настраивать для пользователя, не требуется хранить какие-либо учетные данные (Windows позаботится об этом за нас) и оно лучше подходит для нашей модели приложения.

Примечание: мы уже рассматриваем альтернативы, так как (спойлер) в следующем крупном выпуске Overcee планируется включить зонирование домена, чтобы можно было настроить разные наборы учетных данных для использования работником в разных подразделениях (для дальнейшего повышения безопасности). ). В настоящее время мы планируем гибридное решение, но, как всегда, любые предложения можно отправлять в наш твиттер @Int64Software или по электронной почте [email protected].

О процессе управления работой в Overcee

В Overcee задания (созданные, когда инструмент или последовательность инструментов настроены для запуска на одном или нескольких компьютерах) помещаются в очередь.

Диспетчер заданий отвечает за удаление этих заданий из очереди для работника, а затем за получение результатов и преобразование их в формат, ожидаемый базой данных. Worker получает задания, запускает соответствующий инструмент, а затем возвращает результат диспетчеру заданий.

Таким образом, Job Manager должен иметь доступ для чтения/записи к базе данных Overcee, в то время как Worker может быть надежно изолирован от нее. Почему?

Рассмотрим сценарий: пользователь с минимальными правами доступа к Overcee предлагает вам «безобидный» исполняемый инструмент, который он написал для выполнения какой-то второстепенной задачи. Он сообщает вам, что его лучше запускать с сервера и передавать имя машины в командной строке. Таким образом, вы помещаете исполняемый файл в доступную папку и настраиваете заблокированный инструмент Local Execute (выполнение на рабочем сервере) и делаете его доступным для пользователя.

Позже вы узнаете, что у этого пользователя были скрытые мотивы, и он вычислил записи базы данных, которые ему нужно изменить, чтобы предоставить себе полный доступ администратора к Overcee.

Но из-за разделения обязанностей (SoD) между диспетчером заданий и работником, даже если исполняемый файл запускается на сервере, он не имеет разрешения на доступ к базе данных и поэтому не может вносить изменения, которые хочет пользователь.

Теперь, конечно, мы все более осторожны, и мы знаем, что простой запуск ненадежного исполняемого файла на сервере подвергает вас всевозможным неприятностям. Но это лишь один пример того, почему SoD так важен для Overcee.

А также: Надежность

Из-за огромного разнообразия инструментов, которые мы включаем в Overcee, и из-за того, что мы ожидаем, что люди будут создавать свои собственные с помощью мощного API, проблемы будут возникать. И, несмотря на все наши усилия, иногда эти проблемы могут привести к неожиданным результатам в службе Worker. Это еще одна причина важности такого разделения: если рабочий процесс необходимо перезапустить, это может не повлиять на другие службы Overcee. Просто так надежнее.

Итак, давайте посмотрим на мелочи.

Диспетчер заданий — удаление из очереди

Диспетчер заданий постоянно проверяет входящие задания, созданные пользователями. Эти задания (точнее, один компьютер на одном шаге задания) извлекаются из верхней части очереди в следующем порядке: статус (из очереди удаляются только ожидающие или отложенные задания), приоритет, статус компьютера (компьютеры, которым еще есть что делать). выполнять в задании) и номер шага последовательности инструментов.

Когда это происходит, отдельному компьютеру в этом задании назначается идентификатор GUID, чтобы определить, что он был удален из очереди, а рабочий затем получает всю соответствующую информацию, которая потребуется рабочему (информация о компьютере, информация об инструменте, входные данные инструмента). и т. д.) и создает файл исходящих данных, который отслеживают рабочие потоки.

После того как этот файл будет сохранен, диспетчер заданий вернется к поиску входящих заданий или информации о выполненных заданиях.

Работник

Когда файл появляется в папке «Исходящие», рабочий поток забирает его для обработки. Теперь у него должна быть вся информация, необходимая для выполнения работы, поэтому он загружает соответствующий инструмент, отправляет ему входную информацию и запускает ее на текущем компьютере.

Получив результат, он записывает его в файл «Входящие», который отправляет данные обратно в диспетчер заданий.

Примечание: Рабочий — отсрочка

Некоторые долго работающие инструменты вместо того, чтобы заставлять Worker ждать их, возвращают статус «Отложено» и время ожидания, прежде чем снова проверить их.

Когда эти задания возвращаются диспетчеру заданий, вместо того, чтобы обрабатывать эту часть задания как выполненную или не выполненную в соответствии с полученными данными, он возвращает компьютер в очередь заданий с отложенным временем, чтобы он был снова взят после того, как это произойдет. время прошло.

Это позволяет нам запускать такие вещи, как установка приложения, не беспокоясь о том, что весь рабочий поток будет связан во время установки.

Диспетчер заданий — сохранение результатов

Наконец, когда появится файл в папке «Входящие», диспетчер заданий прочитает его и сохранит соответствующие данные обратно в базу данных, завершив цикл.

Вывод

Итак, теперь вы должны увидеть, что Job Manager и Worker работают в своего рода симбиозе, завися друг от друга, но независимо выполняя свои собственные задачи. Но именно с этой системой мы можем обеспечить безопасность и надежность.

Как вы реализовали разделение обязанностей в своих решениях? Напишите нам @Int64Software.

О Overcee

Overcee (https://overcee.com) — это платформа управления устройствами Microsoft Windows, не похожая ни на одну другую. Хотя оно предлагает те же инструменты управления, что и многие другие решения, Overcee был разработан на основе концепции делегирования и имеет обширную систему разрешений, позволяющую расширить возможности вашей службы поддержки. В конечном итоге это приводит к меньшему количеству обращений в службу поддержки, более быстрому разрешению тикетов и экономии денег.

Зарегистрируйтесь на https://overcee.com сегодня, чтобы запросить бесплатную пробную версию.