2012-03-19 20 views
1

私は過去数ヶ月間、Railsをテストしてきました。 しかし私は、私にとって重要なRLS(行レベルのセキュリティ)を行う方法に問題があります。 私はActiveRecordコールバックを使うべきだと思っていましたが、オブジェクトの状態の変更の前または後に発動することができます。Railsで行レベルのセキュリティを実装する方法は?

PostgresSQLを使用するので、ビューを使用して特定のユーザー/組織に行のみを表示させる必要がありますが、むしろ自分のRLSのロジックを自分のDBに直接入れるのではなく、レールに実装する必要があります。 。

答えて

2

私は今、それがGrantを使用するプロジェクトに取り組んでいます。信じられないほど成熟しているわけではありませんが、Rails用の他のほとんどのセキュリティモジュールがロジックを置く必要があるコントローラーではなく、モデルでかなりうまくロックされているようです。ユーザーが彼らはを見ることができるもの、ないに行くことができる場所

コントローラレベルのセキュリティは本当に唯一の決まります。誤って間違ったリソースをページに入れた場合、意図しない情報が漏洩する可能性があります。

小規模なプロジェクトでは、私はCanCanを使用していますが、チェックされていないビューにはリソースを含めないように注意してください。

いずれにしても、ユーザーのログインとログアウトに認証システムが必要です。いくつかあります:Deviseがおそらく最も広く使われています。

0

"行レベルのセキュリティ"とは、ユーザがdeclarative_authorization (RailsCast)を見ることができる選択された行の役割に基づいて特定の行にアクセスすることを許可している場合、ハイレベルDSL。 「行」属性値に基づいてルールを定義することもできます。

+1

フィリップ – elfif

0

Heimdallrをご覧ください。それはモデルレベルの制限のための素晴らしいアプローチです。 ActiveRecordとMongoid ..で動作し、単純に拡張可能です。

0

Devise認証のuser_idを使用してしまいました。これは、行単位で制限したいデータベーステーブルに追加されました。

私がこの上で何かアップを書いた:私はとにかく、あなたは非常に迅速に答え 乾杯 に感謝を選択 を行う前つもりは2または3 auhorizationソリューションをテストする時間がかかるんだ http://marktmilligan.tumblr.com/post/78996534776/adding-row-level-security-to-your-rails-app

関連する問題