1

異なる職業 (マネージャー、セールスマン、経理) の 3 人のユーザーがいる場合

主な問題は、SQL サーバーで以下のスター スキーマと要件に基づいて、適切な列を適切な人に表示する方法です。

ファクトとディムは、データ マート内で通常のテーブルを使用しています。

背景情報:

  • 管理者は、factTransaction のすべての列を表示する権限があります
  • セールスマンは、TaxAmount、TotalAmount、ProductBusinessKey を見ることはできません。
  • Accounting は、Product Quantity、ProductPrice、および GeographyFullname を参照できることに注意してください。

Windows では、ユーザーは独自のユーザー アカウントを持っています。

写真はアドレスから取得したものです (複数のファクト テーブルを持つデータ ウェアハウスの設計)

ここに画像の説明を入力

4

1 に答える 1

2

SQL Server には、列のアクセス許可を割り当てる機能があります (http://msdn.microsoft.com/en-us/library/ms180341%28v=sql.105%29.aspx)。各列を独自のセキュリティを持つオブジェクトとして扱うことで、特定のアクセス許可を好きなように設定できます。

テーブルが変更され、新しいユーザーが追加されるたびにセキュリティを更新することを覚えておく必要があるため、列レベルのセキュリティの管理は面倒になる可能性があります。

あなたは別のアプローチを検討します。異なるグループごとに個別のビューを定義します。「マネージャー」ビューにアクセスできるのはマネージャーだけです。セールスマン (およびおそらくマネージャー) だけがセールスマン ビューなどにアクセスできます。次に、それらのビューに基づいて各グループのアプリケーションを構築します。

最後に、複数のビューを管理するのは少し面倒かもしれません。代わりに、すべてのビューを 1 つの関数にラップするテーブル値関数を使用することもできます。この関数は、各ユーザーの権限をチェックし、返す適切なデータを選択します。

ユーザー定義関数の利点は、関数を作成したユーザーのみが基になるテーブルにアクセスする必要があることです。つまり、ユーザーは機能に対する権限のみを持っています。そうしないと、基になるテーブルを表示できません。関数は、彼らが見ることができるものを制御します。

于 2012-07-08T22:36:21.923 に答える