Hitachi

ノンストップデータベース HiRDB Version 10 システム運用ガイド(Windows(R)用)


2.7.2 ロールの運用手順

次の3つのロールを作成してUSER1,USER2,USER3の権限を設定する場合の,ロールの運用手順を,図「ロールの概要」に基づいて説明します。

ロールの運用手順(使用するSQL文,及び操作)を次に示します。

表2‒12 ロールの運用手順

運用手順

使用するSQL文概要

定義系SQLによるロールの定義

表・インデクスなどリソース定義

定義系SQL

ロールの定義

CREATE ROLE

ロールへのアクセス権限付与

GRANT アクセス権限

ユーザへのロール利用権限付与

GRANT ロール名 TO ユーザ名

ロールへのロール利用権限付与

GRANT ロール名 TO ロール名

ロールの使用

使用するロールの設定,現在ロールの無効化

SET ROLE

ロールが持つアクセス権限の変更

ロールからのアクセス権限取り消し

REVOKE アクセス権限

ロールへのアクセス権限付与

GRANT アクセス権限

ロール利用権限の取り消し

ユーザからのロール利用権限取り消し

REVOKE ロール名 FROM ユーザ

ロールからのロール利用権限取り消し

REVOKE ロール名 FROM ロール名

ロールの削除

ロールの削除

DROP ROLE

〈この項の構成〉

(1) 表・インデクスなどのリソース定義

ロールでアクセス権限を管理する表・インデクスなどリソースを定義します。

(2) ロールの定義

実行者 HiRDB管理者又はユーザ権限を管理する人(DBA権限保持者)

定義系SQLのCREATE ROLE文で,次に示すロールを作成します。

例題1

ロールROLEAを定義します。

  CREATE ROLE ROLEA
例題2

ロールROLEBを定義します。

  CREATE ROLE ROLEB
例題3

ロールROLEABを定義します。

  CREATE ROLE ROLEAB

(3) ロールへのアクセス権限付与

実行者 表の所有者

ロールを作成した後に,定義系SQLのGRANT文でロールにアクセス権限を付与します。

例題1

実行者(認可識別子:USER001)が所有している表(TA1,TA2)に対して,ロール(ROLEA)にSELECT権限を与えます。

  GRANT SELECT ON USER001.TA1 TO ROLEA
  GRANT SELECT ON USER001.TA2 TO ROLEA
例題2

実行者(認可識別子:USER002)が所有している表(TB1,TB2)に対して,ロール(ROLEB)にUPDATE権限を与えます。

  GRANT UPDATE ON USER002.TB1 TO ROLEB
  GRANT UPDATE ON USER002.TB2 TO ROLEB

(4) ユーザへのロール利用権限付与

実行者 ロールの作成者

ロールを作成してアクセス権限を付与した後に,定義系SQLのGRANT文でユーザにロールの利用権限を付与します。

例題1

ロール(ROLEA)のロール利用権限をユーザ(USER001)に与えます。

  GRANT ROLEA TO USER001
例題2

ロール(ROLEB)のロール利用権限をユーザ(USER002)に与えます。

  GRANT ROLEB TO USER002

(5) ロールへのロール利用権限付与

実行者 ロールの作成者

ロールを作成してアクセス権限を付与した後に,ロールに対して定義系SQLのGRANT文でロールの利用権限を付与します。また,付与したロール(ROLEAB)の利用権限を,ユーザ(USER003)に付与します。

例題

ロール(ROLEA,ROLEB)のロール利用権限をロール(ROLEAB)に与えます。

  GRANT ROLEA,ROLEB TO ROLEAB

ロール(ROLEAB)のロール利用権限をユーザ(USER003)に与えます。

  GRANT ROLEAB TO USER003

(6) 使用するロールの設定

ロールを使用する場合,使用するロールを現在ロールに設定するとロールが持つ権限を使用できます。現在ロールの設定をしないとロール利用権限を持っていてもロールが持つ権限を使用できません。

また,複数のロールのロール利用権限を持っている場合は,SET ROLE文を実行することで現在ロールを変更できます。なお,トランザクション実行中は,現在ロールを変更できません。

次の方法で,使用する現在ロールを設定します。なお,複数のロールを一度に使用することはできません。

実行者 ロール利用権限保持者

制御系SQLのSET ROLE文で次に示すロールを設定します。

例題

ロールROLEAを現在ロールに設定します。

  SET ROLE ROLEA

(7) 現在ロールの無効化

実行者 ロール利用権限保持者

制御系SQLのSET ROLE文(NONE指定)で設定されている現在ロールを無効化します。

例題

現在ロール(ROLEA)を無効化します。

SET ROLE NONE

(8) ロールからのアクセス権限取り消し

実行者 表の所有者

定義系SQLのREVOKE文で,ロールからアクセス権限を取り消します。

例題

表TA1,TA2のSELECT権限をロール(ROLEA)から取り消します。

  REVOKE SELECT ON USER001.TA1 FROM ROLEA
  REVOKE SELECT ON USER001.TA2 FROM ROLEA

(9) ロールへのアクセス権限付与

実行者 表の所有者

定義系SQLのGRANT文で,ロールにアクセス権限を付与します。

例題1

実行者(認可識別子:USER001)が所有している表(TA1)に対して,ロール(ROLEA)にDELETE権限を与えます。

  GRANT DELETE ON USER001.TA1 TO ROLEA
例題2

実行者(認可識別子:USER001)が所有している表(TA2)に対して,ロール(ROLEA)に全アクセス権限を与えます。

  GRANT ALL ON USER001.TA2 TO ROLEA

(10) ユーザからのロール利用権限取り消し

実行者 ロールの作成者

定義系SQLのREVOKE文で,ユーザに付与されたロール利用権限を取り消します。

例題

ユーザ(USER001)に付与された,ロール(ROLEA)のロール利用権限を取り消します。

  REVOKE ROLEA FROM USER001

(11) ロールからのロール利用権限取り消し

実行者 ロールの作成者

定義系SQLのREVOKE文で,ロールに付与されたロール利用権限を取り消します。

例題

ロール(ROLEAB)に付与された,ロール(ROLEA,ROLEB)のロール利用権限を取り消します。

  REVOKE ROLEA,ROLEB FROM ROLEAB

(12) ロールの削除

ロールを定義系SQLのDROP ROLE文で削除します。

なお,ロールが持つアクセス権限の取り消しやロール利用権限の取り消しを事前に行っていない場合は,関連するリソース(アクセス権限,ロール利用権限)を同時に削除します。

実行者 ロールの作成者

ロールを,定義系SQLのDROP ROLE文で削除します。

例題

ロール(ROLEA)を削除します。

  DROP ROLE ROLEA