2

HANA Cloudのデータに行レベルアクセス制御をかけてSACで可視化する

 1 year ago
source link: https://blogs.sap.com/2022/12/28/row-level-security-with-hana-cloud-and-sac-sso/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
December 28, 2022

HANA Cloudのデータに行レベルアクセス制御をかけてSACで可視化する

皆さん、こんにちは。今回はHANA CloudとSAP Analytics Cloud (以下、SAC) を使って、HANAのデータに行レベルでデータアクセス制限をかける方法についてご紹介します。

2022-12-28_13-13-49.png

SACのユーザーとHANA Cloudのアクセスユーザーは別々に各システムで設定し、HANA Cloudでユーザーテーブルを作成しマッピング作業が必要なことに注意しましょう。

  • ブログの手順に沿ってSACとのSSOを設定したユーザーを作成
  • データの入ったテーブル T1と、T1をSACから見るためのCalculation Viewとして、CV_T1_second を事前にHANA Cloudに作成。T1 は下記のようなテーブルです。IDは日本の都道府県コードが入っています。
T1_Capture.png

①BASでHANA Cloudプロジェクトを作成

プロジェクトの作成方法についてはこちらのブログを参考にしてください。

②ユーザーテーブルを作成

HANA Cloud Database Explorerを使って、ユーザーテーブル USERSを作成します。運用上の観点から、ユーザーテーブルはBASのプロジェクト作成時に自動生成されるHDIコンテナとは異なる HDIコンテナの中にUSERSテーブルを作成しすることにしました。BAS ProjectのHDIコンテナと異なる場所にあるテーブルのデータへアクセスする方法はこちらのチュートリアルを参考にしながら、ユーザーテーブルへアクセス権があるユーザーに対してのUser Provided Serviceを作成してください。

USERS%u30C6%u30FC%u30D6%u30EB

USERSテーブル

②プロシージャを作成

BASのテンプレートを使用してプロシージャ Test_row_HDI.hdbprocedure を作成し、下記のように変更します。3行目の権限がDEFINERになっているか確認してください。

PROCEDURE "Test_row_HDI"( OUT sql_expr NVARCHAR(50))
   LANGUAGE SQLSCRIPT
   SQL SECURITY DEFINER
   --DEFAULT SCHEMA <default_schema_name>
   READS SQL DATA AS
BEGIN
    SELECT 'ID=' || "ROLE_ID" INTO sql_expr
    FROM "USERS"
    WHERE "DB_USER_ID" = SESSION_USER;
END;
procedure_2022-10-11_16-08-13.png

④分析権限(Analytic Privilege)を作成

BASのテンプレートを使用してAnalytic Privilegeを作成します。今回は TEST_Dynamic_priという分析権限を作成しました。下記のイメージのように、分析権限を動的に設定し先ほどのプロシージャを選択します。

2022-12-28_13-30-46.png

⑤ロール(Role)を作成

BASのテンプレートを使用してRoleを作成します。今回はROLE_Dynamicというロールを作成しました。作成したロールを開き、Analytics Privilegesで先ほど作成した分析権限を選択します。

2022-12-28_13-37-35.png

次に、同じRoleのObject Privilegedで行レベルで制限をかけたいCalculation View(HANA view) : 今回は CV_T1_second を選択します

2022-12-28_13-38-15.png

⑥Role付与

ブログの手順に沿ってSACとのSSOを設定したユーザーに、④で作成したRoleをGRANT文で付与します。(もしくは、HANA Cockpit 内 User ManagementアプリでRoleを付与します。)

DEMO_SAMLユーザーのロールをHANA Cockpitのユーザーマネジメントから確認すると下記のようにロールが付与されていることが確認できます。

RoleAssignment_2022-10-11_15-47-24-Copy.png

以上で手順は終了です!

SAC上で、こちらのブログの手順で作成したSSOの接続を使用してモデルを作成し、そのモデルでストーリーを作成すると、アクセス権限があるデータのみが表示されます。

2022-10-31_16-42-43.png

最後までお読みいただきありがとうございました。

Special thanks to Ikeguchi-san!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK