Управление доступом к сервисам объектов на основе владения

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

Чтобы управлять доступом на основе владения, необходимо назначить в наборе данных поле, в котором будет храниться имя создателя. Затем необходимо изменить настройки Отслеживание правки (Editor Tracking) и определить это поле как Поле создателя (Creator Field). Пошаговые инструкции см. в разделе Отслеживание редактирования для сервисов объектов.

При публикации сервиса и выборе функции Доступ к объекту (Feature Access) также включите свойство Разрешить управление объектами на основе владения (Enable ownership-based access control). Затем можно выбрать пункт Операции, доступные для объектов, созданных другими пользователями (Operations allowed on features created by other users) (запрос, обновление и удаление), чтобы задать действия, которые будут доступны пользователям, не являющимся создателями. В целом, создатель может выполнять все операции, разрешенные для сервиса.

Примите к сведению, что если вы снимите отметку в поле Запрос (Query), то подключенный пользователь увидит только созданные ими объекты. И наоборот, если поле Запрос (Query) будет отмечено, а обновление и удаление – не отмечены, то пользователь сможет делать запрос, но при этом будет иметь доступ к объектам, принадлежащим другим пользователям, только для чтения.

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

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

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

Веб-редакторы

При определении управления доступом на основе владения можно указать область пользователя. Например, если область пользователя задана как myserver.com и пользователь Bob подключается и вставляет объект с использованием этого сервиса, создатель указывается как Bob@myserver.com. Если Bob вставляет объект в ArcMap, то создатель указывается как Bob.

Правила управления доступом на основе владения являются допустимыми для веб-редакторов, не являющихся администраторами и вносящих изменения через этот сервис.

Советы и рекомендации

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

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

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

При внесении правок пользователем, не прошедшим проверку подлинности, поле создателя или редактора оставляется пустым. Если включено управление доступом к объектам на основе владения, любой пользователь может редактировать объекты. Если включено управление доступом к объектам на основе владения, и создателю присвоено значение NULL, объекты или записи имеют свойство "только чтение". Никто не может редактировать объекты. Авторы объекта могут настраивать свои данные таким образом, чтобы объекты, которые должны иметь свойство "только чтение", содержали значение NULL, назначенное для создателя.

9/12/2013