2

こんにちは、お読みいただきありがとうございます。

私はサンドボックスをいじくり回しており、データベースをより安全にする最善の方法を見つけようとしています.

問題は、3 つのデータベースがあり、それぞれからの情報が必要なことです (共用体とビューを使用)。また、データベース内の特定の情報にアクセスする必要がある外部の運送会社や商人もいます。

私が考えたのは、異なるマーチャント スキーマ ( と呼ばれる) を持つ別のデータベースを作成することでしたMVIEW。次に、マーチャントのニーズに応じて、これらのスキーマ内にビューを作成します。その後、ビューは他のサーバーからのデータにアクセスします (問題は、マーチャントがSELECT他のサーバーに対するアクセス許可を持っている必要があることなどです)。

したがって、この時点で、各データベースにマーチャント スキーマを作成し、そこにデータベース内の必要な情報にアクセスするビューを作成し、データベースにHVIEWそれらのビューにアクセスさせるのが賢明だと考えました。このようにして、マーチャントにそれらのスキーマだけを選択させることができます。

問題は、パーミッションが拒否され、ビューが参照しようとしているスキーマにユーザーがアクセスできないというエラーが表示されることです。

何か提案はありますか?

お時間をいただきありがとうございました。

4

1 に答える 1

0

すべてのユーザーに、一部のビューへのアクセスのみを許可し、データ テーブルへのアクセスは許可しません。ビューでは、ユーザーのログイン ID を参照します。そのため、ビュー内に隠されている舞台裏で、WHERE 句を使用してアクセスを制限します。

例: を選択します。. . . ここで、supplierUser=SYSTEM_USER

例: を選択します。. . . ここで、externalAccess=1 および SYSTEM_USER in (tbl_externalUsers から名前を選択)

于 2012-12-11T21:46:46.897 に答える