Technology Blog Posts by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
hiroki_ito
Product and Topic Expert
Product and Topic Expert
805

はじめに

このブログでは、SAP Datasphere の"演算子と値"を用いた複雑なデータアクセス制御について解説します。
※当ブログは、こちらのブログを一通り確認された方が対象となります。

 

機能概要

SAP Datasphere のデータアクセス制御は、基本的にスペース単位でオブジェクト(テーブルやビュー)を管理し、そのオブジェクトにアクセス可能なユーザをスペースに追加することで管理しますが、同じスペース内でもデータ内容に応じてユーザのアクセス制御を行いたいケースがあると思います。
そういった場合に、権限テーブルを用意することでログインしたユーザに応じて参照できるデータを定義し、行レベルできめ細やかなアクセス制御を行うことが可能です。

しかしながら、行レベルのアクセス制御で対応できないような複雑な条件や、複数条件を必要とするアクセス制御が必要なケースもあるかと思います。そのような場合でも、SAP Datasphere では演算子や値の組合せを用いて複雑なデータアクセス制御を作成することが可能です。

 

ユースケース

ユースケースとして、例えば以下のようなケースが考えられます。

  • 兼務ユーザで複数部署の参照権限を持たせたい
  • 異動により所属変更後も在籍していた年月までの旧部署データを参照できるようにしたい
  • 特定の文字列を含む関連データのみ例外的に参照できるようにしたい
  • 特権ユーザとしてすべてのデータを参照できるようにしたい

上記のような複雑なアクセス制御を行いたい場合でも、ANDとOR条件の組合せを用いてデータアクセス制御を作成することが可能です。また、「特定の文字列を含むデータ」のようなあいまい条件でデータアクセス制御を作成することも可能です。対象ユーザに応じて細かなアクセス制御をかけることができる一方、特定ユーザには例外的に全てのレコードを参照できる権限を付与する、といった使い方もできます。

次の章では、具体的なデータアクセス制御の作成の仕方を見ていきましょう。

 

権限エンティティの作成

データアクセス制御を作成する前に、以下の列を含む権限エンティティを準備しておく必要があります。

  • 権限 ID 列 - キーとしてマークされている必要があります。
  • ユーザ ID 列 - アイデンティティプロバイダから求められた書式でユーザ ID が格納されています (電子メールアドレス、ログオン名、その他の ID など)。
  • 制限列 - ユーザごとの各制限は一意の名前を持つ必要があり、1 つ以上の基準が各制限に属することができます。制限に属するすべての基準が AND 条件として動作します。ユーザごとに複数の制限がある場合は、すべての制限が OR 条件として動作します。
  • 基準列 - 基準名には英数字とアンダースコアのみを使用でき、ユーザがデータアクセス制御をビューに適用すると、マッピング領域に基準名が表示されます。基準名は、列名と正確に一致する必要はありませんが、マッピング先の列にユーザを誘導する必要があります。
  • 演算子の列 - 以下の演算子がサポートされています。
    • ALL (または *) - すべてのレコードにアクセスできるようにする。値は不要。
    • N (または IS NULL) - Null。値は不要。
    • NN (または NOT NULL) - Null ではない。値は不要。
    • EQ (または = ) - 最初の値に等しい。
    • NE (または <> または !=) - 最初の値に等しくない。
    • GT (または >) - 最初の値より大きい。
    • GE (または >=) - 最初の値以上。
    • LT (または <) - 最初の値より小さい。
    • LE (または <=) - 最初の値以下。
    • CP (または LIKE) - 最初の値パターンを含む。必要に応じて、2 番目の値をエスケープ文字に設定できます。
    • BT (または BETWEEN) - 最初の値と 2 番目の値の間。
  • 最初の値列 - この値は、演算子の最初の引数または下限として動作します。
  • 2 番目の値列 - この値は、演算子の 2 番目の引数または上限として動作します。

この権限エンティティに登録したレコードがデータアクセス制御の内容となります。
以下は権限エンティティのサンプルです。

権限エンティティ例

権限IDユーザID制限基準演算子最初の値2番目の値
1hiroki.ito@sap.com0FISCYEARBT 2022 2023
2hiroki.ito@sap.com0COUNTRYNAMEEQJapan 
3hiroki.ito@sap.com1FISCYEARBT20222023
4hiroki.ito@sap.com1REGIONNAMEEQNorth America 
5hiroki.ito@sap.com2FISCYEARGE2024 
6hiroki.ito@sap.com2CUSTOMERCPSport% 
7xxxxxx.yyyyyy@zzzzzz.com0CUSTOMERIDAll  
       

上記の権限エンティティレコードによって、ユーザID: hiroki.ito@sap.comには以下のようなデータアクセス制御がなされます。

  1. 制限0により、会計年度2022年から2023年までのJapanのデータを参照できます
  2. 制限1により、会計年度2022年から2023年までのNorth America地域のデータを参照できます
  3. 制限2により、会計年度2024年以降の"Sport"で始まる顧客名称のデータを参照できます。

また、ユーザID: xxxxxx.yyyyyy@zzzzzz.com は特権ユーザとしてすべてのデータを参照できます。
このように、AND条件であれば同一制限のレコードを登録し、OR条件であれば複数制限のレコードを登録することで動作させることができます。

CSVファイルで上記のようなレコードを作成したら、サイドナビゲーション領域でデータビルダをクリックし、CSVファイルをインポートして権限エンティティを作成することも可能です。権限エンティティ作成.png

権限エンティティレコード.png

これで権限エンティティが作成できました。

 

データアクセス制御の作成

続いてデータアクセス制御を作成します。
サイドナビゲーション領域で、データアクセス制御をクリックしてから必要に応じてスペースを選択し、新規データアクセス制御をクリックしてエディタを開きます。データアクセス制御.png

次に、一般セクションのプロパティを入力します。この時、構造は「演算子と値」を選択します。権限エンティティには、上記で作成した権限エンティティを選択します。また、ユーザ列にはユーザ ID が格納された列(多くの場メールアドレスの列)を選択します。

続いて基準セクションも入力します。
制限列、基準列、演算子の列、最初の値列、2番目の値列に権限エンティティで作成した列をそれぞれ選択します。データアクセス制御2.png

利用可能な基準すべてにチェックが入っていることを確認し、保存→デプロイします。
利用可能な基準.png

これでデータアクセス制御が作成できました。

 

データアクセス制御の設定

いよいよビューに対して作成したデータアクセス制御を設定します。
今回は事前に作成した顧客マスタディメンションビューを使用します。このビューには、2022年から2024年までの様々な地域や国の顧客情報が登録されています。作成したデータアクセス制御を設定し、参照可能なデータに制限をかけます。現時点では、データビューアではすべてのデータが閲覧できる状態です。

まず、ビューを選択した状態で右上の詳細ボタンからModelプロパティを開き、スクロールダウンしてデータアクセス制御の領域で+ボタンを押下してデータアクセス制御を設定します。データアクセス制御の設定.png

ポップアップウインドウで作成したデータアクセス制御を選択しOKをクリックします。

Modelプロパティの結合セクションで、ビューの列をデータアクセス制御で定義された基準列にマッピングします。マッピングが完了したらビューを保存してデプロイします。
データビューアをクリックするとデータアクセス制御の設定に従って参照できるデータがフィルタリングされていることが確認できます。データアクセス制御の設定2.png

データアクセス制御の設定3.png

これでデータアクセス制御が有効になりました。

 

おわりに

このように、SAP Datasphere では、"演算子と値"を用いた複雑なデータアクセス制御を作成することができ、きめ細やかな管理をすることが可能です。また、対象者の権限に変更があった場合も権限エンティティの内容を変更することでタイムリーにアクセス制御に反映することができます。必要に応じてこちらの機能をご活用ください。