2012-03-19 3 views
1

Я тестировал Rails в последние месяцы, и это потрясает! Но у меня есть вопрос о том, как сделать RLS (безопасность уровня строки), что имеет решающее значение для меня. Я думал, что должен использовать обратные вызовы ActiveRecord, но они просто могут быть запущены до или после изменения состояния объекта, как говорится.Как реализовать Row Level Security в Rails?

Я собираюсь использовать PostGresSQL, поэтому я должен использовать Views, чтобы позволить определенному пользователю/организации видеть только его строки, но я бы предпочел реализовать логику моего RLS в рельсах вместо того, чтобы напрямую вставлять его в свою БД. .

ответ

2

Я работаю над проектом, теперь использует Grant. Хотя он не невероятно зрелый, он, похоже, довольно хорошо блокирует вещи в моделях, а не в контроллерах, поэтому большинство других модулей безопасности для Rails требуют, чтобы вы поставили логику.

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

Это говорит о том, что для небольшого проекта я использую CanCan, и он работает хорошо, пока вы стараетесь не включать ресурсы в представления, которые не проверяются.

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

0

Если для «безопасности на уровне строк» ​​вы имеете в виду разрешить пользователю доступ к определенной строке на основе его роли для выбранной строки, вы можете взглянуть на declarative_authorization (RailsCast), это позволяет вам определять правила доступа с использованием высокоуровневого DSL. Вы даже можете определить правила на основе значений атрибутов «rows».

+1

я буду тратить время на тест 2 или 3 раствора auhorization, прежде чем я сделать выбор Во всяком случае спасибо за очень быстрые ответы Приветствия Philippe – elfif

0

Взгляните на Heimdallr. Это удивительный подход к ограничениям уровня модели. Работает с ActiveRecord и Mongoid .. и также просто расширяется.

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