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