none
Microsoft Access 2013 — вопросы использования ЭЦП и ее работы в AccessRuntime RRS feed

  • Вопрос

  • Добрый день!

    В Access 2010 пользователю предлагается "упаковать решение" или "упаковать и подписать". Причем для использования последнего требуется сертификат подписи кода. До его появления мне казалось, что два этих пункта почти что равнозначны: первый упаковывает базу в инсталлятор, причем позволяет включить в состав дистрибутива AccessRuntime (бесплатное средство для работы с базой Access на ПК, где Access нет, текущая версия 2013), а второй делает то же самое, но еще и подписывает дистрибутив цифровым сертификатом.

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

    И мои первые вопросы на эту тему:

    1. Как избежать уведомлений безопасности при открытии базы данных в AccessRuntime, если использовать встроенный инсталлятор в Access по команде "Упаковать решение" (в редакции 2010)?

    2. Куда подевался пункт меню "Упаковать решение" в Access 2013?

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

    Далее...

    Я сгенерировал самоподписанный сертификат для использования пункта меню "Упаковать и подписать". Однако полагать, что подписав и упаковав базу данных, я в среде AccessRuntime смогу избавиться от уведомлений безопасности было наивно: после выполнение этой команды получается подписанный контейнер (accdc), открытие которого не вызывает у AccessRuntime вопросов, но единственное назначение контейнера — извлечь исходник, т.е. саму базу данных (accdb), которая, естественно, не может иметь цифровой подписи (в принципе, т.к. файл открывается для редактирования). 

    И снова получается актуальным вопрос:

    4. Как избежать уведомлений безопасности при открытии базы данных в AccessRuntime, если использовать пункт меню "Упаковать и подписать"?

    Далее...

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

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

    Возникли вопросы:

    5. Возможно ли заставить разделенные базы данных использовать относительные пути или заставить работать диспетчер связанных таблиц в AccessRuntime?

    Заранее благодарю за ответы!

    Надеюсь, они помогут мне решить вышеуказанные проблемы, которые мешают созданию и распространению программ на базе Access, т.к. в нынешних условиях ничто не мешает конечному пользователю "угнать" программу, переделав ее под себя и в дальнейшем самому ее распространять.

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

    Спасибо!

    • Изменено Eurisco 23 августа 2015 г. 8:54
    23 августа 2015 г. 8:44

Ответы

  • Давайте всё же по порядку.

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

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

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

    3. Для защиты, необходимо рассматривать специализированные программы, предназначенные именно для этой цели. Примером может служить, применение Службы IRM.


    Да, я Жук, три пары лапок и фасеточные глаза :))


    24 августа 2015 г. 10:57
    Модератор