0

データベース内のデータへのアクセスの制御に問題があります。データは、私の会社の価格データとデータプロバイダーから購入した価格データを組み合わせたものであり、データにアクセスできるユーザーごとに課金されるため、データへのアクセスを制限できるようにする必要があります。

すべての価格データを保持するスキーム「DATA」があります。DATAスキーマに基づいて構築されたVIEWSを使用して、2つの追加スキーム(例:LIM_ACCESSとFULL_ACCESS)を使用することを考えています。例:

CREATE VIEW LIM_ACCESS.V_PRICES AS<br>
SELECT [] FROM DATA.PRICES<br>
WHERE SOURCE = [MyCompany]

CREATE VIEW FULL_ACCESS.V_PRICES AS<br>
SELECT [] FROM DATA.PRICES

しかし、私の経験では、LIM_ACCESS-およびFULL_ACCESS-スキームは、ビューを作成するためにDATA-tablesでselect-priveligeを持っている必要があり、その後、正方形1に戻ります。

データベースの初心者である私は、これに対する比較的単純な解決策がなければならないと感じているので、アドバイスやヒント(この質問が以前に尋ねられ、答えられた場合)はありがたいです:-)

よろしく、
Svend

4

4 に答える 4

2

すべてのビューを DATA スキーマに入れることができます。次にGRANT SELECT、必要に応じて他のスキーマに、理想的には Woot4Moo が提案したようにデータベース ロールを介してそれらを追加します。

于 2013-01-10T22:01:59.843 に答える
0

ビューを使用しても、一部のユーザーがデータにアクセスできなくなることはありません。行レベルのセキュリティを実装する必要があります。

もう 1 つのアプローチは、「有料」情報にアクセスしたい特定のユーザー グループのみを有効にする、何らかの形式のロール ベースのアクセス許可を使用することです。これはかなり簡単に実行できます。例を次に示します。

create user foo  
identified by password;  

-- パーミッションなし

create role paid_data;  

paid_data-- ここでロールに権限を付与します

grant paid_data to foo

ユーザーには、ロールが持つfoo権限が付与されます。paid_dataこのようなロールを使用する利点は、そのグループ内のすべてのユーザーのアクセス権をすばやく取り消したり、組み込む必要があるときにさらにアクセス権を追加したりできることです。

于 2013-01-10T21:23:13.673 に答える
0

GriffeyDog が示唆したように、これが最善の方法です。最初にスキーマに 2 つのビューを作成し、それらのビューの選択を 2 人のユーザーに許可します。

CREATE VIEW LIM_ACCESS_V_PRICES AS<br>
SELECT [] FROM DATA.PRICES<br>
WHERE SOURCE = [MyCompany];

GRANT SELECT ON LIM_ACCESS_V_PRICES TO LIM_ACCESS;

CREATE VIEW FULL_ACCESS_V_PRICES AS<br>
SELECT [] FROM DATA.PRICES;

GRANT SELECT ON FULL_ACCESS_V_PRICES TO FULL_ACCESS;
于 2013-01-11T08:07:37.693 に答える
0

もう 1 つのアプローチは、Oracle Label Security とも呼ばれるOracle Row Level Securityを使用することです。これを使用して、アプリケーションの設計を大幅に簡素化しながら、ユーザーが閲覧を許可されたデータのみを閲覧できるようにしました。

于 2013-01-30T06:55:06.160 に答える