1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

(QA) IBM i Db2 for i のRCACを設定するとODBCでどのように見えますか?(行、列をユーザーID他でマスキング)

Last updated at Posted at 2024-08-25

首記のご質問をいただき簡単にテストしてみました。

RCAC + WINDOWS11 ODBCのテスト概要

下記の環境でテストしました。

image.png

RCAC:行列レベルアクセス制御:Row and Column Access Control の略です。

手順① マスクしていない売掛残データ TKUZAN の確認

下記の左から3つ目のカラムがサンプルデータです。
QEOLに含まれるTOKMSPをコピー、リネームしたものです。

売掛残 TKUZAN カラムを列マスクでマスキングしてみます。

image.png

手順② RCACで列マスク

RCACの設定は全てSQLから実行します。

下記のサンプルSQLをACのスクリプト実行画面から流しました。(インフォセンター記載のサンプルを改修・簡略化したものです。)

**黄色部がユーザーID毎のアクセス制御(列マスク)をかけている行です。

CREATE MASK SQL文を実行するユーザーはSECOFRクラスであっても追加で以下例のようにQIBM_DB_SECADM機能の使用権限の付与が必要です。

CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(GOMA) USAGE(*ALLOWED)

image.png

コピペはコチラから。

CREATE MASK GOMALIB.MASK_TKUZAN ON GOMALIB.TOKMSPRCAC
   FOR COLUMN TKUZAN RETURN
      CASE
         WHEN (VERIFY_GROUP_FOR_USER(SESSION_USER,'GOMA') = 1)
            THEN TKUZAN
         WHEN (VERIFY_GROUP_FOR_USER(SESSION_USER,'GOMA2') = 1)
            THEN  999999999
         ELSE 88888888
      END
   ENABLE;

COMMIT;

ALTER TABLE GOMALIB.TOKMSPRCAC
   ACTIVATE COLUMN ACCESS CONTROL;

COMMIT;

SELECT *  FROM GOMALIB.TOKMSPRCAC;

手順③ テスト結果

**一般ユーザー:GOMAでODBC接続した際は、2つ上の画像のようにTKUZANカラムの値がそのまま表示されます。

制限ユーザー:GOMA2でODBC接続した場合、下記のようにTKUZANカラムが99999999 と表示されます。

image.png

制限ユーザー:GOMA3でODBC接続した場合、下記のようにTKUZANカラムが88888888 と表示されます。

image.png

テスト結果から考察

・列MASKはそのカラム(フィールド)の属性に合わせて設定する必要があります。
 - 今回、TKUZANは数値フィールドのため、Null , 文字列は指定できませんでした。

今回のサンプルではTKUZANという数値フィールドをSQL文で操作していますが、別なSQL文の指定(CASE式の別な書き方)で列MASKを設定すれば、結果的に数値フィールドもNULL値で表示できます。
続きの記事はこちらです

参考URL

インフォセンターIBM i 7.5 : IBM i SQL CREATE MASK ステートメント
https://www.ibm.com/docs/ja/i/7.5?topic=statements-create-mask

1
0
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?