2015-02-23 4 views
0

Я видел несколько осуществления на уровне строк ACL с помощью таблицы Permission, имеющой структуру, таких какПользовательского ACL для строк уровень безопасности

User_Id 
Subject_Class 
Subject_Id 
Permission_Id 

где Permission_Id есть (чтение, запись, обновление, удаление, утверждают и т. д.)

Мне было интересно, есть ли какая-либо польза для описания отношений (Relationship_Id) с данными вместо описания разрешения.

Идея мы бы описать, что пользователь является «Владелец», «утверждающий», «Обозреватель», «Public Viewer» и т.д.

Эта связь затем определить набор разрешений. Это может уменьшить размер разрешения.

Любые мысли по этой методологии?

ответ

0

Роли, как вы заметили, являются комбинациями разрешений. Если у вас есть набор разрешений размера n, вы можете иметь 2^n комбинаций всех этих разрешений. Это означает, что если у вас есть 5 разрешений, вам потребуется 32 роли. Если у вас 10 разрешений, у вас будет 1024 роли!

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

+0

Об использовании https://github.com/arkhipov/acl, те же возражения? –

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

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