REVOKE

Name

REVOKE -- はアクセス権を削除します

Synopsis

REVOKE { { SELECT | INSERT | UPDATE | DELETE | REFERENCES }
  [,...] | ALL [ PRIVILEGES ] }
  ON tablename
  FROM { username | groupname | PUBLIC } [, ...]
  [ CASCADE | RESTRICT ]

REVOKE { SELECT | ALL [ PRIVILEGES ] }
  ON sequencename
  FROM { username | groupname | PUBLIC } [, ...]
  [ CASCADE | RESTRICT ]

REVOKE { EXECUTE | ALL [ PRIVILEGES ] }
  ON FUNCTION progname
    ( [ [ argmode ] [ argname ] argtype ] [, ...] )
  FROM { username | groupname | PUBLIC } [, ...]
  [ CASCADE | RESTRICT ]

REVOKE { EXECUTE | ALL [ PRIVILEGES ] }
  ON PROCEDURE progname
    [ ( [ [ argmode ] [ argname ] argtype ] [, ...] ) ]
  FROM { username | groupname | PUBLIC } [, ...]
  [ CASCADE | RESTRICT ]

REVOKE { EXECUTE | ALL [ PRIVILEGES ] }
  ON PACKAGE packagename
  FROM { username | groupname | PUBLIC } [, ...]
  [ CASCADE | RESTRICT ]

REVOKE role [, ...] FROM { username | groupname | PUBLIC }
  [, ...]
  [ CASCADE | RESTRICT ]

REVOKE { CONNECT | RESOURCE | DBA } [, ...]
  FROM { username | groupname } [, ...]

REVOKE CREATE [ PUBLIC ] DATABASE LINK
  FROM { username | groupname }

REVOKE DROP PUBLIC DATABASE LINK
  FROM { username | groupname }

REVOKE EXEMPT ACCESS POLICY
  FROM { username | groupname }

Description

REVOKE コマンドは、1つ以上のロールから以前に付与された特権を取り消します。キーワード PUBLIC は、すべての役割の暗黙的に定義されたグループを指します。

特権タイプの意味については、 GRANT コマンドの説明を参照してください。

特定のロールには、直接付与された特権、現在のメンバーであるロールに付与された特権、および PUBLIC に付与された特権の合計があることに注意してください。したがって、たとえば、 PUBLIC から SELECT 特権を取り消すことは、必ずしもすべての役割がオブジェクトの SELECT 特権を失ったことを意味するものではありません。

権限が付与オプションで付与されていた場合、その権限の付与オプションとその権限自体が取り消されます。

ユーザーが付与オプションで特権を保持し、他のユーザーにそれを付与した場合、それらの他のユーザーが保持する特権は依存特権と呼ばれます。最初のユーザーが保持している特権または付与オプションが取り消され、依存する特権が存在する場合、 CASCADE を指定するとそれらの依存する特権も取り消されます。そうでない場合、取り消しアクションは失敗します。この再帰的取り消しは、この REVOKE コマンドの対象であるユーザーを追跡可能な一連のユーザーを通じて付与された特権にのみ影響します。したがって、影響を受けるユーザーは、他のユーザーからも付与された特権を効果的に保持できます。

注釈

CASCADE は、Oracleデータベースと互換性のあるオプションではありません。デフォルトでは、Oracleは常に依存特権をカスケードしますが、AdvancedServerでは CASCADE キーワードを明示的に指定する必要があります。そうしないと、 REVOKE コマンドが失敗します。

ロールのメンバーシップを取り消す場合、代わりに GRANT OPTION は ADMIN OPTION と呼ばれますが、動作は似ています。

Notes

ユーザーは、そのユーザーによって直接付与された特権のみを取り消すことができます。たとえば、ユーザー「13」が付与オプション付きの特権をユーザー「14」に付与し、ユーザー「14」がそれをユーザー「15」に付与した場合、ユーザー「13」は「」から直接特権を取り消すことはできません15」。代わりに、ユーザー「13」はユーザー「14」から付与オプションを取り消し、 CASCADE オプションを使用して、ユーザー「15」から順に特権を取り消すことができます。別の例として、「13」と「14」の両方が「15」に同じ特権を付与した場合、「13」は自身の付与を取り消すことができますが、「14」の付与は取り消せないため、「15」は実質的に特権を持ちます。

オブジェクトの非所有者がオブジェクトに対する REVOKE 特権を試みると、ユーザーがオブジェクトに対する特権を持っていない場合、コマンドは完全に失敗します。何らかの特権が利用可能である限り、コマンドは続行しますが、ユーザーが許可オプションを持っている特権のみを取り消します。 REVOKE ALL PRIVILEGES フォームは、付与オプションが保持されていない場合に警告メッセージを発行し、他のフォームは、コマンドで明示的に指定された特権のいずれかの付与オプションが保持されていない場合に警告を発行します。(原則として、これらのステートメントはオブジェクト所有者にも適用されますが、所有者は常にすべての付与オプションを保持しているものとして扱われるため、ケースは発生しません。)

スーパーユーザーが GRANT または REVOKE コマンドを発行することを選択した場合、コマンドは、影響を受けるオブジェクトの所有者によって発行されたかのように実行されます。すべての特権は最終的にオブジェクト所有者から取得されるため(許可オプションのチェーンを介して間接的に)、スーパーユーザーがすべての特権を取り消すことは可能ですが、これには上記の CASCADE の使用が必要になる場合があります。

REVOKE は、影響を受けるオブジェクトの所有者ではないが、オブジェクトを所有するロールのメンバーであるロール、またはオブジェクトに対する WITH GRANT OPTION の特権を保持するロールのメンバーでもあるロールによって実行できます。この場合、コマンドは、実際にオブジェクトを所有するか、特権 WITH GRANT OPTION を保持するロールによって発行されたかのように実行されます。たとえば、テーブル t1 がロール「10」によって所有され、そのロール u1 がメンバーである場合、 u1 は「10」によって付与されたとして記録された t1 に対する特権を取り消すことができます。これには、 u1 とロール「10」の他のメンバーによる助成金が含まれます。

REVOKE を実行するロールが複数のロールメンバーシップパスを介して間接的に特権を保持している場合、コマンドを実行するために使用するロールが指定されていません。そのような場合は、 SET ROLE を使用して REVOKE を実行する特定の役割になることがベストプラクティスです。そうしないと、意図した権限以外の権限が取り消されるか、まったく取り消されない場合があります。

注釈

AdvancedServerの ALTER ROLE コマンドは、パブリックデータベースリンクまたはプライベートデータベースリンクの作成に必要なシステム権限を取り消したり、きめ細かいアクセス制御ポリシー( DBMS_RLS )を免除する構文もサポートしています。 ALTER ROLE 構文は、Oracleデータベースと互換性のある REVOKE コマンドと機能的に同等です。

Examples

テーブル emp のパブリックの挿入特権を取り消します。

REVOKE INSERT ON emp FROM PUBLIC;

ビュー salesemp のユーザー mary からすべての特権を取り消します。

REVOKE ALL PRIVILEGES ON salesemp FROM mary;

これは実際には「私が付与したすべての特権を取り消す」ことを意味することに注意してください。

ユーザー joe からロール admins のメンバーシップを取り消します。

REVOKE admins FROM joe;

ユーザー joe から CONNECT 特権を取り消します。

REVOKE CONNECT FROM joe;

ユーザー joe から CREATE DATABASE LINK 特権を取り消します。

REVOKE CREATE DATABASE LINK FROM joe;

ユーザー joe から EXEMPT ACCESS POLICY 特権を取り消します。

REVOKE EXEMPT ACCESS POLICY FROM joe;

See Also

GRANT、 SETROLE