無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

REVOKE

名前

REVOKE -- アクセス権限を取り消す

概要

REVOKE [ GRANT OPTION FOR ]
    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
    [, ...] | ALL [ PRIVILEGES ] }
    ON { [ TABLE ] 

table_name

 [, ...]
         | ALL TABLES IN SCHEMA 

schema_name

 [, ...] }
    FROM { [ GROUP ] 

role_name

 | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { SELECT | INSERT | UPDATE | REFERENCES } ( 

column_name

 [, ...] )
    [, ...] | ALL [ PRIVILEGES ] ( 

column_name

 [, ...] ) }
    ON [ TABLE ] 

table_name

 [, ...]
    FROM { [ GROUP ] 

role_name

 | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { USAGE | SELECT | UPDATE }
    [, ...] | ALL [ PRIVILEGES ] }
    ON { SEQUENCE 

sequence_name

 [, ...]
         | ALL SEQUENCES IN SCHEMA 

schema_name

 [, ...] }
    FROM { [ GROUP ] 

role_name

 | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
    ON DATABASE 

database_name

 [, ...]
    FROM { [ GROUP ] 

role_name

 | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON DOMAIN 

domain_name

 [, ...]
    FROM { [ GROUP ] 

role_name

 | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON FOREIGN DATA WRAPPER 

fdw_name

 [, ...]
    FROM { [ GROUP ] 

role_name

 | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON FOREIGN SERVER 

server_name

 [, ...]
    FROM { [ GROUP ] 

role_name

 | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { EXECUTE | ALL [ PRIVILEGES ] }
    ON { FUNCTION 

function_name

 ( [ [ 

argmode

 ] [ 

arg_name

 ] 

arg_type

 [, ...] ] ) [, ...]
         | ALL FUNCTIONS IN SCHEMA 

schema_name

 [, ...] }
    FROM { [ GROUP ] 

role_name

 | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON LANGUAGE 

lang_name

 [, ...]
    FROM { [ GROUP ] 

role_name

 | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
    ON LARGE OBJECT 

loid

 [, ...]
    FROM { [ GROUP ] 

role_name

 | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
    ON SCHEMA 

schema_name

 [, ...]
    FROM { [ GROUP ] 

role_name

 | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { CREATE | ALL [ PRIVILEGES ] }
    ON TABLESPACE 

tablespace_name

 [, ...]
    FROM { [ GROUP ] 

role_name

 | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON TYPE 

type_name

 [, ...]
    FROM { [ GROUP ] 

role_name

 | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ ADMIN OPTION FOR ]
    

role_name

 [, ...] FROM 

role_name

 [, ...]
    [ CASCADE | RESTRICT ]

説明

REVOKE コマンドは、1つ以上のロールに対して、以前に与えた権限を取り消します。 PUBLIC キーワードは暗黙的に定義された全ロールからなるグループです。

権限の種類の意味については GRANT コマンドの説明を参照してください。

全てのロールは、そのロールに直接許可された権限、現在属しているロールに許可された権限、 PUBLIC に許可された権限という3つの権限を合わせた権限を持っていることに注意してください。 したがって、例えば、 PUBLIC から SELECT 権限を取り消すことは、必ずしも全てのロールがそのオブジェクトに対する SELECT 権限を失うことを意味しません。 権限が直接許可されているロール、あるいは、別ロール経由で許可されているロールは、 SELECT 権限を持ち続けます。 同様にユーザから SELECT を取りあげても、 PUBLIC またはほかのメンバとして属するロールが SELECT 権限を持つ場合、 SELECT の使用を拒否できません。

GRANT OPTION FOR が指定された場合、権限自体ではなく、その権限のグラントオプションのみが取り消されます。 指定されていなければ、権限とグラントオプションの両方が取り消されます。

グラントオプション付きの権限を保持しているユーザが、その権限を他ユーザに与えていた場合、与えられたユーザが保持する権限は依存権限と呼ばれます。 権限を与えたユーザ自身の権限やグラントオプションが取り消された時、その権限に依存権限が存在する場合、 CASCADE が指定されていると依存権限も取り消されます。指定されていなければ、権限の取り消しが失敗します。 この再帰的な権限の取り消しは、ユーザ権限の連鎖を通じて与えられた権限の中でも、 REVOKE を実行されたユーザから追跡可能な範囲にのみ影響します。 したがって、依存権限を持つユーザが他のユーザからも同じ権限を与えられている場合は、 REVOKE が実行された後もその権限を保持している可能性があります。

テーブルの権限を取り消す場合、対応する列の権限(もしあれば)も自動的に、そのテーブルの各列から取り消されます。 一方、ロールがテーブルに対する権限を持つ場合、個々の列から同じ権限を取り消しても影響ありません。

ロールのメンバ資格を取り消す場合、同様に振舞いますが、 GRANT OPTION ではなく ADMIN OPTION が呼び出されます。 また、このコマンド構文では無意味な GROUP という単語を受け付けないことに注意してください。

注釈

既存のテーブルや列に付与された権限を表示するためには psql \dp コマンドを使用してください。 この書式については GRANT を参照してください。 テーブル以外のオブジェクトについて、その権限を表示することができる他の \d コマンドが存在します。

取り消すことができるのは、ユーザが直接付与した権限のみです。 例えば、もし、ユーザAがグラントオプションを付けてユーザBに権限を与え、その後、ユーザBがユーザCにその権限を与えたとすると、ユーザAはユーザCの権限を直接取り消すことはできません。 その代わり、ユーザAがユーザBのグラントオプションを CASCADE オプション付きで取り消すことで、ユーザCに与えられた権限を取り消すことができます。 別の状況を考えてみます。AとBの両方が同じ権限をCに与えた場合、AはAの与えた権限を取り消すことはできますが、Bの与えた権限を取り消すことはできません。 したがって、Cは実質的にその権限を持ち続けることになります。

オブジェクトの所有者以外がそのオブジェクト上の権限に対して REVOKE を実行した場合、ユーザがオブジェクトに対して何の権限も持っていなければ、即座にコマンドが失敗します。 何らかの権限があればコマンド処理が続行されますが、取り消すことができるのはそのユーザがグラントオプションを持つ権限のみです。 REVOKE ALL PRIVILEGES 構文をまったく権限を持たない状態で実行すると、警告が出力されます。 他の構文の場合は、そのコマンドで指名した権限に対するグラントオプションを持たない状態で実行すると、警告が出力されます (原理上、上記の説明はオブジェクト所有者にも適用されますが、所有者は常に全てのグラントオプションを保持しているので、こうした問題が発生することはありません)。

スーパーユーザが GRANT REVOKE コマンドを発行した場合、そのコマンドは、対象のオブジェクトの所有者によって発行されたものであるかのように動作します。 根本的には全ての権限はオブジェクトの所有者から渡されるものなので(ただし、グラントオプションの連鎖により間接的に渡される場合もありますが)、スーパーユーザは、全ての権限を取り消すことができます。 ただし、この場合は上述の CASCADE を使用する必要があります。

REVOKE は、影響するオブジェクトの所有者以外のロールによって実行することもできますが、 オブジェクトを所有するロールのメンバであるか、そのオブジェクトに対し WITH GRANT OPTION 権限を持つロールのメンバでなければなりません。 この場合、 そのオブジェクトの実際の所有者ロールまたは WITH GRANT OPTION 権限を持つロールによって発行されたかのように、このコマンドは実行されます。 例えば、 t1 テーブルが g1 ロールによって所有され、 u1 g1 ロールのメンバであるとします。 この場合、 u1 g1 で付与されたものと記録されている権限を取り上げることができます。 これには、 u1 が付与した権限と g1 ロールの他のメンバによって付与された権限が含まれます。

REVOKE を実行したロールが、ロールの持つ複数メンバ資格の経路を通して間接的に必要な権限を持つ場合、 どのロールが権限を付与したロールとして記録されるかについては指定されません。 こうした場合、 SET ROLE を使用して、 REVOKE を行わせたい特定のロールになることを推奨します。 こうしないと、意図しないロールによって権限を取り上げることになったり、取り上げ自体が失敗することになったりします。

publicに与えた films テーブルに対する挿入権限を取り消します。

REVOKE INSERT ON films FROM PUBLIC;

kinds ビューから、 manuel ユーザに与えた全ての権限を取り上げます。

  
REVOKE ALL PRIVILEGES ON kinds FROM manuel;

これは "自分が与えた全ての権限を取り消す" ことを意味します。

ユーザ joe からロール admins 内のメンバ資格を取り上げます。

REVOKE admins FROM joe;

互換性

GRANT コマンドの互換性についての注釈は REVOKE にも当てはまります。 標準では、キーワード RESTRICT CASCADE のどちらかが必須です。 しかし、 PostgreSQL ではデフォルトで RESTRICT と仮定されます。

関連項目

GRANT


powered by SEO.CUG.NET