本ブログでは、SAP HANA Cloud (以下、「HANA Cloud」) を初めて使われる方を対象に、Free Trial 環境を使用した操作手順を解説します。
本内容は「
DBエンジニア」向けの内容になります。
今回は「
権限ロールを作成し、一般ユーザーに付与する」方法についてご紹介します。
全体の流れは下記の通りです。
(1) 権限ロールの作成
(2) 一般ユーザーの作成と権限付与
ロールの作成
「ロール」とは「権限をまとめたオブジェクト」です。テーブルやビューに対するアクセス権限を各DBユーザーにそれぞれ付与するのではなく、ロールに対して複数のテーブルやビューに対するアクセス権限を付与して、そのロールを各DBユーザーに付与する運用が一般的です。
それでは、ロールを作成します。
画面上部メニューの「
View」から「
Find Command…」を選択します。
検索ボックスで表示されたリストの中から「
SAP HANA Create SAP HANA Database Artifact」を選択します。


Artifact Typeのリストから「
hdbrole」を選択してください。検索ボックスに「
role」と入力するとリスト表示されます。

ロール名は「
第一営業部向けのアクセス権限ロール」を想定して、「
SALES01_access_role」とします。

ファイルを選択して、「
Object Privileges」タブを選択し、オブジェクトを選択します。
今回はHANA Viewの「
V_ORDERS」だけを
検索(SELECT)できるための権限とします。



ファイルを選択し、デプロイのアイコンをクリックします。

一般ユーザーの作成と権限付与
HDI コンテナーはアクセス権限が厳格なため、API (プロシージャ) を用いた権限付与を行うことが通常ですが、SQL文での権限管理に慣れたDBエンジニアが多いと思いますので、ここでは
DB管理者(DBADMIN)が権限ロールをSQL文で一般DBユーザーにロール管理できる手順について解説します。
※ DB管理者とDBアクセス権限管理者を分離することも可能ですが、今回はその手順は割愛します。
まずは一般DBユーザーを作成します。
SAP HANA CockpitにDBADMINでログインし、「
User Management」のリンクをクリックします。

下記画面のように「
+」ボタンをクリックして「
Create User」を選択します。

ユーザー名には任意のユーザー名を入力して、画面の通りに設定します。
・Creation of Objects in Own Schema :
No (自身のスキーマを作成しない)
・PUBLIC role :
Yes (システムのカタログ情報を検索できるようにする)
・Disable ODBC/JDBC Access :
No (ODBC/JDBCでのアクセスを許可する)

パスワードのチェックを入れて、英数字で大文字/小文字を含めた8文字以上の複雑なパスワードを指定してください。
また、この一般ユーザーが初回にDBログインする際にパスワード変更を求めないようにするため、「
Force Password Change on Next Logon」には「
No」を指定します。

ユーザー作成後、ロールを付与します。
一般DBユーザーを選択後、「
Assign Roles」をクリックします。

下記の手順通り、ロールを付与します。
ロールは「
GLOBAL_DWH」スキーマ内にある「
SALE01_access_role」です。
ここで重要なのは、「
HDI Container API」を「
NO」に設定することです。これでDB内でのロール管理が可能になります。




ロールの付与が完了しました。
それでは、一般DBユーザーでログインして、V_ORDERSビューにアクセスできるか確認しましょう。
SAP HANA Cockpitの「
Change Authentication」をクリックし、一般DBユーザーでログイン後、SQL Consoleでアクセスします。



DBにアクセスできたら、リストから「
Column Views」を選択し、
GLOBAL_DWHスキーマ内の
V_ORDERSビューのデータが検索できるか確認します。


また、リストから「Tables」を選択し、テーブルに対してアクセスが不可であることも確認してください。

いかがでしたでしょうか ?
今までと同様のDB管理者が慣れ親しんだ権限付与が行えたかと思います。
それでは、次はSAP Analytics Cloudとの連携について確認していきましょう。
次回 :
SACとのSSOの設定
参考 :
SAP Analytics CloudとSAP HANA Cloudとの連携