Управление доступом к сервисам объектов на основе владения
Эта функциональная возможность может использоваться только для многопользовательских баз геоданных, не для баз данных.
Можно настроить сервис объектов для регистрации в базе данных информации о том, кто создал тот или иной объект. Можно ограничивать пользователям доступ к объектам, которыми они не владеют. Этот метод называется управлением доступом на основе владения.
Чтобы управлять доступом на основе владения, необходимо назначить в наборе данных поле, в котором будет храниться имя создателя. Затем необходимо изменить настройки Отслеживание редактирования (Editor Tracking) и определить это поле как Поле создателя (Creator Field). Пошаговые инструкции см. в разделе Отслеживание редактирования для сервисов объектов.
При публикации сервиса и выборе функции Доступ к объекту (Feature Access) также включите свойство Разрешить управление объектами на основе владения (Enable ownership-based access control). Затем можно выбрать пункт Операции, доступные для объектов, созданных другими пользователями (Operations allowed on features created by other users) (Запрос (Query), Обновить (Update) и Удалить (Delete)) для определения действий, доступных для пользователей, не являющихся создателями. В целом, создатель может выполнять все операции, разрешенные для сервиса.
Обратите внимание, если вы сняли отметку Запрос (Query), то пользователь увидит только объекты, которые он создал. И напротив, если установлена отметка Запрос (Query), а отметки Обновить (Update) и Удалить (Delete) сняты, то пользователь может запрашивать данные, но будет иметь доступ только для чтения объектов, созданных другими пользователями.
Управление доступом на основе владения работает только в том случае, если сервис может получить сведения о том, кто создал объекты и кто пытается получить к ним доступ. Разработчик должен построить клиентское приложение таким образом, чтобы пользователю необходимо было вводить свои учетные данные ArcGIS Server. Затем разработчик использует эту информацию для получения токена с сервера ArcGIS Server. Зашифрованный токен, содержащий информацию о пользователе, должен передаваться в сервис объектов при выполнении запросов.
Если кто-либо создает объект по анонимному запросу (то есть запросу, не содержащему информации о пользователе), поле создателя остается пустым и к этому объекту может получить доступ любой пользователь.
Изменения, внесенные через сервис объектов анонимными пользователями, отмечаются в базе геоданных как Esri_Anonymous; однако, эти значения в клиентах, использующих сервис, отображаются в виде пустых строк. Когда вы запрашиваете сервис объектов через REST Services Directory для поиска объектов, созданных анонимными пользователями, необходимо задать Esri_Anonymous. Например, если сервис объектов содержит поле автора created_by, введите created_by='Esri_Anonymous' в поле Where.
Если некоторые наборы данных в сервисе не имеют назначенного поля создателя, для этих наборов данных не используется управление доступом на основе владения. Если установлена отметка включения управления доступом на основе владения, но не определено поле создателя, при анализе карты на предмет публикации могут отображаться предупреждения. Слои и таблицы без поля создателя задействуют правила доступа, заданные на уровне сервиса, как описано в разделе Права доступа редактора к сервисам объектов.
Веб-редакторы
При определении управления доступом на основе владения можно указать область пользователя. Например, если область пользователя задана как myserver.com и пользователь Bob подключается и вставляет объект с использованием сервиса, создатель указывается как Bob@myserver.com. Если Bob вставляет объект в ArcMap, создатель указывается как Bob.
Правила управления доступом на основе владения являются допустимыми для веб-редакторов, не являющихся администраторами и вносящих изменения через этот сервис.
Советы и рекомендации
Важно отметить, что опции управления доступом на основе владения ограничиваются только операциями, разрешенными для всех пользователей на уровне сервиса. Например, если операции обновления и удаления на уровне сервиса не выбраны, эти же операции не выбраны в настройках управления доступом на основе владения.
При публикации сервиса рекомендуется оставить поле создателя видимым для всех слоев и таблиц. Таким образом, клиентам сообщается о том, каким пользователем создан данный объект. Эту информацию клиенты могут использовать для блокирования попыток пользователей редактировать объекты, для редактирования которых у них нет разрешения. Если поле создателя скрыто, клиенты, использующие сервис объектов, не будут знать, каким пользователем данный объект создан. Если клиент попытается редактировать объект, для редактирования которого у него нет разрешения, то возвращается ошибка.
Важно обозначить разницу между отслеживанием правки и управлением доступом на основе владения. Если отслеживание редактирования задано для слоя на уровне набора данных, изменения отслеживаются сервисом объектов независимо от задействованных правил доступа на основе владения. Однако отслеживание редактирования на уровне набора данных необходимо для установки правил доступа на основе владения.
При внесении правок пользователем, не прошедшим проверку подлинности, поле создателя или редактора оставляется пустым. Если включено управление доступом к объектам на основе владения, любой пользователь может редактировать объекты. Если включено управление доступом к объектам на основе владения, и создателю присвоено значение NULL, объекты или записи имеют свойство "только чтение". Никто не может редактировать объекты. Авторы объекта могут настраивать свои данные таким образом, чтобы объекты, которые должны иметь свойство "только чтение", содержали значение NULL, назначенное для создателя.