メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012年12月1日)

REVOKE

テーブルの作成権限や更新権限などのアクセス権限をユーザーまたはユーザーグループから削除します。

外部テーブルに対してアクセス権限の GRANT または REVOKE を実行することはできません。代わりに、外部スキーマに対してアクセス権限の付与または削除を実行します。

REVOKE ステートメント内で削除する権限を指定します。権限を付与するには、GRANT コマンドを使用します。

構文

Copy
REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE db_name [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] EXECUTE ON FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] USAGE ON LANGUAGE language_name [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]

Parameters

GRANT OPTION FOR

他のユーザーに特定の権限を付与するオプションのみを取り消し、権限自体は取り消しません。グループや PUBLIC の GRANT OPTION を取り消すことはできません。

SELECT

SELECT ステートメントを使って、テーブルやビューからデータを選択する権限を取り消します。

INSERT

INSERT ステートメントまたは COPY ステートメントを使って、データをテーブルにロードする権限を取り消します。

UPDATE

UPDATE ステートメントを使って、テーブル列を更新する権限を取り消します。

DELETE

テーブルからデータ行を削除する権限を取り消します。

REFERENCES

外部キー制限を作成する権限を取り消します。参照先テーブルと参照元テーブルの両方で、この権限を取り消してください。

ALL [ PRIVILEGES ]

指定されたユーザーまたはグループから、使用可能なすべての権限を一括で取り消します。PRIVILEGES キーワードはオプションです。

ON [ TABLE ] table_name

テーブルまたはビューに関して、指定された権限を取り消します。TABLE キーワードはオプションです。

ON ALL TABLES IN SCHEMA schema_name

参照されたスキーマ内のすべてのテーブルに指定された権限を取り消します。

GROUP group_name

指定されたユーザーグループから権限を取り消します。

PUBLIC

すべてのユーザーから指定された権限を取り消します。PUBLIC は、常にすべてのユーザーを含むグループを表します。各ユーザーの権限には、PUBLIC に付与された権限、ユーザーが属するグループに付与された権限、およびそのユーザーに付与された権限のすべてが含まれます。

CREATE

データベースオブジェクトに応じて、ユーザーまたはグループから以下の権限を取り消します。

  • データベースでは、REVOKE の CREATE 句を使用してユーザーがデータベース内でスキーマを作成することを阻止します。

  • スキーマでは、REVOKE の CREATE 句を使用してユーザーがスキーマ内でオブジェクトを作成することを阻止します。 オブジェクトの名前を変更するには、CREATE 権限と、名前を変更するオブジェクトを所有している必要があります。

注記

デフォルトでは、すべてのユーザーは PUBLIC スキーマに対して、CREATE 権限と USAGE 権限を所有しています。

TEMPORARY | TEMP

指定されたデータベース内で、一時テーブルを作成する権限を取り消します。

注記

デフォルトでは、PUBLIC グループの自動メンバーシップにより、一時テーブルを作成する権限がユーザーに付与されます。ユーザーが一時テーブルを作成する権限を削除するには、PUBLIC グループから TEMP 権限を取り消し、特定のユーザーまたはユーザーのグループに対して、一時テーブルを作成する権限を明示的に付与します。

ON DATABASE db_name

指定されたデータベースに関する権限を取り消します。

USAGE

特定のスキーマ内のオブジェクトに関する USAGE 権限を取り消すため、ユーザーはこれらのオブジェクトにアクセスできなくなります。これらのオブジェクトに関する特定の操作は個別に取り消す必要があります (関数に関する EXECUTE 権限など)。

注記

デフォルトでは、すべてのユーザーは PUBLIC スキーマに対して、CREATE 権限と USAGE 権限を所有しています。

ON SCHEMA schema_name

指定されたスキーマに関する権限を取り消します。スキーマ権限を使って、テーブルの作成を制御できます。データベースの CREATE 権限は、スキーマの作成だけを制御します。

CASCADE

ユーザーが付与オプションのある権限を保持していて、他のユーザーに権限を付与した場合、他のユーザーが保持する権限は依存権限になります。最初のユーザーが保有する権限または付与オプションを取り消した際に、それに依存する権限が存在していた場合、CASCADE を指定すると、依存する権限も取り消されます。巣でない場合、取り消しアクションは失敗します。

例えば、ユーザー A がユーザー B に付与オプションを使って権限を付与し、ユーザーがユーザー C に権限を付与した場合、ユーザー A はユーザー B からの付与オプションを取り消し、その後 CASCADE オプションを使って、ユーザー C の権限を取り消すことができます。

RESTRICT

ユーザーが直接付与した権限だけを取り消します。この動作がデフォルトです。

EXECUTE ON FUNCTION function_name

特定の関数を実行する権限を取り消します。関数名が重複する場合があるため、関数の引数リストが含まれている必要があります。 詳細については、「UDF の命名」を参照してください。

USAGE ON LANGUAGE language_name

言語の使用に関する権限を取り消します。 Python UDF の場合、plpythonu を使用します。SQL UDF の場合、sql を使用します。

UDF を作成するには、SQL または plpythonu (Python) 用の言語で使用のアクセス権限を持っている必要があります。デフォルトでは、USAGE ON LANGUAGE SQL が PUBLIC に許可されますが、特定のユーザーまたはグループに明示的に USAGE ON LANGUAGE PLPYTHONU を許可する必要があります。

SQL の使用を取り消すには、最初に PUBLIC から使用を取り消し、次に SQL UDF の作成を許可されている特定のユーザーまたはグループにのみ、SQL での使用を許可します。次の例では、PUBLIC から SQL での使用を取り消し、ユーザーグループ udf_devs に使用を許可します。

Copy
revoke usage on language sql from PUBLIC; grant usage on language sql to group udf_devs;

詳細については、「UDF のセキュリティおよび権限」を参照してください。

使用に関する注意事項

オブジェクトから権限を取り消すには、次の条件のうち 1 つを満たす必要があります。

  • オブジェクトの所有者であること。

  • スーパーユーザーであること。

  • そのオブジェクトと権限に関する付与権限を持つこと。

    たとえば、次のコマンドは、employees テーブルに対して SELECT コマンドを実行する能力と、他のユーザーに対して同じ権限を付与し取り消す能力の両方をユーザー HR に与えます。

    Copy
    grant select on table employees to HR with grant option;

    HR が SELECT 以外の操作に関する権限や、employees 以外のテーブルに関する権限を取り消すことができないことに注意してください。

スーパーユーザーは、オブジェクトの権限を設定する GRANT コマンドと REVOKE コマンドに関係なく、すべてのオブジェクトにアクセスできます。

PUBLIC は、常にすべてのユーザーを含むグループを表します。デフォルトでは、PUBLIC スキーマに対して、PUBLIC のすべてのメンバーが CREATE 特権および USAGE 特権を持ちます。PUBLIC スキーマのすべてのユーザーのアクセス許可を制限するには、まず PUBLIC スキーマの PUBLIC からすべてのアクセス許可を取り消し、次に特定のユーザーまたはグループに権限を付与します。次の例では、PUBLIC スキーマのテーブル作成権限を管理します。

Copy
revoke create on schema public from public;

次の例では、SALES テーブルに関する INSERT 権限を GUESTS ユーザーグループから取り消します。このコマンドを実行すると、GUESTS のメンバーは、INSERT コマンドを使って SALES テーブルにデータをロードすることができなくなります。

Copy
revoke insert on table sales from group guests;

次の例では、QA_TICKIT スキーマのすべてのテーブルに対する SELECT 権限をユーザー fred から取り消します。

Copy
revoke select on all tables in schema qa_tickit from fred;

次の例では、選択する権限をユーザー bobr のビューから取り消します。

Copy
revoke select on table eventview from bobr;

次の例では、TICKIT データベースで一時テーブルを作成する権限をすべてのユーザーから取り消します。

Copy
revoke temporary on database tickit from public;