Проектируется каталог документов, он предназначен в первую очередь для просмотра различной управленческой документации, правка этой документации является второстепенной задачей и будет выполняться узким кругом лиц.
Необходимо ограничивать доступ пользователей к различным документам, количество документов большое, они относительно легко группируются по различным категориям и подкатегориям, причём некоторые документы подпадают под множество категорий.
Уже работает система авторизации, существуют пользователи и дерево групп, так что с этой стороны всё нормально.
Как организовать управление доступом к документам?
Мы пошли следующим путём:
Создали дерево папок, которое представляет собой структуру документации. Считается, что документы, расположенные в одной папке, принадлежат к одной категории и управлять доступом непосредственно к документам не нужно.
Поскольку каждый документ может располагаться в нескольких папках, создали связи между документом и папкой (папками).
Создали систему разрешений на папки: ID пользователя/группы, ID папки, биты дотустимых операций. Разрешения наследуются подпапками, различные разрешения на одну и ту же папку для одного и того же пользователя суммируются.
Выделили возможные разрешения:
— на просмотр структуры папки без возможности читать документы;
— + возможность читать документы;
— + возможность создавать/удалять/изменять связи между документами и этой папкой;
— + возможность изменения структуры папок и назначения разрешений (администрирование папки).
Предположили, что если пользователь имеет разрешение на папку, в котором указано, что он может просматривать файлики, лежащие в этой папке, то он может просматривать эти файлики)
В принципе всё просто, но тут вмешался заказчик с требованием, чтобы после того, как документ был опубликован в какой-нибудь папке, можно было в любой момент прекратить к документу доступ.
При этом он по-прежнему хочет, чтобы документ мог располагаться в нескольких папках, чтобы было множество администраторов каталога, которые отвечают за свои папки и ещё больше людей, которые публикуют эти документы в эти папки.
Было предложены 2 варианта:
1: тот, кто вносит документ в каталог сам определяет тех, кто может его просматривать
2: предположить, что документ может располагаться только в одной папке и создавать ярлыки на этот документ в других папках (да, это несколько конфлитует с первоначальной идеей, но что делать?).
Подскажите, может мы что-то упустили?
Любые идеи, советы, предложения по теме приветствуются.
Да, идея приобретения 1С: архив или чего-нибудь подобного обдумывалась, проблема в том, что уже реализовано несколько тесно связанных ИС, которые используют общие данные о людях и должностях, систему авторизации, обновлятор и управлятор и прилепливать к рабочей системе сторонний продукт, да ещё и интегрироваться с ним...
Здравствуйте, Sinix, Вы писали:
S>При этом он по-прежнему хочет, чтобы документ мог располагаться в нескольких папках, чтобы было множество администраторов каталога, которые отвечают за свои папки и ещё больше людей, которые публикуют эти документы в эти папки.
документам присваивать тэги
и хранить документы в субд
Здравствуйте, Sinix, Вы писали:
S>Проектируется каталог документов, он предназначен в первую очередь для просмотра различной управленческой документации, правка этой документации является второстепенной задачей и будет выполняться узким кругом лиц.
Привет!
Мы занимаемся созданием подобного продукта, и озвученные мысли во многом близки (через такую стадию мы прошли ).
Рекламой заниматься не хочу и в моём профиле данного продукта нет — буду общаться как разработчик, а не продавец.
Сразу скажу, что от разграничения доступа на основе папок мы в результате отказались и пришли к концепции ACL — Access Control List на каждом документе. В ACL перечислены права пользователей и групп пользователей, имеющих доступ к данному документу. Не перечисленные в списке субъекты о существовании документа даже не догадываются.
Именно этот подход сочетает удобство назначения прав (об этом позже) с гранулярностью доступа с точностью до одного пользователя и одного документа.
S>Необходимо ограничивать доступ пользователей к различным документам, количество документов большое, они относительно легко группируются по различным категориям и подкатегориям, причём некоторые документы подпадают под множество категорий.
Насколько большим предполагается количество документов? Наша система поддерживает сотни тысяч и миллионы документов, и всё вышеперечисленное поддерживается. Если есть опасения в том, что ACL займет "миллионы документов умножить на тысячи юзеров", то, как правило, это не так. В типичном списке доступа обычно не более 5-10 записей (чаще — одна или две). Дело в том, что большие количества юзеров всегда можно обобщить с точки зрения критериев доступа, и такие обобщения хорошо проецируются на концепцию групп пользователей. Обычно доступом удобнее рулить на основе групп, но при желании всегда можно создать "персональную" зону доступа, включив в ACL только одного владельца.
S>Уже работает система авторизации, существуют пользователи и дерево групп, так что с этой стороны всё нормально.
Если не работает ключевое требование заказчика — значит, не всё нормально
S>Как организовать управление доступом к документам? S>Мы пошли следующим путём:
S>Создали дерево папок, которое представляет собой структуру документации. Считается, что документы, расположенные в одной папке, принадлежат к одной категории и управлять доступом непосредственно к документам не нужно. S>Поскольку каждый документ может располагаться в нескольких папках, создали связи между документом и папкой (папками). S>Создали систему разрешений на папки: ID пользователя/группы, ID папки, биты дотустимых операций. Разрешения наследуются подпапками, различные разрешения на одну и ту же папку для одного и того же пользователя суммируются.
В нашей системе связи между папками и правами доступа нет, но при желании она устанавливается вычислением. То есть админ берет все документы папки и даёт команду "предоставить доступ имярек Петрову и группе Бухгалтерия". В таком случае, у затронутых файлов модифицируется ACL.
S>В принципе всё просто, но тут вмешался заказчик с требованием, чтобы после того, как документ был опубликован в какой-нибудь папке, можно было в любой момент прекратить к документу доступ.
Вот тут-то собака и зарыта! Я не представляю себе механизма на основе папок, реализующего такое требование.
Подумайте (если уж совсем переходить на ACL не хочется) о введении "запретительного" ACL в документе. Тогда доступ будет вычисляться как прежде, но с добавлением условия "и если этого товарища/группы нет в списке запрета". Тогда прекращение доступа будет сводиться к добавлению в этот список всех, кроме владельца.
S>При этом он по-прежнему хочет, чтобы документ мог располагаться в нескольких папках, чтобы было множество администраторов каталога, которые отвечают за свои папки и ещё больше людей, которые публикуют эти документы в эти папки.
S>Было предложены 2 варианта: S>1: тот, кто вносит документ в каталог сам определяет тех, кто может его просматривать
У нас для облегчения регистрации введено понятие "групп документов". Это не значит, что они имеют какое-то влияние на доступ к существующим документам, просто на них определены стартовые списки доступа. При создании документа его регистратор выбирает группу, и, таким образом, определяет первоначальные права.
S>Подскажите, может мы что-то упустили? S>Любые идеи, советы, предложения по теме приветствуются. S>Да, идея приобретения 1С: архив или чего-нибудь подобного обдумывалась, проблема в том, что уже реализовано несколько тесно связанных ИС, которые используют общие данные о людях и должностях, систему авторизации, обновлятор и управлятор и прилепливать к рабочей системе сторонний продукт, да ещё и интегрироваться с ним...
Это вы зря (я не об Архиве, он, вроде, продукт довольно слабенький) — разработка такого масштабного продукта в любом случае отнимет море времени и сил. На этом рынке существует множество решений. Интегрироваться в любом случае придется, будьте к этому готовы .
Здравствуйте, retalik, Вы писали:
R>Здравствуйте, Sinix, Вы писали:
S>>Проектируется каталог документов, он предназначен в первую очередь для просмотра различной управленческой документации, правка этой документации является второстепенной задачей и будет выполняться узким кругом лиц.
R>Привет! R>Мы занимаемся созданием подобного продукта, и озвученные мысли во многом близки (через такую стадию мы прошли ).
О как! Я уже третий Правда, моя разработка уже крутится в вебе
<< Грустно, когда идешь на кладбище. И уж особенно грустно — когда там остаешься. >>
Здравствуйте, retalik, Вы писали:
R>Вот тут-то собака и зарыта! Я не представляю себе механизма на основе папок, реализующего такое требование.
R>Подумайте (если уж совсем переходить на ACL не хочется) о введении "запретительного" ACL в документе. Тогда доступ будет вычисляться как прежде, но с добавлением условия "и если этого товарища/группы нет в списке запрета".
Этот подход реализован в системе безопасности NT. У них реализован механизм наследования прав — в данном случае, файлы наследуют права от каталога. Есть возможность прервать цепочку наследований (т.е. владелец файла/вложенного каталога может отказаться наследовать настройки родителя). Ну и дополнять, конечно, тоже можно.
R>Тогда прекращение доступа будет сводиться к добавлению в этот список всех, кроме владельца.
Если смотреть NT, то:
— там можно запретить всем — владелец имеет доступ к своему объекту при любом раскладе, правда, не самым естественным образом. Пока он является Owner-ом, он всегда может открыть объект с флагом WRITE_DACL и настроить ACL так, как нужно.
— но и не надо этого делать Запрещающие ACL предназначены для "исключения из правил". Например, документ "Как будем поздравлять Иванова?" должны видеть все, кроме самого Иванова. В этом случае доступ разрешается всем и запрещается Иванову, запрет имеет больший приоритет. А если нужно действительно запретить всем, достаточно удалить _разрешающие_ ACL. Если они унаследованы от родителя — отказаться от наследства.
Через вашу стадию мы тоже прошли) Дело в том, что есть структура документации, которая чётко определяется. Т.е. разрешения ДОЛЖНЫ определяться положением файла. И было бы странным, что, перетащив файл в папку "для всех" мы должны ещё и назначать на него разрешения. Проблема не в производительности, а
в управлении большим числом документов.
R>У нас для облегчения регистрации введено понятие "групп документов". Это не значит, что они имеют какое-то влияние на доступ к существующим документам, просто на них определены стартовые списки доступа. При создании документа его регистратор выбирает группу, и, таким образом, определяет первоначальные права.
Сложно судить но, имхо, это у вас аналог пресетов для назначения разрешений? т.е. ACL с них копируется на документ?
В любом случае спасибо, чуть попожже попробую поотвечать ещё.
Здравствуйте, Sinix, Вы писали:
S>Дело в том, что есть структура документации, которая чётко определяется. Т.е. разрешения ДОЛЖНЫ определяться положением файла. И было бы странным, что, перетащив файл в папку "для всех" мы должны ещё и назначать на него разрешения. Проблема не в производительности, а
А как это требование сочетается с упомянутым требованием возможности запрета доступа для любого документа (даже находящегося в разных доступных папках)?
И второй вопрос — допустим, вы как-то реализуете это требование. А что будет с таким документом, если его затем поместят в доступную папку?
И ещё одно соображение. Доступ на основе папок хорош, пока не начинается движение документов. Например, начальник отдела отправляет документ подчиненному для исполнения. Нужно обеспечить, чтобы подчиненный увидел этот документ (а те, кому "не положено" — по прежнему его не видели бы). В системе с ACL при этом достаточно добавить в список одну строку. А что делать с механизмом папок — давать доступ подчиненному к папке начальника?
S>Сложно судить но, имхо, это у вас аналог пресетов для назначения разрешений? т.е. ACL с них копируется на документ?
Здравствуйте, retalik, Вы писали:
R>Здравствуйте, Sinix, Вы писали:
S>>Дело в том, что есть структура документации, которая чётко определяется. Т.е. разрешения ДОЛЖНЫ определяться положением файла. И было бы странным, что, перетащив файл в папку "для всех" мы должны ещё и назначать на него разрешения. Проблема не в производительности, а
R>А как это требование сочетается с упомянутым требованием возможности запрета доступа для любого документа (даже находящегося в разных доступных папках)? R>И второй вопрос — допустим, вы как-то реализуете это требование. А что будет с таким документом, если его затем поместят в доступную папку?
Вот с этой проблемой как раз и разбираемся... сорри, ничего конкретного не могу сейчас сказать, но идеи в принципе есть
R>И ещё одно соображение. Доступ на основе папок хорош, пока не начинается движение документов. Например, начальник отдела отправляет документ подчиненному для исполнения. Нужно обеспечить, чтобы подчиненный увидел этот документ (а те, кому "не положено" — по прежнему его не видели бы). В системе с ACL при этом достаточно добавить в список одну строку. А что делать с механизмом папок — давать доступ подчиненному к папке начальника?
А вот этот вариант как раз автоматизируется с помощью другой фигни (рабочее название — поручения). На практике это нечто для коллегиальной работы с документом. Вот там вот как раз и разруливаются разрешения на уровне файлика... Пожже ещё отпишусь.
Re: Каталог документации. нужна помощь
От:
Аноним
Дата:
15.11.07 16:35
Оценка:
Здравствуйте, Sinix, Вы писали:
S>Заранее извиняюсь за "многа букф".
Здравствуйте, Flamer, Вы писали:
R>>Мы занимаемся созданием подобного продукта, и озвученные мысли во многом близки (через такую стадию мы прошли ). F>О как! Я уже третий Правда, моя разработка уже крутится в вебе
Понаехали, блин!
Здравствуйте, Sinix, Вы писали:
S>А вот этот вариант как раз автоматизируется с помощью другой фигни (рабочее название — поручения). На практике это нечто для коллегиальной работы с документом. Вот там вот как раз и разруливаются разрешения на уровне файлика... Пожже ещё отпишусь.
А что, у вас политикой доступа и раздачей поручений занимается один и тот же человек?