概要
最近質問を受けたので、ついでに投稿します。
以下のようなデータがあったとして、特定のグループに所属するユーザーには「SALES_PERSON=LEE」のデータのみアクセス許可したい、特定のグループに所属するユーザーは、「REGION」列にアクセスして欲しくない、という、行・列単位でのデータアクセス権限付与はどのように実装するのか、という質問でした。
行レベルのアクセス権限付与
基本的にどちらもFramework Managerで行います。
先ほどのデータはSALES表にあるので、SALES表を選択した状態で「操作」メニューから「データ・セキュリティを指定」を選択します。
以下の画面で「グループを追加」で、特定のグループ「Role01」を指定し、フィルターとして「埋め込みを作成/編集」から、以下のようにSALES_PERSON='LEE'を記載します。
このパッケージを実行して、Role01に所属するユーザーで先ほどのレポートを実行するとこうなります。
また、別の方法として、以下のようなイメージで、セキュリティ情報テーブルを作成して、ユーザーのセッション情報からアクセス可能なデータを制限させる事も可能です。
列レベルのアクセス権限付与
次に特定の列「REGION列にアクセスさせたくない、という場合です。
Framework ManagerでSALES表の「REGION」を選択した状態で、「操作」メニューから「オブジェクト・セキュリティーを指定」を選択します。
先ほどのレポートを実行すると、以下のようにデータアクセス権限が無く、エラーとなります。
Role01所属ユーザーでレポートを新規作成した場合も、「REGION」列が表示されない事がわかります。
参考
以下のような記事も投稿してますので、ご参照下さい。
Cognosレポートで職位に応じてデータをマスキング
https://qiita.com/shinyama/items/382be21d82e7eef77866