Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 1609 сообщений
Cообщения с меткой

интеграция - Самое интересное в блогах

Следующие 30  »
rss_rss_hh_new

Как работает и что умеет «глубокая» интеграция «Битрикс24» и сервиса email-рассылок UniSender

Понедельник, 22 Августа 2016 г. 15:34 (ссылка)

Новая интеграция сервиса email-рассылок UniSender и «Битрикс24», разработанная компанией «Пинол», пока является единственной в маркетплейсе «Битрикс24», которая наследует права доступа сотрудников к базе контактов CRM.



imageТеперь руководитель может открывать доступ к приложению email-рассылок рядовым менеджерам, не опасаясь неразберихи и не подвергая дополнительному риску сохранность клиентской базы.



Поскольку интеграция учитывает настроенные в CRM права доступа сотрудников, каждый менеджер сможет делать рассылки только по «своим» лидам, контактам и компаниям, которые уже были закреплены за ним в CRM.



Интеграция также позволяет делать сегментацию контактов перед рассылкой.



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



Давайте посмотрим по шагам, как работает эта «глубокая» интеграция и какие возможности она открывает.



Приложение автоматически создаст эккаунт в сервисе рассылок



Интеграцию с UniSender можно установить и настроить за несколько минут. Приложение «Автоматическая рассылка Юнисендер из Битрикс24» находится в категории «рассылки» магазина приложений на сайте «Битрикс24».



В начале установки система спросит, зарегистрированы ли вы в UniSender, и если нет – создаст новый эккаунт автоматически. Чтобы завершить установку, нужно скопировать API-ключ из вашего кабинета UniSender в «Битрикс24».



Далее необходимо убедиться, что в «Битрикс24» правильно настроены доступы для роли «менеджер». С полномочиями администратора заходим в настройки доступа, выбираем роль «менеджер» и проверяем, чтобы по сущностям «Контакт», «Компания», «Сделка», «Лид», «Предложение» и «Счёт» для менеджера была установлена настройка «свои».



image



Приложение «подхватит» эти настройки, и ваши менеджеры смогут делать рассылки только по закреплённым за ними клиентам.



Всё, можно приступать к рассылкам. Чтобы протестировать работу приложения, сразу пополнять счёт не придётся, поскольку при регистрации новые пользователи получают 30 долларов на баланс в UniSender.



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



Отправка рассылки прямо из CRM



Пошаговый визард прямо в приложении проведёт вас по всем этапам составления и отправки письма.



image



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



После этого вы задаёте тему письма и выбираете, кому оно будет отправлено. И здесь вас ждёт приятный сюрприз: есть возможность гибко формировать список получателей рассылки – как по данным из CRM, так и на основе уже имеющихся списков в эккаунте UniSender.



Сегментация получателей рассылки по данным из CRM



При формировании списка получателей можно использовать фильтры по 4 сущностям в CRM:

• Лиды

• Компании

• Контакты

• Сотрудники



В закладке «Списки» будут видны списки получателей, хранящиеся в сервисе UniSender. Таким образом, для рассылок можно отбирать как тех получателей, данные которых есть в CRM, так и подписчиков из списков UniSender.



image



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



Для чего это может пригодиться?



Представьте, что турфирма хочет сделать рассылку с предложением по турам в Египет. Чтобы сделать рассылку более прицельной, можно, во-первых, отобрать тех, кто проявлял интерес именно к Египту. Если в рекламе по турам в Египет использовался отдельный лендинг, то по источнику лидов можно отфильтровать тех, кто оставлял заявки именно на это направление. И во-вторых, можно в письме предложить жителям разных городов – скажем, Москвы и Омска, — туры с вылетом из их города проживания. В письмо москвичам поставить тур с вылетом из Москвы, а для омичей – с вылетом из Омска.



Такая микросегментация улучшает результаты и повышает продажи. «У меня были рассылки, когда на 300 отправленных писем было 300 открытий», — рассказывает Алексей Окара, основатель компании «Пинол». – «Потому что мы очень тщательно отобрали получателей и отправили именно то предложение, которое их наверняка заинтересует».



Будем честны: 80% менеджеров ненавидят CRM из-за необходимости вносить множество данных в карточки клиентов. После того как менеджер увидит, насколько хорошо работают сегментированные рассылки, эта проблема уйдёт. Ему будет ясно, что данные по клиентам в CRM пригодятся для «тонкой нарезки» клиентской базы при подготовке рассылок. А письма по микросегментам обеспечат и лучшие продажи, и рост доходов менеджеров.


Алексей Окара, основатель компании-разработчика интеграции



Блочный редактор писем (drag-and-drop) открывается прямо из CRM



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



image



Готовый шаблон можно доработать в удобном блочном редакторе, который открывается прямо в CRM. Есть возможность менять оформление, задавать стили, редактировать изображения.



Прямо из редактора менеджер может нажатием кнопки «просмотр» увидеть, как письмо будет отображаться на десктопах и на мобильных устройствах. И если нужно, внести изменения. Адаптивность поддерживается.



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



А менеджеры уже прямо из CRM выбирают подходящий шаблон, вносят изменения в текст, ставят картинку нужного товара и делают рассылку по своим базам, не выходя из CRM. Удобно и быстро.



Контроль отписавшихся по единому списку



Для получателей рассылки, отобранных по фильтрам из CRM, в UniSender автоматически создаётся список на рассылку. Письма уходят через сервера и с IP-адресов UniSender. Инфраструктура сервиса настроена, чтобы обеспечить высокую доставляемость по России, Украине и странам СНГ.



Клиенты UniSender отправляют ежемесячно 460 млн писем, 99.4% из них доставляются адресатам. Контроль доставки рассылок и отсутствие спама обеспечивает антиспам-отдел из 3 человек.



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



Это снижает риск претензий со стороны отписавшихся. Как свидетельствует практика, судебные иски с последующими большими штрафами часто инициированы разъярёнными клиентами, которые несколько раз отписывались или просили отписать их адрес от рассылок, а письма от компании всё равно продолжали приходить. Этому причиной была «расстыковка» сервиса рассылок, в котором хранится информация об отписавшихся, и CRM, из которой менеджеры отправляли письма.



Теперь риск отправки писем отписавшимся сведён к минимуму. Если подписчик нажал ссылку «отписаться» в конце письма, UniSender сохранит его адрес в стоп-листе. И даже если менеджер заново введёт этот адрес в CRM с визитки клиента и включит его в рассылку, UniSender не допустит отправку письма.



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



Информация по доставке, открытиям и кликам по каждому контакту



По рассылкам, отправленным из CRM, доступна не только общая отчётность – какой процент получателей открыл письма и кликнул по ссылкам.



Менеджер в Живой ленте контакта видит, какое и когда письмо было отправлено, открыл ли его получатель и перешёл ли по ссылке. Это позволяет гибко вести дальнейшее общение с потенциальным покупателем в телефонной беседе. К примеру, если клиент прочитал письмо об акции, имеет смысл сразу переходить к вопросам о ней, а если нет – сперва рассказать о самой акции и предложении.



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



На очереди – автоматизация рассылок из CRM через бизнес-процессы



image«У нас на сайте pinall.ru действует форум пользователей. На вопросы по интеграции с UniSender отвечаю лично я, чтобы «держать руку на пульсе» и сразу вносить в план разработки то, что ещё важно для пользователей», – рассказывает Алексей Окара.



– Приложение появилось на маркетплейсе «Битрикс24» в конце июля. Сделано больше 350 установок, и мы за это время уже выпустили 3 новых релиза с обновлениями.



Мы ведём разработку в двух направлениях: во-первых, уже скоро будет поддерживаться сущность «Сделка» – это откроет огромные возможности для сегментации базы на основании совершённых покупок.



И во-вторых, мы работаем над расширенной автоматизацией рассылок через использование функциональности бизнес-процессов в «Битрикс24». Это даст, например, возможность сразу же активировать индивидуальные серии писем по новым лидам и многое другое.



Полезные ссылки



Приложение на сайте «Битрикс24»



Форум по интеграциям с CRM на сайте разработчика



Запись 4-часового вебинара с подробными советами по настройке:









Вопросы по настройке и работе приложения лучше задавать сразу на форуме.

А на вопросы, касающиеся UniSender, мы с удовольствием ответим здесь.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/308232/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Новые технологии CRM интеграции в 3CX v15

Воскресенье, 07 Августа 2016 г. 10:36 (ссылка)

Универсальная интеграция 3CX с любой CRM системой



Сегодня мы расскажем о том, как решить, пожалуй, самую актуальную проблему современной телефонии – интеграцию со сторонними информационными системами, прежде всего, CRM системами. Необходимо отметить, что сейчас существует много облачных сервисов телефонии, предлагающих, также, базовый функционал CRM. С другой стороны, многие производители CRM пытаются интегрировать базовые функции телефонии непосредственно в интерфейс пользователя. Также существуют готовые системы “два-в-одном”, в которых уже при проектировании закладывались коммуникационные возможности.



Одним словом, производители этих решений услышали требования пользователей и двигаются в правильном направлении. В целом, так оно и есть. Однако подход “два-в-одном” имеет ряд недостатков, самый главный из которых – неудовлетворительная гибкость. Согласитесь, создание функциональной системы объединенных коммуникаций и первоклассной CRM требует совершенно разных компетенций. В результате пользователь сталкивается либо с ограниченными коммуникационными возможностями, либо с бесполезной “обрезанной” CRM с неясными перспективами развития.



В системах, где CRM изначально объединена с телефонией, также существует ряд недостатков:




  • Зачастую пользователь не может подключить свое оборудование, особенно SIP шлюзы и транки от нужных ему операторов. Производитель CRM предоставляет собственные SIP транки с завышенными тарифами.

  • Стабильность работы телефонии в таких интегрированных системах часто вызывает нарекания, поскольку она не является основным направлением развития системы.

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

  • Функционал Очередей вызовов и колл-центра в целом очень ограничен. Причина та же – это не является основным приоритетом, т.к. приоритетов сразу много.

  • Ограниченная производительность и расширяемость телефонии.

  • Ограниченная работа в распределенных и многофилиальных сетях.

  • Спорное соотношение цена / возможности, особенно, в части возможностей.



Возможно, решение “все-в-одном” лишает компанию возможности выбора. Объединив коммуникации и CRM в одной системе, вы, фактически, навсегда остаетесь к ней привязаны, и будете вынуждены мириться со всеми ее недостатками. Ведь это две ключевые технологии вашего бизнеса. Народная мудрость гласит – не кладите все яйца в одну корзину! И еще один момент – как было сказано, весьма непросто одинаково качественно развивать совершенно разные технологии (телефонию и CRM) в одном продукте. Вряд ли компания сможет собрать в одной команде лучших VoIP и CRM разработчиков. А если и сможет, то стоимость готового продукта вам не понравится. В результате такого “объединенного” подхода вы получаете некоторые усредненные (или упрощенные) возможности как коммуникаций, так и CRM.



Сравните кофейный напиток 3-в-1 из пакетика и вкусно сваренный натуральный кофе любимого сорта, с нужным количеством хорошего молока и других, нравящихся именно вам, ингридиентов. Не лучше ли иметь гибкую телефонию от признанных профессионалов и, отдельно, максимально подходящую именно вам CRM?



3CX предлагает именно такой подход. Разработав недорогую и хорошо себя зарекомендовавшую платформу объединённых коммуникаций, мы сделали ее открытой для интеграции с любой информационной системой – по стандартным API!    



Если вы хотите интегрировать нужную вам CRM с 3CX v15, прежде всего, обратите внимание на список уже поддерживаемых CRM. Если 3CX CRM интеграция не реализована для вашей системы, вы можете быстро и просто создать собственный плагин интеграции, используя шаблон 3CX Visual Studio Plugin Template. Этот шаблон сгенерирует весь необходимый код интеграции.



Если у вас нет разработчика, заполните форму запроса на разработку CRM интеграции на нашем сайте, и мы рассмотрим возможность реализации интеграции нашими ресурсами.



Шаблон 3CX Visual Studio Plugin Template включает мастер настройки, в котором указывается тип аутентификации, тип веб сервиса и URL, необходимые для разработки плагина. После указания этих параметров, мастер настройки сгенерирует код интеграции. Вы можете использовать код интеграции с минимальными изменениями для подключения к вашей CRM.



Шаблон поддерживает следующие типы аутентификации:





Поддерживаются следующие API веб сервиса CRM системы:




  • REST

  • SOAP



Весь процесс создания плагина занимает менее одного рабочего дня!




  • Подробная инструкция по созданию плагина находится здесь.

  • Обсудить вопросы интеграции и автоматизации можно на специальном форуме.



Интеграция 3CX Phone System Pro с системой поддержки пользователей Freshdesk CRM и Nutshell CRM



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



И теперь мы представляем новые плагины интеграции 3CX Phone System Pro с системой поддержки пользователей Freshdesk CRM и Nutshell CRM.

Плагины реализуют следующие возможности:




  • Click to Call – звонки по клику на номере клиента в CRM. Звонки выполняет 3CX Client или поддерживаемый IP телефон

  • Call Pop-up – карточка клиента в CRM автоматически открывается при входящем вызове

  • Если номер звонящего абонента не обнаружен, система создает новый контакт в CRM

  • Call Journal – все вызовы фиксируются в журнале вызовов CRM



Новые плагины расположены в разделе Обновления интерфейса управления 3CX. Интеграция включается индивидуально для каждого пользователя.









Также рекомендуем ознакомиться со списком других CRM систем, для которых интеграция уже реализована.



Важно: CRM интеграция реализована только в редакции 3CX Phone System Professional!
Original source: habrahabr.ru.

https://habrahabr.ru/post/307270/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

[Перевод] Тестирование интеграции продукта на скорости Netflix

Среда, 27 Июля 2016 г. 21:12 (ссылка)

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



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



Быстрый ввод новых разработок при необходимости обеспечении требуемого качества создаёт интересные задачи для нашей команды. В настоящей статье мы рассмотрим три такие задачи:



1. Тестирование и мониторинг высокорейтинговых показов (High Impact Title = HIT = хит)

2. A/B-тестирование

3. Глобальный запуск



Тестирование и мониторинг высокорейтинговых показов



Имеется множество высокорейтинговых показов — как, например, телесериал «Оранжевый — хит сезона», которые регулярно появляются на Netflix. Форма и размер этих показов — самые разные. Некоторые являются сериалами, некоторые — отдельными картинами; есть ориентированные только на детей; какие-то выстреливают все серии сезона сразу, а другие выпускают по несколько серий каждую неделю. Часть этих показов запускается со сложными A/B-тестами, в которых каждый элемент теста имеет различное взаимодействие с участником.



Эти показы имеют высокую популярность у наших участников и поэтому должны подвергаться всесторонней проверке. Тестирование начинается за несколько недель до запуска и идёт с нарастанием до самого запуска. После запуска мы отслеживаем эти показы на разных аппаратных платформах во всех странах.



Стратегия тестирования зависит от её фазы. На разных фазах действует разная стратегия продвижения, что делает задачу тестирования/автоматизации довольно сложной. В основном, можно выделить две фазы:



1. До запуска показа. До запуска необходимо обеспечить нахождение метаданных показа в требуемом месте, чтобы в день запуска всё прошло безукоризненно. Поскольку в запуске хита участвует множество групп (команд), то необходимо убедиться, что стыковка всех внутренних (серверных) систем друг с другом и с клиентской частью пользовательского интерфейса происходит безупречно. Продвижение показа осуществляется через Spotlight (большое окно, похожее на доску объявлений, в верхней части главной страницы Netflix), через тизеры и трейлеры. Но поскольку на каждом уровне Netflix имеется персонализация, то необходимо создавать сложные тестовые наборы, чтобы обеспечить соответствие типа показа профилю участника. Поскольку система постоянно изменяется, то автоматизация становится трудной. Основное тестирование на этой фазе происходит вручную.



2. После запуска показа. Наша работа не заканчивается в день запуска. Мы должны постоянно контролировать запущенные показы, чтобы ни в коем случае не допустить ухудшения взаимодействия с участником. Показ становится частью расширенного каталога Netflix, и это само по себе создаёт проблему. Мы должны теперь написать тесты, проверяющие, продолжает ли показ находить свою аудиторию согласованным образом и сохраняется ли целостность данных у этого показа (например, некоторые проверки выясняют, не изменилось ли общее количество серий после запуска; другая проверка контролирует, продолжают ли результаты поиска возвращать показ в надлежащие поисковые строки). Но, имея 600 часов оригинального программирования на Netflix, идущего онлайн только в этом году, дополнительно к лицензированному контенту, мы не можем положиться здесь на ручное тестирование. Также, когда показ запущен, существуют общие предположения, которые мы можем сделать о нём, поскольку данные для этого показа и логика продвижения не будут меняться — например, количество серий больше 0 для ТВ-выпусков, показ доступен для поиска (действительно как для кинофильмов, так и для ТВ-выпусков) и т.д. Это позволяет нам автоматически мониторить, продолжают ли те или иные операции, связанные с каждым показом, работать правильно.



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



A/B-тестирование



Мы осуществляем множество A/B-тестов. В каждый момент времени работает много A/B-тестов с различным уровнем сложности.



В прошлом основная часть проверки в A/B-тестах представляла собой комбинацию автоматизированного и ручного тестирования: автоматика использовалась для индивидуальных компонентов (тестирование методом белого ящика), а сквозное тестирование (тестирование методом чёрного ящика) происходило, большей частью, вручную. Когда объём A/B-тестов у нас заметно увеличился, оказалось невозможным вручную осуществлять все требуемые сквозные тесты, и мы начали наращивать автоматизацию.



Одной из главных проблем при введении сквозной автоматизации A/B-тестов стало огромное количество компонентов, подлежащих автоматической обработке. Наш подход состоял в рассмотрении автоматизации тестирования как поставляемого продукта и в сосредоточенности на поставке продукта с минимальным функционалом (minimum viable product = MVP), состоящего из частей, допускающих многократное использование. Нашим требованием к MVP было обеспечение подтверждения базового взаимодействия с участником путём проверки правильности данных от конечных REST-точек различных микросервисов. Это давало нам возможность итерационно двигаться к решению вместо поиска наилучшего решения сразу при старте.







Существенной отправной точкой для нас было создание общей библиотеки, обеспечивающей возможность многократного использования и переназначения модулей для любого автоматизированного теста. Например, у нас был A/B-тест, модифицировавший «Мой список» участника, — при его автоматизации мы написали скрипт, добавлявший показ(ы) в «Мой список» участника или удалявший показ(ы) из этого списка. Эти скрипты были спараметрированы так, чтобы их можно было многократно использовать в любом будущем A/B-тесте, имевшем дело с «Моим списком». Такой подход позволил нам быстрее автоматизировать A/B-тесты благодаря большему количеству многократно используемых компоновочных блоков. Эффективность работы была повышена путём максимально возможного применения уже существующей автоматизации. Например, вместо написания нашей собственной программы автоматизации пользовательского интерфейса мы смогли использовать Netflix Test Studio для переключения между сценариями тестирования, требующими действий со стороны пользовательского интерфейса для различных устройств.



При выборе языка/платформы для внедрения нашей автоматизации мы исходили из необходимости обеспечения быстрой обратной связи для команд разработчиков продукта. Это требовало действительно быстрой работы тестового комплекса — выполнения буквально за секунды. Мы также стремились сделать наши тесты как можно более лёгкими для внедрения и распространения. Имея в виду эти два требования, мы отказались от нашего первого выбора — Java. Наши тесты оказались бы зависимыми от использования множества взаимосвязанных jar-файлов, и пришлось бы заниматься управлением зависимостями, контролем версий, будучи подверженными воздействиям изменений в различных версиях файлового формата JAR. Всё это значительно увеличило бы длительность тестов.



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







Такой подход имеет несколько положительных моментов:



1. Мы смогли получить длительность теста (включая время на установку и отсоединение) 4-90 секунд; медиана времени работы — 40 секунд. При использовании автоматизации на базе Java медиана времени работы оценочно могла бы быть 5-6 минут.

2. Непрерывная интеграция была упрощена. Всё, что нам требовалось, это система Jenkins Job, которая осуществляет нисходящую загрузку из нашего репозитария, выполняет требуемые скрипты и регистрирует результаты. Встроенный в Jenkins консольный анализ записей оказался достаточным для получения статистики тест «прошёл / не прошёл».

3. Лёгкий запуск. Чтобы сторонний специалист запустил наш тестовый комплекс, требуется только доступ к нашему гит-репозитарию и терминал.



Глобальный запуск



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



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



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



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







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



Проблемы будущего



Темп введения нового не замедляется на Netflix — он только растёт. Поэтому наш продукт автоматизации продолжает развиваться. Вот некоторые из проектов на нашей дорожной карте:



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



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



3. Учёт беспорядка. Наши тесты в настоящее время предполагают, что среда Netflix функционирует на 100%, но такое не всегда имеет место. Команда специалистов по надёжности постоянно выполняет испытания на разупорядоченность, чтобы тестировать полную целостность системы. В настоящее время результаты автоматизации тестирования в деградировавшей среде показывают интенсивность отказов более 90%. Мы должны улучшить нашу автоматизацию тестирования, чтобы обеспечить соответствующие результаты при работе в деградировавшей среде.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/306460/

Комментарии (0)КомментироватьВ цитатник или сообщество
SoftLabirint

Станьте супер-пользователем MindManager (2015) Видеокурс » SoftLabirint.Ru: Скачать бесплатно и без регистрации - Самые Популярные Новости Интернета

Вторник, 26 Июля 2016 г. 17:32 (ссылка)
softlabirint.ru/video/video...okurs.html


Станьте супер-пользователем MindManager (2015) Видеокурс

Это самая мощная коллекция ресурсов к MindManager, которую вы можете найти на просторах Интернета (не только Рунета!).

Коллекция сопровождается вебинароми, на котором рассказывается, как ее использовать. + 12 вебинаров обучения по программе MindManager.



Что входит в эту коллекцию:



12 вебинаров.

01. Знакомство с MindManager, Работа с информацией

02. Ускорение работы в MindManager

03. Мозговой штурм в MindManager

04. Управление проектами в MindManager

05. Презентации в MindManager

06. Интеграция Word с MindManager

07. Интеграция Excel с MindManager

08. Интеграция Outlook с MindManager

09. Описание бизнес процессов в MindManager

10. Совместная и удаленная работа в MindManager

11. Работа с формулами в MindManager

12. Нужные надстройки для MindManager



Коллекция карт

-Пакет карт по управлению проектами. 36 карт с руководством по использованию.

-Еще один пакет по управлению проектами. 70 карт и Excel-шаблонов. Руководство по использованию.

-Конспект GTD в картах + книга об этой мощной методике по управлению своими делами в очень удобном формате.

-Пакет карт для встреч, совещаний, собраний. Всего 10 карт.

-78 русских карт по разной тематике. Примеры на самые разные случаи для жизни, учебы, бизнеса.

-44 английские карты. Естественно, отобраны самые лучшие. Масса идей по оформлению карт и пр.



Коллекция картинок и иконок

-Более 1000 картинок, организованных по папкам.

-Более 800 иконок. Отберите нужные вам и добавьте их в Библиотеку MindManager.

-Формы для топиков.



Коллекция Макросов

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

-17 мощных макросов, работающих в системе "Телепат". Что за система? Суперская — вы можете не только общаться с MindManager через команды с русскими словами, но и легко обучать его новым нужным вам словам. К примеру, вы пишите: "купить завтра скрепки! Поручить НП". И у вас не просто создается топик, а на нем моментально и автоматически появляется иконка доллара (купить), иконка воскл. знака (поскольку он есть в тексте, а это указывает на срочность), на топик ставится дата выполнения — завтра, и назначается ресурс Николай Пушкарев (потому что в конфиг-карте Телепата у вас Николай Пушкарев закодирован словом НП). С помощью макросов этой системы вы можете очень быстро открывать карты, документы, веб-страницы по ключевым словам, которые вам удобны. Можете отправлять данные сразу в нужные карты. Обрабатывать топики с помощью простых слов (не тратя время на выискивание нужных иконок, тегов и ресурсов). И многое-многое другое!

-Карта, в которой подробно и четко объясняется работа каждого макроса системы Телепат.

-Куча "заготовок", которые пригодятся для тех, кто хочет сам писать макросы для MindManager. Плюс руководство по написанию макросов.

-Система Виктора Ткачук из 9 макросов, которые автоматизируют управление вашими делами.



Документы и ссылки

-12 документов, касающихся MindManager. В том числе бизнес-кейсы.

 



Станьте супер-пользователем MindManager (2015) Видеокурс



Станьте супер-пользователем MindManager (2015) Видеокурс



Станьте супер-пользователем MindManager (2015) Видеокурс






Информация о видеокурсе

Название: Станьте супер-пользователем MindManager

Автор: Дудкин Сергей

Год выхода: 2015

Жанр: Видеокурс

Язык: Русский

Выпущено: Россия

Продолжительность: ~20 часов



Файл

Формат: MP4 (+ доп. материалы)

Видео: AVC, 1180x720, ~116 Kbps

Аудио: AAC, 53 Kbps, 48.0 KHz

Размер: 1.97 Gb



Скачать: Станьте супер-пользователем MindManager (2015) Видеокурс >>>



 



Подписка на новости сайта…

http://feeds.feedburner.com/Soft-Labirint

http://feeds.feedburner.com/Soft-Labirint?format=xml

https://feedburner.google.com/fb/a/mailverify?uri=Soft-Labirint

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
kiev2376393

Facebook анонсировал интеграцию с MSQRD и другие нововведения в Live

Вторник, 29 Июня 2016 г. 02:00 (ссылка)

На конференции VidCon Facebook анонсировал три крупных нововведения в сервисе Live. В их числе – возможность запланировать трансляцию, проводить совместные трансляции и интеграция с MSQRD.

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

«Разрубить Гордиев узел» или преодоление проблем шифрования информации в ОС Windows

Пятница, 24 Июня 2016 г. 13:02 (ссылка)

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



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

В данной статье будут раскрыты идеи эффективной интеграции средства шифрования информации на диске с процессами файловой системы ОС Windows.

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

Изначально была поставлена задача предоставлять одновременный доступ к зашифрованному и расшифрованному содержимому, а также шифровать имена файлов. Это и порождает основные сложности, т.к. такое требование идет в разрез со сложившейся архитектурой Windows. Чтобы понять суть проблемы, для начала нам следует разобрать некоторые основные моменты данной операционной системы.

В Windows все файловые системы полагаются на такие подсистемы, как менеджер памяти и кэш менеджер, а менеджер памяти, в свою очередь, полагается на файловые системы. Казалось бы, замкнутый круг, но все станет ясно дальше. Ниже, на рисунке 1, изображены перечисленные компоненты, а также менеджер ввода/вывода, который принимает запросы от подсистем (например Win32) и от других драйверов системы. Также на рисунке используются термины «фильтр» и «стек файловой системы», о чем подробнее будет рассказано ниже.



Рисунок 1





Разберем такой механизм, как отображение файла на память. Суть его заключается в том, что при доступе к виртуальной памяти в реальности читается часть файла. Реализуется это при помощи аппаратных механизмов процессоров и непосредственно самого менеджера памяти. Любые диапазоны виртуальной памяти процесса описываются дескрипторами. Если для какого-то диапазона нет дескриптора, значит, на этом участке виртуальной памяти ничего нет, и доступ к такому диапазону неизбежно ведет к краху процесса. В случае, если для какого-либо диапазона закреплена физическая память, доступ к этим виртуальным адресам ведет к обычному доступу к физической памяти, такую память еще называют анонимной. В случае, если файл отображен на виртуальную память, то при доступе по этим адресам считывается часть файла с диска в физическую память, после чего доступ к ней будет выполняться обычным образом. Т.е. эти два случая очень похожи, разница лишь в том, что для последнего в соответствующую физическую память предварительно будет считана часть файла. Обо всех таких типах доступов дескриптор и содержит информацию. Эти дескрипторы являются структурами менеджера памяти, которыми он управляет для того, чтобы выполнять требуемые задачи. Как не трудно догадаться, для того, чтобы считать часть файла в страницу физической памяти, менеджер памяти должен послать запрос файловой системе. На рисунке 2 изображен пример виртуальной памяти процесса с двумя диапазонами, А и В, доступ к которым еще ни разу не выполнялся.



Рисунок 2





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



Рисунок 3





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

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



Рисунок 4





Как показано на рисунке выше, процесс выполняет чтение файла в буфер В. Чтобы выполнить чтение, процесс обращается к менеджеру ввода/вывода, который формирует и посылает запрос файловой системе. Файловая система, получив запрос, не считывает файл с диска, а вызывает кэш менеджер. Далее кэш менеджер оценивает, отображен ли файл на его виртуальную память, и если нет, то он вызывает менеджер памяти для того чтобы отобразить файл/часть файла. В данном примере файл уже отображен, а доступ к нему ни разу не выполнялся. Далее кэш менеджер копирует в буфер В процесса файл, отображенный на диапазон виртуальной памяти А. Поскольку доступ к диапазону А выполняется первый раз, управление получит менеджер памяти, затем он оценит диапазон, и, поскольку это отображенный на память файл, считает его часть в физическую память, после чего отобразит ее на диапазон виртуальной памяти А. После этого, как уже было описано ранее, доступ к диапазону А будет выполняться, минуя менеджер памяти.

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



Рисунок 5





Как видно из рисунка выше, физическая память отображается на виртуальную память процесса В и виртуальную память кэш менеджера. Когда процесс А будет выполнять чтение файла в буфер D, он обратится к менеджеру ввода/вывода, который сформирует и пошлет запрос файловой системе. Файловая система, в свою очередь, обратится к кэш менеджеру, который просто скопирует файл, отображенный на диапазон виртуальной памяти С кэш менеджера, в буфер D процесса А. Поскольку в момент обращения к кэш менеджеру файл уже был не только отображен, но и ранее выполнялся доступ к диапазону С, на которую отображен файл, то операция будет выполнена без участия менеджера памяти. Процесс В при чтении/записи диапазона Е по сути получит доступ к тем же самым физическим страницам памяти, к котором при копировании файла получал доступ кэш менеджер.

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



Рисунок 6





На рисунке процесс А открыл файл С и файл D, а процесс B открыл файл С два раза. Таким образом, имеется три открытых экземпляра файла С, когда структура, сформированная файловой системой, всего одна. Файл D был открыт один раз, следовательно, имеется один открытый экземпляр, которому соответствует структура, сформированная файловой системой.

Любые запросы, направленные к файловой системе, не сразу обрабатываются ею. Запросы сначала проходят по цепочке драйверов, которые желают отслеживать такие запросы. Такие драйвера называют фильтрами. Они имеют возможность просматривать запросы до того, как они достигнут файловой системы, а также после того, как файловая система обработает их. Например, фильтр шифрования файлов может отслеживать запросы чтения/записи для того, чтобы расшифровать/зашифровать данные. Таким образом, не дорабатывая сами файловые системы, мы можем зашифровать данные файла. Фильтры могут привязывать свои уникальные данные к структурам файлов, которые формирует файловая система. Вместе драйвера фильтров и драйвер файловой системы формируют стек файловой системы. Количество фильтров может быть разным, также могут быть разными и сами фильтры. Теоретически их может и не быть совсем, но практически так не бывает. На рисунке 7 изображен стек файловой системы, в состав которого входят три фильтра.



Рисунок 7





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

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

На рисунке 8 изображена ситуация, когда файл ранее был открыт расшифрованным.



Рисунок 8





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

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



Рисунок 9





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



Рисунок 10





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

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

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



Рисунок 11





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

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



Рисунок 12





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

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



Рисунок 13





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



Рисунок 14





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



Рисунок 15





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

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

При разработке виртуальной файловой системы приходилось сталкиваться с необычными проблемами. Отчасти это вызвано тем, что мы работаем с файлами файловых систем, когда обычные файловые системы работают с диском. Так, например, была найдена ошибка в файловой системе NTFS. Проявлялась она в том, что доступ к файлу X:\$mft\<любое имя> приводил к повисанию всего доступа к диску X. В результате исследования было установлено, что NTFS не освобождала механизмы синхронизации для файла $mft, который является перечислителем всех файлов диска. И соответственно, чтобы найти какой-либо файл на диске, сначала нужно прочитать $mft файл, доступ к которому повис. Другой пример, который нельзя назвать необычным, это найденная ошибка в ядре Windows 8, в результате которой менеджер памяти полагает, что структуры памяти файла всегда последней версии. Из-за этого он пытается использовать некоторые части этой структуры, которых в действительности может не быть. И это приводило к BSOD.

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

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

Надо отметить, что данный подход по обеспечению «прозрачности» шифрования файлов в ОС Windows успешно реализован в корпоративном продукте Secret Disk Enterprise («Аладдин Р.Д.»), который применяется многими организациями в России. Это в свою очередь доказывает жизнеспособность и перспективность применения данной идеи в процессе создания программ шифрования файлов на диске.

В качестве заключения стоит отметить, что технологическая сложность файловой системы ОС Windows и отсутствие стандартных механизмов решения задач, подобных описываемой в данной статье, будут всегда являться препятствием создания удобных и простых программ, обеспечивающих защиту информации. В таком случае единственным верным решением является самостоятельная реализация оригинального механизма, позволяющего обойти данные ограничения без потери функциональности ПО.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/304024/

Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

«Разрубить Гордиев узел» или преодоление проблем шифрования информации в ОС Windows

Пятница, 24 Июня 2016 г. 12:54 (ссылка)

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

Читать дальше →

https://habrahabr.ru/post/304018/

Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<интеграция - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda