問題タブ [row-level-security]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
7755 参照

c# - EntityFrameworkによる行レベルのセキュリティ

私は、エンティティフレームワークを使用して行レベルのセキュリティを実装する方法を検討してきました。アイデアは、ObjectContextからの行を制限するメソッドを提供するデータベースにとらわれない手段を持つことです。

私の最初のアイデアのいくつかは、EDMGENツールによって作成された部分的なクラスを変更することを含み、それはいくつかの限定されたサポートを提供しました。ユーザーは、独自のeSQLステートメントとQueryObjectを使用して、このソリューションを回避できます。

私は、データベースプロバイダーの上に存在し、不可知論者であり続けるための包括的なソリューションを探していました。

0 投票する
3 に答える
3459 参照

c# - 行レベル セキュリティの実装 – (SP と LINQ to Objects)

これは、何よりもベスト プラクティスと設計に関する問題だと思います。これに関する同様のクエリを検索しようとしましたが、見つかりませんでした。実際にEntity Framework を使用した Row Level Security を見つけましたが、ここでのコンテキストは少し異なると思います。

最初に私のシナリオを説明しようとします:

共通のビジネス ライブラリを使用して NHibernate 経由で SQL 2008 データベースにアクセスする .net 3.5 Web サイトがあります。コードはすべて C# で、NHibernate 2.1 を使用しています。私の Web サイトには、ビジネス ライブラリからのさまざまな IList が表示されます。ビジネス レイヤーは、NHibernate を介して SQL からすべてのデータを取得します。したがって、つまり、IList を返すメソッド、IList を返す別のメソッド、別の IList などを作成できます。ポイントは、アクティブなユーザーがすべての戻り値の一部にしかアクセスできないことです (ほとんどすべてのタイプの結果セットをセキュリティから除外する必要があります)。 )、そのため、許可されたデータ行のみを Web サイトに返す「データ フィルター」をライブラリに実装する必要がありました。これを実現するために、私の Web サイトの IPrincipal がラ​​イブラリで使用されているため、ユーザーの詳細を取得してデータをフィルター処理できます。しかし、私たちのセキュリティ モデルは非常に複雑であるため、それをすべてのメソッドに広げると、メンテナンスに大きな問題が生じます。これを解決するために、現在のユーザーに許可されたアイテムを返すいくつかの SQL SP を作成しました。ビジネス ロジックでは、要求されたデータをセキュリティ データと結合するだけで、最終的な結果セットをユーザーに送信できます。現在、データを結合するこのプロセスは、Linq to Objects を使用しており、リスト (セキュリティ) で iList を結合して、許可された結果セットのみを返します。IList はさまざまな方法で NHibernate から取得され、GetAll() メソッド、ICriteria.List() または IQuery.List()、または NamedQuery.List() によって取得される可能性があり、セキュリティ データは常に次のいずれかから取得されます。 2 つの NamedQuery.List()。また、スレッド化を実装して、SQL 呼び出しを同時およびスレッド後に実行できるようにすることも計画しています。join() は、両方の IList で LINQ 結合を実行します。メソッドを実行する必要がある方法を示すために、次のサンプル コードを追加しました。

2 番目のオプションは、SQL 側に結合を実装することです。すべての呼び出しは、セキュリティ結果で結合を実行し、ビジネス コードが取得できないようにする SQL SP から来る必要があります。 NHibernate 機能の完全な使用。

さて、私の質問ですが、これは行レベルのセキュリティに対するひどいアプローチ/プラクティスですか (私たちのセキュリティ モデルは非常に複雑でカスタマイズ可能であり、それはビジネス設計によるものであることを覚えておいてください)、それとも正しい方向に進んでいますか? 他に選択肢はありますか?

前もってありがとう、クレイトン

0 投票する
1 に答える
369 参照

oracle - 述語を使用してフィルター処理した後に最初のテーブルを参照し、次に別のテーブルの 2 番目の述語で参照すると、最初の述語は有効になりますか?

Oracle VPD 機能 (別名 RLS、別名 FGAC) を使用して、述語を使用するとします。

TableA、次に述語を使用します

オンTableB

TableAフィルタリングされますか?テーブルをクエリするとき、フィルタリングは述語定義の外でのみ行われますか? このように述語を作成する必要がありますTableBか?:

0 投票する
1 に答える
809 参照

oracle - マルチテナント アプリの Oracle 行レベル セキュリティ / 新しいレコードのデフォルト値

仕事

マルチテナント アプローチを使用するように既存のアプリケーションを改良します。テナントを作成することは可能であり、各ユーザーのセッションはアクティブなテナントを 1 つだけ参照する必要があります。各テナントは、データベース スキーマの自分のパーティションのみを表示および更新できる必要があります。

アプローチ

  • テナント ID を含む Oracle アプリケーション コンテキストを作成する
  • 範囲を指定する必要があるテーブルにテナント ID 列を追加します
  • SELECT、INSERT、UPDATE、および削除に対して「tenant_id = sys_context('tenant_context', 'tenant_id')」を返す述語関数を作成する
  • dbms_rls を介して適切なポリシーを追加し、述語関数を登録します。

これは、SELECT、UPDATE、および DELETE の既存のアプリケーションに触れることなく、魅力的に機能します。

質問

挿入すると、tenant_id 列が設定されず、セキュリティ例外が発生します。セキュリティ関連のフィールドを常に設定する述語関数と同じくらい洗練された方法はありますか? 300 以上のテーブルにトリガーを追加したくありません。

0 投票する
3 に答える
2546 参照

c# - データベースに依存しない行レベル セキュリティ ソリューション

Java/C# データベースに依存しない認証ライブラリについて知っている人はいますか? このライブラリは、会社の組織構造全体で読み取り、書き込み、削除、挿入アクションをサポートする必要があります。


- ユーザーはすべてのドキュメントを表示できます
- ユーザーは自分のユニットに割り当てられた新しいドキュメントを入力できます - ユーザーは
自分のユニットとすべての下位ユニットに割り当てられたすべてのドキュメントを変更できます。
- ユーザーは自分に割り当てられたドキュメントを削除できます

また、カスタム アクション (読み取り、書き込みなど) を作成して、それらを特定のクラスに接続し、その「セキュリティ トークン」をユーザー (例: document.expire) に割り当てることもできるはずです。無料または商用のライブラリがない場合、この機能を実装するのに役立つ本はありますか?

ありがとう。

0 投票する
1 に答える
1819 参照

oracle - Oracleでテーブルを変更またはドロップ再作成すると、そのテーブルで定義されているポリシーに影響しますか?

テーブルと定義されたポリシーがある場合、テーブルを削除して再作成するか、テーブルを変更する場合は、ポリシーを再定義する必要がありますか?ただし、テーブルの変更または再作成によって、関数が表示する必要のある要素が変更されることはありません。 ?

0 投票する
1 に答える
283 参照

oracle - Oracle 行レベル セキュリティ関数のデバッグに関するヒントを探す

Oracle データベースで行レベルのセキュリティ述語をデバッグする際のヒントを探しています。これらの述語は、いくつかの概念を使用して、現在のユーザーがレコードを表示できるかどうかを判断します。

  • 現在のユーザーの Oracle ユーザー名
  • 現在のユーザーに割り当てられた Oracle ロール
  • 1 つ以上のテーブル内のレコードに対する現在のユーザーの所属

特定のユーザーが見ることができるものを実際に見ることをシミュレートする良い方法がわからないため、実際のデータでこの種のものをデバッグするのに問題があります。ということで、ヒント募集中です。この種のもののための良い基本的なフレームワークはありますか?

以下は、私の述語の 1 つの例です。

0 投票する
1 に答える
909 参照

sql - OracleVPDテーブルの参照方法

私は次の問題に苦しんでいます。OracleVPDを使用してテーブルへのアクセスを制限したい。select policy関数が返すwhere句で、次のようにサブクエリ内のテーブルへの参照が必要です。

(この例は、問題を説明する以外はあまり意味がありません)

クエリの選択部分を制御することはできません。

テーブルには、任意のエイリアスを指定することも、まったく指定しないこともできます。したがって、where句でテーブルを参照する方法がわかりません。これを回避する方法はありますか?

(Oracle 10GR2)

0 投票する
2 に答える
343 参照

php - Zend_Db_Select 行レベル セキュリティ

を使用して行レベルのセキュリティを実現するにはどうすればよいZend_Db_Selectですか? いくつかのオプションを考えることができますが、それらは実際にはパターンに完全に適合していないようです.

、、、および多くuserscontent異なる ACL レベルがあるとします。これが私が考えた1つの解決策です:

しかし問題は、さまざまなタイプのセキュリティ用に別のフィールドを追加することにした場合はどうなるかということです。だから、私はおそらく次のようなものだと思いました:

より良い..しかし、それはかなり正しく感じられません。私が欲しいのは、もっとこのようなものです:

しかし、ライブラリを拡張または変更して、すでに存在する可能性のあるものを取得することに少し近づきすぎているようですが、よくわかりません。

他の誰かがこの種のニーズを持っていましたか?どのように解決しましたか?

0 投票する
2 に答える
1151 参照

cakephp - CakePHP でパーミッションを取得する方法

まず、私の語学力で申し訳ありませんが、私は英語で書くことに慣れていません。;)
初めての CakePHP アプリケーションを開発しようとしています。

私がやろうとしていること:

  • ユーザーはグループに属しており、グループはさまざまな場所にアクセスできます。
  • ユーザーは、この場所の予約を追加できます。

したがって、私の主な問題は、ユーザーのアクセス許可を取得するための最良の方法を見つけることです:

  • ユーザーは、自分がアクセスできる場所のみを表示する必要があります。
  • ユーザーが場所の予約を追加しようとすると、この場所に対するユーザーの許可を確認する必要があります。

モデレーターと管理者もいますが、これは同様の問題だと思います。

では、どうすればこれを適切に行うことができますか?ACL は正しい方法ではないようです。ほとんどのチュートリアルでは、データベース行ではなく、アクションへのアクセスを制御しています。

データベースの外観:
ユーザー テーブルがあり、AuthComponent を使用して認証を管理します。これはうまくいきます。

ユーザーグループ用のグループテーブルがあります。

そして、私は私の場所を持っています。

テーブルには、どのグループがどの場所にアクセスできるかという権限が含まれています。

もちろん予約表:

THX