Amazon Redshift
データベース開発者ガイド

REVOKE

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

ON SCHEMA 構文を使用するデータベースユーザーおよびユーザーグループには、外部スキーマに対する USAGE 権限の GRANT (付与) または REVOKE (取り消し) のみを行うことができます。AWS Lake Formation で ON EXTERNAL SCHEMA を使用する場合は、AWS Identity and Access Management (IAM) ロールに対して、権限の GRANT (付与) および REVOKE (取り消し) のみ行うことができます。権限のリストについては、該当する構文を参照してください。

ストアドプロシージャの場合、USAGE ON LANGUAGE plpgsql アクセス許可はデフォルトで PUBLIC に付与されます。EXECUTE ON PROCEDURE アクセス許可は、デフォルトで所有者とスーパーユーザーにのみ付与されます。

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

構文

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 ] { { EXECUTE } [,...] | ALL [ PRIVILEGES ] } ON PROCEDURE procedure_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 ]

以下の構文では、Redshift Spectrum と Lake Formation を統合します。

REVOKE [ GRANT OPTION FOR ] { SELECT | ALL [ PRIVILEGES ] } ON EXTERNAL TABLE schema_name.table_name ( column_list ) [, ...] FROM { IAM_ROLE iam_role } [, ...] REVOKE [ GRANT OPTION FOR ] { { SELECT | ALTER | DROP | DELETE | INSERT } [, ...] | ALL [ PRIVILEGES ] } ON EXTERNAL TABLE schema_name.table_name [, ...] FROM { { IAM_ROLE iam_role } [, ...] | PUBLIC } REVOKE [ GRANT OPTION FOR ] { { CREATE | ALTER | DROP } [, ...] | ALL [ PRIVILEGES ] } ON EXTERNAL SCHEMA schema_name [, ...] FROM { IAM_ROLE iam_role } [, ...]

パラメータ

GRANT OPTION FOR

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

SELECT

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

INSERT

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

UPDATE

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

DELETE

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

REFERENCES

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

ALL [ PRIVILEGES ]

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

ALTER

Lake Formation で有効になっている AWS Glue データカタログ のテーブルを変更する権限を取り消します。この権限は、Lake Formation を使用する場合にのみ適用されます。

DROP

Lake Formation で有効になっている AWS Glue データカタログ のテーブルを削除する権限を取り消します。この権限は、Lake Formation を使用する場合にのみ適用されます。

ON [ TABLE ] table_name

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

ON ALL TABLES IN SCHEMA schema_name

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

ON EXTERNAL TABLE schema_name.table_name (column_list)

参照されるスキーマの指定された Lake Formation テーブル (および列) の IAM ロールから指定された権限を取り消します。

ON EXTERNAL TABLE schema_name.table_name

参照されるスキーマの指定された Lake Formation テーブルの IAM ロールから指定された権限を取り消します。

ON EXTERNAL SCHEMA schema_name

参照されるスキーマの IAM ロールから指定された権限を取り消します。

FROM IAM_ROLE iam_role

権限が取り消される IAM ロールを示します。

GROUP group_name

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

PUBLIC

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

PUBLIC を Lake Formation EXTERNAL TABLE から取り消すと、Lake Formation の everyone グループから権限が取り消されます。

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 の命名」を参照してください。

EXECUTE ON PROCEDURE procedure_name

特定のストアドプロシージャに対する EXECUTE 権限を取り消します。ストアドプロシージャ名は重複する場合があるため、プロシージャの引数リストを含める必要があります。詳細については、「ストアドプロシージャの名前付け」を参照してください。

EXECUTE ON ALL PROCEDURES IN SCHEMA procedure_name

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

USAGE ON LANGUAGE language_name

言語に対する USAGE 権限を取り消します。Python ユーザー定義関数 (UDF) の場合、plpythonu を使用します。SQL UDF の場合、sql を使用します。ストアドプロシージャの場合、plpgsql を使用します。

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

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

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

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

ストアドプロシージャの使用を取り消すには、最初に PUBLIC に対して使用を取り消します。次に、SQL UDF の作成を許可された特定のユーザーやグループにのみ、plpgsql の使用を許可します。詳細については、「ストアドプロシージャのセキュリティおよび権限 」を参照してください。

使用に関する注意事項

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

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

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

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

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

    grant select on table employees to HR with grant option;

    HR は、SELECT 以外のオペレーションに関する権限や employees 以外のテーブルに関する権限を取り消すことはできません。

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

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

revoke create on schema public from public;

Lake Formation テーブルから権限を取り消すには、テーブルの外部スキーマに関連付けられた IAM ロールに、外部テーブルから権限を取り消す権限が必要です。次の例では、IAM ロール myGrantor に関連付けられた外部スキーマを作成します。IAM ロール myGrantor には、他のユーザーからアクセス許可を取り消すアクセス許可があります。REVOKE コマンドは、外部スキーマに関連付けられている IAM ロール myGrantor のアクセス許可を使用して、IAM ロール myGrantee のアクセス許可を取り消します。

create external schema mySchema from data catalog database 'spectrum_db' iam_role 'arn:aws:iam::123456789012:role/myGrantor' create external database if not exists;
revoke select on external table mySchema.mytable from iam_role 'arn:aws:iam::123456789012:role/myGrantee';

注記

Lake Formation で有効になっている AWS Glue データカタログ の ALL アクセス許可が IAM ロールにもある場合、ALL アクセス許可は取り消されません。SELECT アクセス許可のみ取り消されます。Lake Formation アクセス許可は、Lake Formation コンソールで表示することができます。

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

revoke insert on table sales from group guests;

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

revoke select on all tables in schema qa_tickit from fred;

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

revoke select on table eventview from bobr;

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

revoke temporary on database tickit from public;