スケーラブルデータベースサーバ HiRDB Version 8 SQLリファレンス
REVOKE(権限削除)
機能
ユーザに与えているDBA権限,スキーマ定義権限,CONNECT権限,私用RDエリアの利用権限,及びアクセス権限を取り消します。
Sun Java System Directory Server連携機能使用時はロールに与えているアクセス権限を取り消せます。
(1)REVOKE DBA(DBA権限削除),REVOKE SCHEMA(スキーマ定義権限削除),REVOKE CONNECT(CONNECT権限削除),REVOKE RDAREA(RDエリア利用権限削除)
REVOKE DBA(DBA権限削除),REVOKE SCHEMA(スキーマ定義権限削除),REVOKE CONNECT(CONNECT権限削除),REVOKE RDAREA(RDエリア利用権限削除)について説明します。
使用権限
- DBA権限を持つユーザ
- DBA権限,スキーマ定義権限,CONNECT権限,及びRDエリアの利用権限を取り消します。
形式
REVOKE{ DBA FROM 認可識別子〔,認可識別子〕…
|SCHEMA FROM 認可識別子〔,認可識別子〕…
|CONNECT FROM 認可識別子〔,認可識別子〕…
|RDAREA RDエリア名〔,RDエリア名〕…
FROM{認可識別子〔,認可識別子〕…|PUBLIC}}
|
オペランド
- DBA FROM
- DBA権限を取り消す場合に指定します。
- 認可識別子〔,認可識別子〕…
- DBA権限を取り消すユーザの認可識別子を指定します。
- SCHEMA FROM 認可識別子〔,認可識別子〕…
- SCHEMA FROM
- スキーマ定義権限を取り消す場合に指定します。
- 認可識別子〔,認可識別子〕…
- スキーマ定義権限を取り消すユーザの認可識別子を指定します。
- CONNECT FROM 認可識別子〔,認可識別子〕…
- CONNECT FROM
- CONNECT権限を取り消す場合に指定します。
- 認可識別子〔,認可識別子〕…
- CONNECT権限を取り消すユーザの認可識別子を指定します。
- RDAREA RDエリア名〔,RDエリア名〕…
FROM{認可識別子〔,認可識別子〕…| PUBLIC }
- RDエリア名〔,RDエリア名〕
- 利用権限を取り消すRDエリアの名称を指定します。
- 認可識別子〔,認可識別子〕…
- 利用権限を取り消すユーザの認可識別子を指定します。
- PUBLIC
- 指定した公用RDエリアの利用権限を取り消す場合に指定します。
留意事項
- 認可していない権限,又は既に取り消している権限を再度,取り消しできます。
- RDエリアの利用権限を取り消されるユーザがそのRDエリア中に表,インデクス,又は順序数生成子を持っている場合,RDエリアの権限を取り消すことはできません。
- スキーマに表がある場合,スキーマ権限を取り消すことはできません。
- 最大16個の私用RDエリア名を指定できます。
- 最大1,600個のユーザの認可識別子を指定できます。
- GRANTのPUBLICで与えた権限は,REVOKEのPUBLICで取り消してください。
- 自分自身のDBA権限を取り消すことはできません。
- DBA権限,又はスキーマを持っているユーザのCONNECT権限を取り消すことはできません。
- CONNECT権限を取り消すと,スキーマ定義権限も取り消されます。
- REVOKEは,OLTP下のX/Openに従ったUAPから指定できません。
- 監査人のスキーマ定義権限,及びCONNECT権限を取り消すことはできません。
使用例
- ユーザ(認可識別子:USER1)に与えているDBA権限を取り消します。
REVOKE DBA FROM USER1
- ユーザ(認可識別子:USER2)に与えているスキーマ定義権限を取り消します。
REVOKE SCHEMA FROM USER2
- ユーザ(認可識別子:USER3)に与えているCONNECT権限を取り消します。
REVOKE CONNECT FROM USER3
- ユーザ(認可識別子:USER4〜6)に与えているRDエリア(RDA1,RDA2)の利用権限を取り消します。
REVOKE RDAREA RDA1,RDA2
FROM USER4,USER5,USER6
- 公用RDエリアとして定義したRDエリア(RDA3)を私用RDエリアとして再定義します(USER1にRDエリア利用権限を与えます)。
REVOKE RDAREA RDA3 FROM PUBLIC
GRANT RDAREA RDA3 TO USER1
(2)REVOKE アクセス権限(アクセス権限削除)
REVOKE アクセス権限(アクセス権限削除)について説明します。
使用権限
- 表の所有者
- GRANT(アクセス権限定義)で与えたアクセス権限を取り消すことができます。
形式
REVOKE {アクセス権限〔,アクセス権限〕…|ALL〔PRIVILEGES〕}
ON 〔認可識別子.〕表識別子
FROM{認可識別子〔,認可識別子〕…|PUBLIC
|GROUP ロール名〔,ロール名〕…}
〔WITH PROGRAM〕
アクセス権限::={SELECT|INSERT|DELETE|UPDATE}
|
オペランド
- {アクセス権限〔,アクセス権限〕…|ALL〔PRIVILEGES〕}
- アクセス権限
アクセス権限を取り消す場合に指定します。なお,同じアクセス権限は指定できません。
- ALL〔PRIVILEGES〕
指定した表に対して,アクセス権限で指定できるすべてのアクセス権限を取り消す場合に指定します。
- アクセス権限::={SELECT|INSERT|DELETE|UPDATE}
- SELECT
- SELECT権限を取り消す場合に指定します。
- INSERT
- INSERT権限を取り消す場合に指定します。
- DELETE
- DELETE権限を取り消す場合に指定します。
- UPDATE
- UPDATE権限を取り消す場合に指定します。
- 認可識別子
- アクセス権限を取り消す表の所有者の認可識別子を指定します。
- パブリックビューのアクセス権限を取り消す場合は,認可識別子にPUBLICを指定してください。
- 表識別子
- アクセス権限を取り消す表の名前を指定します。
- FROM{認可識別子〔,認可識別子〕…|PUBLIC|GROUP ロール名〔,ロール名〕…}〔WITH PROGRAM〕
- 認可識別子
- アクセス権限を取り消すユーザの認可識別子を指定します。ユーザの認可識別子は,最大1,600個指定できます。ただし,同じ認可識別子は指定できません。
- PUBLIC
- GRANTのPUBLIC指定で与えたアクセス権限を取り消す場合に指定します。
- GROUP ロール名
- アクセス権限を取り消すロール名を指定します。ロール名はSun Java System Directory Serverで管理する情報の一つです。
- ロール名についての規則を次に示します。
- ロール名は,最大1,600個指定できます。
- 同じロール名は指定できません。
- ロール名は,ディレクトリサーバ連携機能を使用するときだけ指定できます。
- WITH PROGRAM
- ビュー表の基になる表のSELECT権限を取り消すときに,SELECT権限の取消によって削除されるビュー表を使用する関数,手続き,及びトリガの有効なSQLオブジェクトを無効にしたいときに指定します。
共通規則
- 自分自身の持っているアクセス権限を取り消すことはできません。
- 与えていない権限,又は既に取り消した権限を再度取り消すこともできます。
- GRANTのPUBLICで与えた権限は,REVOKEのPUBLICで取り消してください。
PUBLICを指定して権限が与えられている場合,特定のユーザのアクセスを許さないようにするためには,PUBLICを指定して権限を削除し,認可識別子を指定して必要なユーザに対して権限を与え直してください。
- 表の所有者が他人に与えたSELECT権限を取り消した場合,その他人がその表を利用して定義したビュー表は削除されます。
- ビュー定義で使用した表に対するアクセス権限,又はビュー表の基の表に対するアクセス権限を,ビュー表所有者から取り消す場合の規則を次に示します。
- <ビュー表V1の定義>
CREATE VIEW V1※1(VSCODE,VSNAME,VTANKA)
AS SELECT SCODE,SNAME,TANKA
FROM ZAIKO※2 WHERE SCODE =
(SELECT SCODE FROM JUTYU※3)
- <ビュー表V2の定義>
CREATE VIEW V2※4(VSSCODE,VSNYUKOBI)
AS SELECT SCODE,NYUKOBI
FROM NYUKO※5
- <ビュー表V1からのビュー表VV1の定義>
CREATE VIEW VV1※6(VVSCODE,VVTANKA)
AS SELECT VSCODE,VTANKA
FROM V1※1 WHERE SCODE =
(SELECT VSSCODE FROM V2※4
WHERE VSNYUKOBI > DATE('1995-09-21'))
- ビュー表所有者からビュー定義で使用した表(※2,※3,※5)に対するSELECT権限を取り消す場合,そのビュー表(※1,※4),及びそのビュー表を使用して定義するビュー表(※6)も削除されます。
(例1)
ビュー表所有者からJUTYU(※3)に対するSELECT権限を取り消す場合,V1(※1)及びVV1(※6)が削除されます。
(例2)
ビュー表所有者からNYUKO(※5)に対するSELECT権限を取り消す場合,V2(※4),及びVV1(※6)が削除されます。
- ビュー表所有者からビュー表の基になる表(※2,※5)に対するアクセス権限を取り消す場合,そのビュー表(※1,※4),及びそのビュー表を基に定義するビュー表(※6)に対するアクセス権限も取り消されます。なお,ここでいうアクセス権限とは,SELECT権限を除いた権限です。
(例1)
ビュー表所有者からZAIKO(※2)に対するアクセス権限を取り消す場合,V1(※1),及びVV1(※6)に対するアクセス権限も削除されます。
(例2)
ビュー表所有者からNYUKO(※5)に対するアクセス権限を取り消す場合,V2(※4)に対するアクセス権限も削除されます。
取り消されたアクセス権限を再度与えるには,取り消したビュー表の基になる表に対するアクセス権限をビュー表所有者に再度与えて,そのビュー表を削除してからビュー表を再度定義してください。
(例1)の場合,ZAIKO(※2)に対するアクセス権限をビュー表所有者に与えて,V1(※1)を削除してから(V1を削除するとVV1も削除されます),V1(※1),VV1(※6)の順で再度定義します。
(例2)の場合,NYUKO(※5)に対するアクセス権限をビュー表所有者に与えて,V2(※4)を削除してからV2(※4)を再度定義します。
- WITH PROGRAMを省略した場合,SELECT権限の取り消しによって削除される,ビュー表を使用する手続き及びトリガの有効なSQLオブジェクトがあると,その権限は削除できません。
- 実行中のSQLオブジェクトが無効になる場合,Java手続き中からREVOKEは実行できません。
留意事項
- PUBLICに対して与えた権限,特定ユーザに与えた権限,又はロールに与えた権限の取り消しについては,組み合わせによって結果が異なります。組み合わせを次の図に示します。
図3-1 PUBLICに与えた権限,特定ユーザに与えた権限,又はロールに与えた権限の取り消し
- REVOKEは,OLTP下のX/Openに従ったUAPから指定できません。
- WITH PROGRAMを指定して関数,手続き,及びトリガの有効なSQLオブジェクトを無効にした場合,ディクショナリ表SQL_ROUTINE_RESOURCES中の無効となった関数,手続き,及びトリガの情報は削除されます。
- WITH PROGRAMを指定して無効にした関数,手続き,及びトリガのSQLオブジェクトを実行するためには,ALTER ROUTINE,ALTER PROCEDURE,又はALTER TRIGGERを実行して,関数,手続き,及びトリガの有効なSQLオブジェクトを再作成しておく必要があります。
使用例
- ユーザ(認可識別子:USER1)に与えた在庫表(ZAIKO)を検索する権限 (SELECT権限)を取り消します。
REVOKE SELECT ON ZAIKO FROM USER1
- すべてのユーザに対して与えた在庫表(ZAIKO)をアクセスするすべての権限の中で,DELETE権限だけを取り消します。
REVOKE DELETE ON ZAIKO FROM PUBLIC
- ロール(ロール名:SOUMU)に対して与えた在庫表(ZAIKO)をアクセスするすべての権限を取り消します。
REVOKE ALL ON ZAIKO FROM GROUP SOUMU
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.