Минимизация рисков потери доступности программного обеспечения после установки обновлений или изменения функциональности

С.А. Арустамов, М.Г. Генин_

МЕТОДЫ И СИСТЕМЫ ЗАЩИТЫ ИНФОРМАЦИИ

УДК 004.005

МИНИМИЗАЦИЯ РИСКОВ ПОТЕРИ ДОСТУПНОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ПОСЛЕ УСТАНОВКИ ОБНОВЛЕНИЙ ИЛИ ИЗМЕНЕНИЯ

ФУНКЦИОНАЛЬНОСТИ

С. А. Арустамов, М.Г. Генин

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

Введение

Вопросами управления обновлениями (или изменениями) информационных систем занимаются достаточно давно, им посвящено много публикаций. Одна из первых работ датируется 1980 г. и принадлежит фирме IBM [1]. В ней впервые управление изменениями рассматривается не как отдельная дисциплина, а как составная часть управления информационными системами. С тех пор эта область знаний сильно расширилась, были предложены различные подходы к управлению изменениями, однако этот основополагающий принцип в силе и по сегодняшний день. В настоящее время процесс управления изменениями обычно связывают с методологией ITIL [2]. Наряду с ITIL, существуют и другие методологии, посвященные управлению изменениями в информационных системах, например, COBIT [3], Microsoft Operational Framework [4]. В 2005 г. был разработан международный стандарт ISO/EIC 20000 [5], который объединил все эти методологии в одну общую концепцию управления процессами в информационные технологии (ИТ), в том числе и управления изменениями.

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

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

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

Снижение риска сбоя системы при использовании стратегии простых обновлений

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

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

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

7

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

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

После всего сказанного, можно сформулировать следующие условия, которым должно удовлетворять каждое простое обновление в составе большого обновления:

- в определенный момент времени устанавливается только одно простое обновление;

- после успешной установки каждого «простого» обновления система работоспособна;

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

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

Определение. Будем называть обновление и, простым, если возможен процесс возврата за допустимое время к предыдущему состоянию системы по прошествии некоторого времени после установки обновления и. Если и1 прошло успешно, то система работоспособна и готова к установке обновления и,+1.

Будем исходить из того, что любое полное обновление и может быть представлено в виде суммы некоторого количества простых обновлений и, 1=1,..., N и= и1 + и2 + ... + ик.

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

Доказательство. Исходим из того, что после установки любого и1 система работоспособна, поэтому есть выбор: либо выделить время и установить все обновление и целиком, либо поэтапно устанавливать каждое и, после чего делать паузу и давать возможность системе поработать некоторое время, затем устанавливать ит и т.д.

Обозначим р(и) - вероятность успешной установки обновления и. Рассчитаем теперь вероятность успешной установки Р(и) всего полного обновления в том и в другом случае.

Рассмотрим случай установки всего обновления сразу. Если все обновление и состоит из одного простого обновления и1, можем записать: Р(и)=р(и{).

Для обновления, состоящего уже из двух простых обновлений и1 и и2, формула будет выглядеть как произведение вероятностей

Р(и)=р(и1)р(и2),

так как успех всего обновления возможен только при успехе обновлений и1 и и2 .

Соответственно, для N обновлений формула будет выглядеть следующим образом:

Р

Поскольку любая р(и) меньше единицы, то можно утверждать, что Р(Ц) < р(и) для любого /. Отсюда вытекает, что при одновременной установке всех простых обновлений и1 в составе обновления и вероятность успешного исхода Р(Ц) всегда ниже, чем при единовременной установке только одного обновления и.

Рассмотрим теперь ситуацию, когда обновления и1 в составе обновления и устанавливаются не одновременно, а через определенные промежутки времени, между которыми система работает (можно так сделать, так как по требованиям после установки каждого и1 система работоспособна). Для этого заметим, что установка обновления и1 производится только после того, как обновление и-1 уже было успешно установлено, и после этого система некоторое время проработала.

Посмотрим, как ведет себя вероятность р(и) при таком способе обновления. Вообще говоря, пока что авторы не касались вопроса о том, как определить вероятность р(и). Вопрос этот очень сложный, и пока не хотелось бы подробно его рассматривать. Однако можно сделать некоторые предположения о том, от чего она зависит и как на нее повлиять. Например, можно утверждать, что в первые моменты после запуска обновленной системы вероятность сбоя выше, чем в последующие. Как правило, большинст-

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

Рис. 1. Зависимость вероятности успеха обновления от времени

Здесь момент времени, равный нулю, соответствует ситуации запуска системы сразу после обновления и, а момент времени Т - состоянию, когда система уже проработала некоторое время после обновления. Чем больше система проработала после установки /-го обновления, тем меньше шансов, что из-за него возникнет сбой. Если между каждым обновлением и1, и2, ..., и/-1 проходит достаточное количество времени, то вероятности успеха этих уже установленных обновлений р(и\)~  р(ч> \) близки к единице (рис. 2).

Обозначим Р(и) - вероятность успеха всех обновлений системы с первого по 1-е при последовательной их установке. По аналогии с (1) можем записать: Р(и) =р(щ) •р(и2) ••••• р(и/) = Пр(и,), у=1, ..., /.

Учитывая, что р(и1), ..., р(и/-1) в случае последовательной установки близки к единице при установке /-го обновления, можем приближенно записать, что Р(и) ~ р(и,).

Таким образом, можем принять, что при последовательной установке обновлений и1, и2, ., и/ вероятность успеха всех этих обновлений равна вероятности успеха последнего, /-го обновления. Действительно, все предыдущие обновления уже установлены ранее и после каждого обновления система уже проработала некоторое время.

Напомним, что при одновременной установке всех обновлений вероятность р

для любого I от единицы до N. Следовательно, при выполнении требования о работоспособности системы при установке любого из простых обновлений в составе полного обновления вероятность успешного исхода выше именно при последовательной, растянутой во времени установке обновлений. При одновременной установке сразу всех простых обновлений риск сбоя существенно возрастает.

Ограничения по времени обновления и их влияние на риск сбоя

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

Т(Ц) = Тс • N + 2 Т(и,), 1=1, ..., N, где Тс - время работы системы между соседними простыми обновлениями; N - количество простых обновлений и¡, составляющим и, а Т(и) - время установки 1-го обновления.

Если считать, что установка обновлений и, проводится во внерабочее время и (или) что время установки каждого и, мало по сравнению со временем Тс работы системы между простыми обновлениями, то время установки Т(и,) каждого 1-го простого обновления можно не учитывать и второе слагаемое в формуле опустить:

Т

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

Рассмотрим теперь ситуацию, когда время ограничено и необходимо уложиться в определенные рамки. В этом случае необходимо повлиять на время Т(Ц), т.е. сократить его. Согласно (2) это можно сделать двумя способами: уменьшая время работы системы Тс между простыми обновлениями и сокращая количество простых обновлений в составе полного.

Посмотрим, что будет происходить, если начнем сокращать время между соседними обновлениями. Для этого обратимся к рис. 1, 2, где изображены зависимости вероятности успеха установки обновления от времени, которое проработала система с момента установки. Из него следует, что вероятность успеха тем выше, чем больше времени прошло. Соответственно, при сокращении времени между обновлениями вероятность успеха каждого простого обновления снижается (рис. 3).

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

Р(и-к, ..., и,) = р(и-к) • р(и-к+1) ... р(и,).

Так как любая р(и) меньше единицы, то в соответствии с (1) можно сделать вывод, что вероятность успешной одновременной установки нескольких обновлений ниже вероятности установки каждого обновления отдельно.

Рассмотрев оба варианта сокращения времени, приходим к выводу, что сократить время установки обновления можно только за счет повышения риска сбоя системы. Повышенный риск, в свою очередь, может быть либо следствием сокращения времени работы системы между простыми обновлениями, либо следствием установки нескольких простых обновлений сразу (причем второй вариант сводится к первому, так как при этом время между этими обновлениями сокращается до нуля). На рис. 4 изображены оба варианта.

Рис. 3. Влияние сокращения времени между соседними обновлениями на их вероятности успеха

Рис. 4. Вероятность успеха при одновременной установке нескольких обновлений Тестирование предложенной методики

Для апробации предложенной методики было выбрано финансово-кредитное учреждение (ФКУ) с головным отделением в Санкт-Петербурге и филиалом в Москве. Особенностью выбранного ФКУ является большая нагрузка на московский филиал за счет сосредоточения в нем большей части сотрудников и клиентов. В каждом из офисов есть набор серверов, работающих под ОС Microsoft Windows 2003, в том числе сервер сетевой печати, который используется сотрудниками каждого из офисов.

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

На следующий день после окончания установки всех обновлений на рабочие серверы в офисе в Санкт-Петербурге все заявленные функции выполнялись корректно. По истечении недели после успешно проведенного обновления в Санкт-Петербургском офисе обновление провели в Московском филиале.

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

ОСНОВНЫЕ ПОЛОЖЕНИЯ КОНЦЕПЦИИ ОБЕСПЕЧЕНИЯ БЕЗОПАСНОСТИ ОБЪЕКТОВ

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

В дальнейшем причина такого поведения сервиса печати при установке данного обновления была установлена. Как было сказано в инструкции, прилагавшейся к данному обновлению, оно устраняло критическую проблему в системе безопасности и очень рекомендовалось к установке. В ходе более подробного изучения материалов из базы знаний Microsoft выяснилось, что данное обновление исправляло ошибку в одной из системных библиотек, которую использует в своей работе сервис печати. При этом изменилось значение по умолчанию одного из параметров, который влияет на обработку заданий на печать. Было установлено, что для корректного функционирования сервиса печати при том количестве принтеров и объеме документов, которые печатались в московском офисе, необходимо предварительно установить большее, чем по умолчанию, значение для данного параметра в конфигурации сервиса печати, а уже затем устанавливать данное обновление. В Санкт-Петербургском офисе проблема не проявилась, так как объем печати там существенно меньше и новое значение по умолчанию соответствовало нагрузке на сервис печати.

Заключение

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

Литература

1. IBM (1980). A Management System for the Information Business. White Plains. - New York: IBM.

2. Information Technology Infrastructure Library, Wikipedia [Электронный ресурс]. - Режим доступа: http://en.wikipedia.org/wiki/ITIL, свободный. Яз. англ. (дата обращения 19.02.2011).

3. COB IT, Wikipedia [Электронный ресурс]. - Режим доступа: http://en.wikipedia.org/wiki/COBIT#COBIT_and_ISO.2FIEC_27002:2007, свободный. Яз. англ. (дата обращения 19.02.2011).

4. Microsoft Operations Framework, Wikipedia [Электронный ресурс]. - Режим доступа: http://en.wikipedia.org/wiki/Microsoft_Operations_Framework, свободный. Яз. англ. (дата обращения 19.02.2011).

5. ISO/IEC 20000, Wikipedia [Электронный ресурс]. - Режим доступа: http://en.wikipedia.org/wiki/ISO/IEC_20000, свободный. Яз. англ. (дата обращения 19.02.2011).

Арустамов Сергей Аркадьевич - Санкт-Петербургский государственный университет информационных

технологий, механики и оптики, доктор технических наук, профессор, arustamov@gmail.com

Генин Михаил Геннадьевич - Санкт-Петербургский государственный университет информационных

технологий, механики и оптики, аспирант, gmg@rambler.ru

УДК 654.924

ОСНОВНЫЕ ПОЛОЖЕНИЯ КОНЦЕПЦИИ ОБЕСПЕЧЕНИЯ БЕЗОПАСНОСТИ

ОБЪЕКТОВ В.В. Волхонский

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

Введение

Одним из важнейших вопросов при построении системы безопасности (СБ) является разработка концепции обеспечения безопасности, определяющая все основные характеристики разрабатываемой СБ. В большинстве публикаций задача разработки такой концепции привязана либо к конкретному типу обо-