9

現在、認証/承認フレームワークを評価しています。

Apache Shiro は非常に優れているようですが、行レベルのセキュリティ機能がありません。

たとえば、データベースには、特別な権限を持つユーザーのみが表示およびアクセスできる特別な行がある場合があります。不必要な往復を避けるために、現在、SQL クエリを変更して認証データと結合し、現在のユーザーに表示される行のみを取得します。

しかし、この概念は私には「正しい」とは思えません。なぜなら、ビジネス コードと、互いに直交し、独立している必要があるセキュリティ関連のコードを混在させているからです。

  • どのようなソリューションが利用可能/可能ですか?
  • 行レベルのセキュリティをどのように実装しますか(特に jpa と組み合わせて) ?

アップデート:

ターゲット データベースは主に Oracle 10g/11g
ですが、大きな欠点がなければ、データベースに依存しないソリューションをお勧めします。

4

3 に答える 3

9

行レベルのセキュリティは、データベース自体で実際に行うのが最適です。接続を取得するときに、データベースにユーザーコンテキストを通知する必要があります。そのユーザーは、1つ以上のセキュリティグループに関連付けられています。次に、データベースはユーザーが指定したクエリにフィルターを自動的に追加して、セキュリティグループから見えないものをフィルターで除外します。もちろん、これはデータベースタイプごとのソリューションであることを意味します。

Oracleは、かなり優れた行レベルのセキュリティをサポート しています。例として、http://www.orafusion.com/art_fgac.htmを参照してください。

于 2011-04-19T12:30:48.077 に答える
0

役立つ記事があります: http://mattfleming.com/node/243

アイデアは、行レベルの機能を 2 つの方法で実装できるということです。リポジトリに制限を直接設定するか、AOP を介して制限をバインドします。セキュリティ レイヤーはビジネス ロジック (直交関係) から分離する必要があるため、後者が推奨されます。

Hibernate では、透過的に適用されるフィルターの概念を使用でき、リポジトリはそれらについて認識しません。このようなフィルターは、AOP を介して追加できます。もう 1 つの方法は、session.createCriteria() をインターセプトし、AOP を使用して透過的に基準に制限を追加することです。

于 2011-06-05T08:18:56.617 に答える