2017-01-16 19 views
1

В официальной документации (3.1: http://neo4j.com/docs/operations-manual/current/security/authentication-authorization/subgraph-access-control/) Говорятподграф контроля доступа

«Например, пользователь может быть разрешено читать, но не писать, узлы, меченные работником и отношения типа Reports_To»

Но нигде не написано на этой странице, а другие - как это сделать. С помощью функции «call dbms.procedures()» мы можем видеть гораздо больше функций в корпоративной версии, но ничего не знаем об определении этого элемента управления подграфами.

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

Благодаря

ответ

2

документация все в порядке там. Обратите внимание на первое предложение:

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

Подход, похоже, для пользователей без права на запись, создает роли для них по мере необходимости, а затем создает (или использует существующие) пользовательские процедуры для выполнения операций, которые им разрешено делать. Затем настройте разрешения процедур на соответствующий уровень и сопоставьте роли процедур (путем изменения dbms.security.procedures.roles) с ролями, которые вы ранее создали. Это позволяет создавать созданные вами процедуры по ролям, с которыми вы связаны.

Например, если пользователь HR не имеет прав на запись, вы можете создать процедуру для создания или удаления отношения: REPORTS_TO между узлами Employee. Процедура должна быть установлена ​​в режим = WRITE, поскольку для этого нужен доступ на запись. Этот пользователь обычно не может выполнять этот пользователь, поскольку у него нет прав на запись.

Но если вы создали роль, произнесите «hr» и добавили эту роль этому пользователю, и установите процедуру для доступа к роли hr в dbms.security.procedures.roles, тогда пользователь hr может выполнить эту процедуру, и она будет выполните необходимые операции записи.

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

EDIT

Одно последнее, что может работать для вас ... Neo4j есть средство регистрации transaction event handlers, который может выполнять проверку и логику на незавершенные транзакции, и отклонять, если некоторые критерии не выполняются. Я бы предположил, что вы можете получить роли пользователя здесь и, вероятно, проверить транзакцию для операций записи на определенных ярлыках. Странно, что на это не ссылались в разделе подграфа документации. Я не пробовал этот подход сам (я попробую свое собственное тестирование позже), поэтому я не уверен, что он выполнит то, что вам нужно, но это стоит посмотреть.

+0

Спасибо за ваш ответ.Сначала я подумал, что это еще одна особенность этой процедуры. Я размышлял над тем, что вы объясняете на самом деле позже, поскольку это было совсем не то, что мы ожидали. Странно создать настолько сложную систему, чтобы создать ее (кодирование java/создание jar, развертывание, перезапуск сервера). Мы искали что-то более динамичное, а не доисторическое, мы можем перекодировать наш графический слой с помощью OrientDB BTW , еще раз спасибо! – user954156

+0

Я добавил одну возможную альтернативу обработчикам транзакций, которые могут работать и на вас. – InverseFalcon

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

  • Нет связанных вопросов^_^