Как Можно Запретить Репликацию Но Оставить Печать И Клиборд Для Бд

Тема в разделе "Lotus - Программирование", создана пользователем mmm, 25 ноя 2011.

  1. mmm

    mmm Гость

    Доброе время суток

    Поставлена задача для решения:
    Имеется БД с 100.000 иерархическими документами (15Гб), которые содержат кучу вложений, и пользователи которые работают с данными. Хочется "примитивно" защитить данные от глобального копирования всех документов, убрав возможность копирования и репликации всей БД у пользователей, что бы не было возможности унести весь архив за 1 час используя репликацию БД. Забрать всю БД руками понадобится не один месяц рутиной работы и еще хранения этого богатства или газель распечатанной макулатуры. Поэтому если кто-то захочет выносить данные руками, то флаг им вруки: работа с аттачами, копирования текста в буфер и печать должна остаться. Ценность информации представляет полное иерархическое дерево документов (связи между ними), десятки заполненных полей документа и весь объем информации в целом, отдельно документы не несут конфиденциальности.
    Поэтому нужно убрать у пользователей только возможности:
    1. Копирование БД
    2. Копирование документов Лотуса в буфер обмена, что бы не перенести их в другую БД.
    3. Репликацию БД.
    При этом обязательно должны остаться опции работы с данными:
    1. Репликация БД для серверов и администратора
    2. Работа пользователей с аттачами файлов
    3. Копирования текста в буфер обмена и печать документов.

    Средства ACL запрещают все функциональности сразу, что блокирует нормальную работу с данными.
     
  2. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Эту часть сделать программно - например, для копирования в буфер обмена зделать кнопку "копировать поле в буфер обмена".
    Тоже самое для печати - кнопка "печать".

    Всё остальное через отключения галки "репликации" для пользователей
     
  3. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    795
    Симпатии:
    78
    Терминальный доступ к клиенту и БД в KIOSK режиме?

    Добавлено:
    ИМХО если есть доступ на чтение к документам - агент в локальной базе сольет всю иерархию...
     
  4. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    тырим раз:
    Код (Text):
        Set collection = megaDb.AllDocuments
    Dim doc As NotesDocument
    Set doc = collection.GetFirstDocument
    While Not doc Is Nothing
    Call doc.CopyToDatabase( stolenDb )
    Set doc = collection.GetNextDocument(doc)
    Wend
    тырим два:
    Код (Text):
        Set stream = session.CreateStream
    Call stream.Open("stolen.xml")
    Dim exporter As NotesDXLExporter
    Set exporter = session.CreateDXLExporter( megadb , stream )
    Call exporter.Process
    И не надо недооценивать пользователей :) Все зависит от мотивированности сотрудника стырить БД.
     
  5. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    так и скрытый дизайн можно открыть? методом 2?
     
  6. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    Нельзя. Грубо говоря, скрытый дизайн это хранение кода в скомпилированном виде. Без исходников.
     
  7. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    а разве это сработает при снятой галке "Репликейт ор копи документс" ?
    надо будет проверить
     
  8. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    да не суть. не сработает это - сработает
    Код (Text):
    forall item in doc.items
    call item.copyToDocument( ... _
    end forall
    суть в том, что указанную задачу нужно решать другими способами.
     
  9. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.074
    Симпатии:
    300
    можно задуматься над схемой:
    -у юзеров нет доступа на БД (только у "специальных")
    -кодом вытаскивается нужная инфа (по запросу и т.п.)
    -вытащить "всё" - запросов нет :)
    т.е. должна быть некая "интерфейсная" БД
     
  10. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Регистрация:
    5 сен 2006
    Сообщения:
    616
    Симпатии:
    4
    не сработает.. поэтому копиоллитемс рулит
     
  11. mmm

    mmm Гость

    Действительно, я проверил, написав локального агента за 5 минут (с 10 строками) с использованием call item.copyToDocument() я скопировал всю базу с помощью него, к которой у меня не было доступа копирования в ACL. База конечно получилась без дизайна, но сделать основных несколько форм с полями это еще + 30 минут работы. И пользуйся кто хочет. Таким образом можно даже получать каждый день ее обновления.
    Получается как-то грустно, неужели если БД лежит на сервере то никак нельзя защитить ее от полномасштабного копирования пользователям с ограниченными провами к ней???
     
  12. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    $keepPrivate не даст копировать документы в буфер обмена...

    А чтобы человек не слил агентом есть идея не устанавливать ему дизайнера, запретить создать файлик designer.exe в директории лотуса и директории ID'шника. Правда от разраба это не спасет, у них доступ все же должен быть.

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

    не совсем в тему:
    Утечка информации в более половине случаев это человеческий фактор. Людей надо проверять лучше и "кормить")
    И вообще это задача для сотрудника ИБ. Пусть найдет уязвимости и дальше скажет что закрыть, вот тогда и будете думать как лучше закрывать возможности.
     
  13. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    lmike
    да, тогда наиболее правильный вариант

    + ограничение на кол-во запросов от одного полльзователя
     
  14. mmm

    mmm Гость

    Смирился, от программиста возможность копирования всех доступных ему документов не удержать, можно только немного затруднить. Одна надежда что таких заинтересованных пользователей не появится ;)
    отличное поле, Спасибо
    заготовленную БД можно и принести извне
    При больших объемах есть большое подозрение что шифрованная БД может слишком долго обрабатывать запросы и виды
    Подскажите плз что это за ограничение и как его можно сделать?
     
  15. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    mmm
    Учти, что $keepPrivate так же убирает возможность послать документ на распечатку, а так же возможность копирования данных из полей.
     
  16. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    ЕМНИП, и печатать тоже.
     
  17. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    можно дать возможность копировать только определенным пользователям через роль или группу, что на мой взгляд более правильно.
    для этого $KeepPrivate можно сделать вычисляемым.

    Есть роль $KP =0. нет роли $KP=1, либо прописывать на PostOpen.

    Отключаем возможность использования носителей информации.
    Я говорил уже, что тут надо уязвимость по ИБ в целом проверить и исключать одно за другим.

    Про шифрование, к сожалению, знаю мало.
     
  18. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    КМК, лучше в QueryOpen
     
  19. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Разве работает?


    Добавлено: Проверил, не работает. Ни QO, ни PO, ни вычисляемое поле.
     
  20. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Сделал на PO:
    Call source.Document.ReplaceItemValue("$KeepPrivate","1")

    Поле прописалось.

    можно сделать так:

    macro = Evaluate({@IsMember("[CanCopy]";@UserRoles)})

    Call source.Document.ReplaceItemValue("$KeepPrivate",cstr(macro(0)))

    будет работать, значение текстовое должно быть
     
Загрузка...

Поделиться этой страницей