異なる Active Directory グループと 1 つの BO ユニバースがあります。異なる Active Directory グループは、ユニバース内のデータに対して異なるアクセス制限を持つ必要があります。どうすればそれを実装できますか? (残念ながら、ネット上で対応するチュートリアルやドキュメントを見つけられませんでした。) データ アクセスを実装する方法が複数ある場合、ベスト プラクティスは何ですか? ありがとう。
1 に答える
ユニバースに行レベル セキュリティを実装するには、主に 2 つの方法があります。1 つはセキュリティ プロファイル経由です。もう1つは経由@variable('BOUSER')
です。
セキュリティがグループレベルで適用される場合(つまり、グループのすべてのメンバーに同じ条件が適用される必要がある場合)、セキュリティ プロファイルが適切です。これについては、 IDT ユーザー ガイドの第 17 章で説明されています。大まかな手順は次のとおりです。
- IDT から、セキュリティ エディターを起動します。
- ユニバースを選択し、データ セキュリティ プロファイルまたはビジネス セキュリティ プロファイルのいずれかを作成します(両者の違いについてはドキュメントを参照してください。ただし、DSP では WHERE 条件を記述し、BSP ではオブジェクトを選択して条件を定義します)
- セキュリティ プロファイルが作成されたら、適用するグループを選択します。
- 制限を適用する必要があるグループごとに上記を繰り返します
行レベルのセキュリティを適用するもう 1 つの方法は、データ ソースに、BO ユーザー ID とユーザーがアクセスできる値とのマッピングを持つテーブルが含まれている場合にのみ適用できます。たとえば、データ ソースに次のようなセキュリティ テーブルがあるとします。
user_id region
------- ------
U123 NE
U123 SE
U321 W
ファクト テーブルは次のようになります。
pk region value
__ ______ _____
1 NE 3
2 W 4
ユーザー U123 には「NE」行のみが表示され、ユーザー U321 には「W」行のみが表示されるように、セキュリティを適用できます。region ( security.region=fact.region
) で 2 つのテーブルを結合してから、 で新しい必須フィルタを作成しますsecurity.user_id=@variable('BOUSER')
。これにより、フィルターがすべてのクエリに強制的に適用されます。
上記の方法は両方とも、クエリの WHERE 条件に条件を追加することで機能することに注意してください。ユーザーがクエリの SQL を表示および編集する権限を持っている場合、フィルター ロジックを上書きすることができます。セキュリティを確保するために、ユーザーはこの権利を拒否する必要があります。