2012-03-19 3 views
1

저는 지난 몇 달 동안 레일스를 테스트 해 왔습니다. 하지만 나에게 중요한 RLS (행 수준 보안)을 수행하는 방법에 문제가 있습니다. ActiveRecord 콜백을 사용해야한다고 생각했지만 객체 상태를 변경하기 전후에 해고 될 수 있습니다.레일에서 로우 레벨 보안을 구현하는 방법은 무엇입니까?

PostgresSQL을 사용하여 뷰를 사용하여 특정 사용자/조직이 자신의 행만 볼 수 있도록해야하지만 직접 내 DB에 배치하는 대신 레일에 내 RLS의 논리를 구현할 것입니다.

답변

2

은 지금은 Grant를 사용합니다. 엄청나게 성숙한 것은 아니지만 레일즈 용의 다른 '보안'모듈이 로직을 필요로하는 컨트롤러에서보다는 모델에서 상당히 멋지게 잠그는 것 같습니다. 사용자가 를 볼 수있는하지 갈 수있는

컨트롤러 수준의 보안은 정말에만 지시한다. 실수로 잘못된 리소스를 페이지에 넣으면 뜻하지 않은 정보가 누출 될 수 있습니다.

작은 프로젝트에서 나는 CanCan을 사용하고 있으며 확인되지 않은보기에는 리소스를 포함하지 않도록주의해야합니다.

어느 쪽이든 사용자를 로그 아웃하기 위해서는 인증 시스템이 필요합니다. 몇 가지가 있습니다 : Devise가 아마도 가장 널리 사용됩니다.

0

"행 수준 보안"의 경우 사용자가 declarative_authorization (RailsCast)을 볼 수있는 선택한 행에 대한 자신의 역할에 따라 특정 행에 액세스 할 수 있음을 의미하는 경우 상위 수준을 사용하여 액세스 규칙을 정의 할 수 있습니다 DSL. "행"속성 값을 기반으로 규칙을 정의 할 수도 있습니다. 내가 프로젝트에서 일하고 있어요

+1

난거야 난 당신의 아주 빠른 답변에 대한 선택의 여지 어쨌든 감사를하기 전에 2 ~ 3 auhorization 솔루션을 테스트 할 수있는 시간을 건배 필립 – elfif

0

Heimdallr을 살펴보십시오. 그것은 모델 레벨 제한을위한 멋진 접근법입니다. ActiveRecord 및 Mongoid ..와 함께 작동하며 확장 가능합니다.

관련 문제