2009-09-15 5 views
1

Можно ли установить перехват доступа с помощью пользователей Active Directory?
Редактировать: Общая цель состоит в том, чтобы позволить некоторым пользователям видеть определенные таблицы и отклонять это разрешение для других пользователей. Мне интересно, можно ли это сделать с помощью активных пользователей каталогов.MS Права доступа с пользователями Active Directory

+1

Какова твоя основная цель? Какие пользователи и какая система вы создаете? –

+0

Тот же вопрос для Access 2007: https://stackoverflow.com/q/5833059/321973 –

ответ

5

Зависит от того, что вы подразумеваете под правами доступа. Доступ к безопасности уровня пользователя не взаимодействует с Active Directory каким-либо образом. ACC: Microsoft Access Security FAQ Available in Download Center Предлагается несколько раз перечитать этот FAQ. Должен признаться, я так и не понял. См. Также ACC2000: Overview of How to Secure a Microsoft Access Database

Теперь, что вы можете сделать, это прочитать данные Active Directory для зарегистрированных пользователей и групп и т. Д. Затем с некоторыми локальными таблицами, отображающими различные группы AD вместе с идентификатором пользователя для входа в различные объекты и пункты меню в Access, вы можете контролировать доступ таким образом. Обратите внимание, однако, что локальные таблицы могут быть удалены опытным пользователем и т. Д.

Самый полезный URL-адрес, который я нашел, это следующая публикация группы новостей need help on get list of W2K ad Domain (fqdn) by using VB Options. Я продолжал писать заметки, когда я работал над этой темой, но они может быть или не быть полезным. Я могу опубликовать их по желанию.

1

По несколько вопросов, которые вы вывешенные эти последние дни по доступу, кажется очевидным, что вы должны рассмотреть вопрос о переходе таблиц (а не формы) из файла Access/MDB к серверу SQLExpress, где все эти вопросы безопасности можно легко управлять. Увеличьте свою базу данных, добавьте свою строку подключения в качестве общедоступной переменной в клиентское приложение (или в файл xml, локальную таблицу или что-нибудь еще, что может содержать строку, даже дополнительное свойство вашего файла доступа может сделать трюк через currentDb .createProperty) и перейти к реальной конфигурации клиент-сервер.

+0

Не обязательно. Если для exmaple он хочет, чтобы пользователи отдела закупок рассматривали только закупочные формы, которые, конечно же, обращались к таблицам закупок, как он эффективно это делает? Если пользователь открывает форму дебиторской задолженности, которая обращается к таблице A/R, то Access затем возвращает код ошибки, который он обрабатывает в коде? –

+0

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

+0

Мне не нужна высокая безопасность, я просто проверяю, есть ли простой способ защитить мой db, если нет - это даже не важно. это простое, временное, быстрое, внутрикорпоративное приложение. если бы это было что-то еще, я бы, безусловно, использовал sqlExpress. и я не 'он' (это для toony toews) – agnieszka

3

Я согласен с тем, что опубликовали Тони и Филипп. Я просто хочу добавить немного:

Если вам действительно нужна безопасность, то задняя часть Jet/ACE не будет выполнять работу для какого-либо значимого определения слова «безопасность». Jet ULS взломан и довольно легко, поэтому для тех, у кого есть даже базовые программные отбивные. Таким образом, если это DATA SECURITY, что вы ищете, Филипп прав, что вы должны выбрать другой механизм базы данных.

Но если вы только хотите контролировать доступ в вашем фронтальном приложении, у вас есть три варианта:

  1. поддерживает несколько таблиц в базе данных ваших пользователей и право доступа на каждом из объекты.

  2. Обеспечить безопасность на уровне пользователя Jet.

  3. Использование пользователей/групп AD вместо Jet ULS.

Ни один из этих вариантов не является бесшовным.

И все они означают, что ваш интерфейс должен быть запрограммирован для решения проблем.

Если вы ограничиваете доступ по соображениям безопасности, то имеет смысл использовать механизм базы данных, который интегрируется с безопасностью Windows (то есть SQL Server).

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

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

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

Смежные вопросы