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 | DROP | REFERENCES | ALTER | TRUNCATE } [,...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { CREATE | TEMPORARY | TEMP | ALTER } [,...] | ALL [ PRIVILEGES ] } ON DATABASE db_name [, ...] FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ] REVOKE [ GRANT OPTION FOR ] EXECUTE ON FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { EXECUTE } [,...] | ALL [ PRIVILEGES ] } ON PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...] FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ] REVOKE [ GRANT OPTION FOR ] USAGE ON LANGUAGE language_name [, ...] FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ] REVOKE [GRANT OPTION FOR] { { ALTER | DROP} [,...] | ALL [ PRIVILEGES ] } ON COPY JOB job_name [,...] FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
Amazon Redshift テーブルとビューに対する列レベルのアクセス許可の構文を次に示します。
REVOKE { { SELECT | UPDATE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { [ TABLE ] table_name [, ...] } FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ]
以下に、指定されたロールを持つユーザーおよびグループから ASSUMEROLE アクセス許可を取り消すための構文を示します。
REVOKE ASSUMEROLE ON { 'iam_role' [, ...] | default | ALL } FROM { user_name | ROLE role_name | GROUP group_name | PUBLIC } [, ...] FOR { ALL | COPY | UNLOAD | EXTERNAL FUNCTION | CREATE MODEL }
以下に、Redshift Spectrum と Lake Formation の統合構文を示します。
REVOKE [ GRANT OPTION FOR ] { SELECT | ALL [ PRIVILEGES ] } ( column_list ) ON EXTERNAL TABLE schema_name.table_name 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 } [, ...]
プロデューサー側のデータ共有のアクセス許可
以下は、REVOKE を使用してユーザーまたはロールから ALTER または SHARE アクセス許可を削除するための構文です。アクセス許可が取り消されたユーザーは、データ共有を変更したり、コンシューマーに使用を許可したりできなくなります。
REVOKE { ALTER | SHARE } ON DATASHARE datashare_name FROM { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP
group_name
| PUBLIC } [, ...]
以下は、REVOKE を使用してデータ共有へのコンシューマのアクセスを削除するための構文です。
REVOKE USAGE ON DATASHARE datashare_name FROM NAMESPACE 'namespaceGUID' [, ...] | ACCOUNT 'accountnumber' [ VIA DATA CATALOG ] [, ...]
以下は、Lake Formation アカウントからデータ共有の使用を取り消す例です。
REVOKE USAGE ON DATASHARE salesshare FROM ACCOUNT '123456789012' VIA DATA CATALOG;
コンシューマー側のデータ共有のアクセス許可
以下は、データ共有から作成された特定のデータベースまたはスキーマに対するデータ共有使用許可の REVOKE 構文です。WITH PERMISSIONS 句で作成されたデータベースから使用許可を取り消しても、基礎となるオブジェクトに付与されたオブジェクトレベルの許可を含め、ユーザーまたはロールに付与した追加の許可は取り消されません。そのユーザーまたはロールに使用許可を再付与しても、使用を取り消す前に持っていた追加の権限はすべて保持されます。
REVOKE USAGE ON { DATABASE shared_database_name [, ...] | SCHEMA shared_schema} FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
スコープ設定アクセス許可を使用すると、データベースまたはスキーマ内の特定タイプのすべてのオブジェクトに対するアクセス許可をユーザーまたはロールに付与できます。スコープ設定アクセス許可を持つユーザーやロールは、データベースまたはスキーマ内の現在および将来のすべてのオブジェクトに対して指定されたアクセス許可を持ちます。
データベースレベルのスコープ付きアクセス許可の範囲は、SVV_DATABASE_PRIVILEGES で確認できます。スキーマレベルのスコープ付きアクセス許可の範囲は、SVV_SCHEMA_PRIVILEGES で確認できます。
スコープ設定アクセス許可の詳細については、「スコープ設定アクセス許可」を参照してください。
以下は、ユーザーとロールからスコープ付きアクセス許可を取り消すための構文です。
REVOKE [ GRANT OPTION ] { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] } FOR SCHEMAS IN DATABASE db_name FROM { username | ROLE role_name } [, ...] REVOKE [ GRANT OPTION ] { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [PRIVILEGES] } } FOR TABLES IN { SCHEMA schema_name [ DATABASE db_name ] | DATABASE db_name } FROM { username | ROLE role_name } [, ...] REVOKE [ GRANT OPTION ] { EXECUTE | ALL [ PRIVILEGES ] } FOR FUNCTIONS IN { SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name } FROM { username | ROLE role_name } [, ...] REVOKE [ GRANT OPTION ] { EXECUTE | ALL [ PRIVILEGES ] } FOR PROCEDURES IN { SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name } FROM { username | ROLE role_name } [, ...] REVOKE [ GRANT OPTION ] USAGE FOR LANGUAGES IN DATABASE db_name FROM { username | ROLE role_name } [, ...] REVOKE [GRANT_OPTION] { { CREATE | ALTER | DROP} [,...] | ALL [ PRIVILEGES ] } FOR COPY JOBS IN DATABASE db_name FROM { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...]
スコープ設定アクセス許可では、関数とプロシージャのアクセス許可が区別されないことに注意してください。例えば、次のステートメントは、スキーマ Sales_schema
で bob
の関数とプロシージャの両方に対する EXECUTE
アクセス許可を取り消します。
REVOKE EXECUTE FOR FUNCTIONS IN SCHEMA Sales_schema FROM bob;
以下は、Amazon Redshift での機械学習モデルアクセス許可の構文です。
REVOKE [ GRANT OPTION FOR ] CREATE MODEL FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ] REVOKE [ GRANT OPTION FOR ] { EXECUTE | ALL [ PRIVILEGES ] } ON MODEL model_name [, ...] FROM { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ]
以下に、Amazon Redshift でロールのアクセス許可を取り消すための構文を示します。
REVOKE [ ADMIN OPTION FOR ] { ROLE role_name } [, ...] FROM { user_name } [, ...]
REVOKE { ROLE role_name } [, ...] FROM { ROLE role_name } [, ...]
以下に、Amazon Redshift でシステムのアクセス許可を取り消すための構文を示します。
REVOKE { { CREATE USER | DROP USER | ALTER USER | CREATE SCHEMA | DROP SCHEMA | ALTER DEFAULT PRIVILEGES | ACCESS CATALOG | CREATE TABLE | DROP TABLE | ALTER TABLE | CREATE OR REPLACE FUNCTION | CREATE OR REPLACE EXTERNAL FUNCTION | DROP FUNCTION | CREATE OR REPLACE PROCEDURE | DROP PROCEDURE | CREATE OR REPLACE VIEW | DROP VIEW | CREATE MODEL | DROP MODEL | CREATE DATASHARE | ALTER DATASHARE | DROP DATASHARE | CREATE LIBRARY | DROP LIBRARY | CREATE ROLE | DROP ROLE TRUNCATE TABLE VACUUM | ANALYZE | CANCEL }[, ...] } | { ALL [ PRIVILEGES ] } FROM { ROLE role_name } [, ...]
次の内容は、EXPLAIN プランのクエリにおける行レベルのセキュリティポリシーフィルタを説明する許可を取り消す構文です。この権限は、REVOKE ステートメントを使用して取り消すことができます。
REVOKE EXPLAIN RLS FROM ROLE rolename
次の内容は、クエリの行レベルのセキュリティポリシーをバイパスする許可を付与する構文です。
REVOKE IGNORE RLS FROM ROLE rolename
次の内容は、指定された行レベルのセキュリティポリシーから許可を取り消す構文です。
REVOKE SELECT ON [ TABLE ] table_name [, ...] FROM RLS POLICY policy_name [, ...]
パラメータ
- GRANT OPTION FOR
-
他のユーザーに特定の許可を付与するオプションのみを取り消し、許可自体は取り消しません。グループや PUBLIC の GRANT OPTION を取り消すことはできません。
- SELECT
-
SELECT ステートメントを使用して、テーブルやビューからデータを選択する許可を取り消します。
- INSERT
-
INSERT ステートメントまたは COPY ステートメントを使用して、データをテーブルにロードする許可を取り消します。
- UPDATE
-
UPDATE ステートメントを使用して、テーブル列を更新する許可を取り消します。
- DELETE
-
テーブルからデータ行を削除する許可を取り消します。
- REFERENCES
-
外部キー制限を作成する許可を取り消します。参照先テーブルと参照元テーブルの両方で、この許可を取り消してください。
- TRUNCATE
-
テーブルを切り捨てるアクセス許可を取り消します。このアクセス許可がない場合、テーブルの所有者またはスーパーユーザーだけがテーブルを切り捨てることができます。TRUNCATE コマンドの詳細については、「TRUNCATE」を参照してください。
- ALL [ PRIVILEGES ]
-
指定されたユーザーまたはグループから、使用可能なすべての許可を一括で取り消します。PRIVILEGES キーワードはオプションです。
注記
Amazon Redshift は、ルールおよび TRIGGER アクセス許可をサポートしていません。詳細については、「サポートされていない PostgreSQL 機能」を参照してください。
- ALTER
-
データベースオブジェクトに応じて、ユーザーまたはユーザーグループから以下のアクセス許可を取り消します。
-
テーブルの場合、ALTER はテーブルまたはビューを変更するアクセス許可を取り消します。詳細については、「ALTER TABLE」を参照してください。
-
データベースの場合、ALTER はデータベースを変更するアクセス許可を取り消します。詳細については、「ALTER DATABASE」を参照してください。
-
スキーマの場合、ALTER はスキーマの変更を取り消すことを許可します。詳細については、「ALTER SCHEMA」を参照してください。
-
外部テーブルの場合、ALTER は、Lake Formation で有効になっている AWS Glue Data Catalog 内のテーブルを変更するアクセス許可を取り消します。この許可は、Lake Formation を使用する場合にのみ適用されます。
-
- DROP
-
データベースオブジェクトに応じて、ユーザーまたはロールが持つ以下のアクセス許可を取り消します。
-
テーブルの場合、DROP はテーブルまたはビューを削除するアクセス許可を取り消します。詳細については、「DROP TABLE」を参照してください。
-
データベースの場合、DROP はデータベースを削除するアクセス許可を取り消します。詳細については、「DROP DATABASE」を参照してください。
-
スキーマの場合、DROP はスキーマを削除するアクセス許可を取り消します。詳細については、「DROP SCHEMA」を参照してください。
-
- ASSUMEROLE
-
指定したロールを持つユーザー、ロール、またはグループから COPY、UNLOAD、EXTERNAL FUNCTION、または CREATE MODEL コマンドを実行するアクセス許可を取り消します。
- ON [ TABLE ] table_name
-
テーブルまたはビューに関して、指定された許可を取り消します。TABLE キーワードはオプションです。
- ON ALL TABLES IN SCHEMA schema_name
-
参照されたスキーマ内のすべてのテーブルに指定された許可を取り消します。
- ( column_name [,...] ) ON TABLE table_name
-
Amazon Redshift テーブルまたはビューの指定した列のユーザー、グループ、または PUBLIC から指定された許可を取り消します。
- (column_list) ON EXTERNAL TABLE schema_name.table_name
-
参照されるスキーマで、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 ロールを示します。
- ROLE role_name
-
指定されたロールからアクセス許可を取り消します。
- GROUP group_name
-
指定されたユーザーグループから許可を取り消します。
- PUBLIC
-
すべてのユーザーから、指定された許可を取り消します。PUBLIC は、常にすべてのユーザーを含むグループを表します。各ユーザーのアクセス許可は、PUBLIC に付与されたアクセス許可、ユーザーが属するグループに付与されたアクセス許可、およびユーザーに個別に付与されたアクセス許可のすべてで構成されます。
Lake Formation 外部テーブルから PUBLIC を取り消すと、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 アクセス許可は、スキーマの作成だけを制御します。
- RESTRICT
-
ユーザーが直接付与したアクセス許可だけを取り消します。この動作がデフォルトです。
- 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
の使用を許可します。詳細については、「ストアドプロシージャのセキュリティおよび権限 」を参照してください。 - ON COPY JOB job_name
-
コピージョブに対する、指定されたアクセス許可を取り消します。
- FOR { ALL | COPY | UNLOAD | EXTERNAL FUNCTION | CREATE MODEL } [, ...]
-
アクセス許可を取り消す SQL コマンドを指定します。ALL を指定することで、COPY、UNLOAD、EXTERNAL FUNCTION、および CREATE MODEL ステートメントに対するアクセス許可を取り消すことができます。この句は、ASSUMEROLE アクセス許可の取り消しにのみ適用されます。
- ALTER
-
データ共有を所有していないユーザーまたはユーザーグループがデータ共有を変更できるようにする、ユーザーまたはユーザーグループの ALTER アクセス許可を取り消します。このアクセス許可は、データ共有にオブジェクトを追加または削除したり、プロパティ PUBLICACCESSIBLE を設定したりするために必要です。詳細については、「ALTER DATASHARE」を参照してください。
- SHARE
-
データ共有にコンシューマーをするための、ユーザーおよびユーザーグループのアクセス許可を取り消します。特定のコンシューマークラスターからデータ共有にアクセスするのを停止するには、このアクセス許可を取り消す必要があります。
- ON DATASHARE datashare_name
-
参照されるデータ共有に対する指定されたアクセス許可を付与します。
- FROM ユーザーネーム
-
アクセス許可を失うユーザーを示します。
- FROM GROUP group_name
-
アクセス許可を失うユーザーグループを示します。
- WITH GRANT OPTION
-
アクセス許可を失うユーザーが、他のユーザーの同じアクセス許可を取り消すことができることを示します。グループや PUBLIC の WITH GRANT OPTION を取り消すことはできません。
- USAGE
-
同じアカウント内のコンシューマーアカウントまたは名前空間に対して USAGE が取り消された場合、アカウント内の指定されたコンシューマーアカウントまたは名前空間は、読み込み専用でデータ共有およびデータ共有のオブジェクトにアクセスできません。
USAGE アクセス許可を取り消すと、コンシューマーからのデータ共有へのアクセス権が取り消されます。
- FROM NAMESPACE 'clusternamespace GUID'
-
データ共有へのアクセス許可を失うコンシューマーと同じアカウントの名前空間を示します。名前空間は、128 ビットの英数字のグローバル一意識別子 (GUID) を使用します。
- FROM ACCOUNT 'accountnumber' [ VIA DATA CATALOG ]
-
データ共有へのアクセス許可を失うコンシューマーと別のアカウントのアカウント番号を示します。「VIA DATA CATALOG」を指定すると、データ共有の使用を Lake Formation のアカウントから取り消すことになります。アカウント番号を省略すると、クラスターを所有するアカウントから取り消すことになります。
-
指定されたデータ共有に作成された指定されたデータベースに対する指定された使用アクセス許可を取り消します。
-
指定されたデータ共有に作成された指定されたスキーマに対する指定されたアクセス許可を取り消します。
- FOR { SCHEMAS | TABLES | FUNCTIONS | PROCEDURES | LANGUAGES | COPY JOBS} IN
-
アクセス許可を取り消すデータベースオブジェクトを指定します。IN に続くパラメータは、取り消されたアクセス許可のスコープを定義します。
- CREATE MODEL
-
指定されたデータベースに機械学習モデルを作成する CREATE MODEL アクセス許可を取り消します。
- ON MODEL model_name
-
特定のモデルについての EXECUTE アクセス許可を取り消します。
- ACCESS CATALOG
-
ロールがアクセスできるオブジェクトの関連メタデータを表示するアクセス許可を取り消します。
- [ ADMIN OPTION FOR ] { role } [, ...]
-
指定された (WITH ADMIN OPTION を使用している) ユーザーから取り消すロール。
- FROM { role } [, ...]
-
取り消すために指定したロールが付与されているロール。
使用に関する注意事項
REVOKE の使用上の注意事項の詳細については、「使用に関する注意事項」を参照してください。
例
REVOKE の使用方法の例については、「例」を参照してください。