

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# REVOKE
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](r_GRANT.md) コマンドを使用します。

## 構文
構文

```
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 } [, ...]    

REVOKE [GRANT OPTION FOR]
{ { ALTER | DROP | USAGE } [,...] | ALL [ PRIVILEGES ] }
    ON TEMPLATE template_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 アクセス許可の取り消し


以下に、指定されたロールを持つユーザーおよびグループから 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 }
```

### Lake Formation の Redshift Spectrum のアクセス許可の取り消し


以下に、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\$1DATABASE\$1PRIVILEGES](r_SVV_DATABASE_PRIVILEGES.md) で確認できます。スキーマレベルのスコープ付きアクセス許可の範囲は、[SVV\$1SCHEMA\$1PRIVILEGES](r_SVV_SCHEMA_PRIVILEGES.md) で確認できます。

スコープ設定アクセス許可の詳細については、「[スコープ設定アクセス許可](t_scoped-permissions.md)」を参照してください。

以下は、ユーザーとロールからスコープ付きアクセス許可を取り消すための構文です。

```
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 } [, ...]      

REVOKE [ GRANT OPTION ]
{ {ALTER | DROP  | USAGE } [,...] | ALL [ PRIVILEGES ] }
FOR TEMPLATES IN
{ SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name }
FROM { username | 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 EXPLAIN { RLS | MASKING } FROM ROLE rolename 
```

次の内容は、クエリの行レベルのセキュリティポリシーをバイパスする許可を取り消す構文です。

```
REVOKE IGNORE RLS FROM ROLE rolename 
```

次の内容は、指定されたセキュリティポリシーから SELECT 許可を取り消す構文です。可能なセキュリティポリシーには、行レベルのセキュリティポリシーと動的データマスキングポリシーが含まれます。

```
REVOKE SELECT ON [ TABLE ] table_name [, ...]
            FROM { RLS | MASKING } POLICY policy_name [, ...]
```

## パラメータ
パラメータ

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

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

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

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

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

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

TRUNCATE  
テーブルを切り捨てるアクセス許可を取り消します。このアクセス許可がない場合、テーブルの所有者またはスーパーユーザーだけがテーブルを切り捨てることができます。TRUNCATE コマンドの詳細については、「[TRUNCATE](r_TRUNCATE.md)」を参照してください。

ALL [ PRIVILEGES ]   
指定されたユーザーまたはグループから、使用可能なすべての許可を一括で取り消します。PRIVILEGES キーワードはオプションです。  
 Amazon Redshift は、ルールおよび TRIGGER アクセス許可をサポートしていません。詳細については、「[サポートされていない PostgreSQL 機能](c_unsupported-postgresql-features.md)」を参照してください。

ALTER  
データベースオブジェクトに応じて、ユーザーまたはユーザーグループから以下のアクセス許可を取り消します。  
+ テーブルの場合、ALTER はテーブルまたはビューを変更するアクセス許可を取り消します。詳細については、「[ALTER TABLE](r_ALTER_TABLE.md)」を参照してください。
+ データベースの場合、ALTER はデータベースを変更するアクセス許可を取り消します。詳細については、「[ALTER DATABASE](r_ALTER_DATABASE.md)」を参照してください。
+ スキーマの場合、ALTER はスキーマの変更を取り消すことを許可します。詳細については、「[ALTER SCHEMA](r_ALTER_SCHEMA.md)」を参照してください。
+ 外部テーブルの場合、ALTER は、Lake Formation で有効になっている AWS Glue Data Catalog 内のテーブルを変更するアクセス許可を取り消します。この許可は、Lake Formation を使用する場合にのみ適用されます。

DROP  
データベースオブジェクトに応じて、ユーザーまたはロールが持つ以下のアクセス許可を取り消します。  
+  テーブルの場合、DROP はテーブルまたはビューを削除するアクセス許可を取り消します。詳細については、「[DROP TABLE](r_DROP_TABLE.md)」を参照してください。
+  データベースの場合、DROP はデータベースを削除するアクセス許可を取り消します。詳細については、「[DROP DATABASE](r_DROP_DATABASE.md)」を参照してください。
+  スキーマの場合、DROP はスキーマを削除するアクセス許可を取り消します。詳細については、「[DROP SCHEMA](r_DROP_SCHEMA.md)」を参照してください。

ASSUMEROLE  <a name="assumerole"></a>
指定したロールを持つユーザー、ロール、またはグループから COPY、UNLOAD、EXTERNAL FUNCTION、または CREATE MODEL コマンドを実行するアクセス許可を取り消します。

ON [ TABLE ] *table\$1name*   
テーブルまたはビューに関して、指定された許可を取り消します。TABLE キーワードはオプションです。

ON ALL TABLES IN SCHEMA *schema\$1name*   
参照されたスキーマ内のすべてのテーブルに指定された許可を取り消します。

( *column\$1name* [,...] ) ON TABLE *table\$1name*   <a name="revoke-column-level-privileges"></a>
Amazon Redshift テーブルまたはビューの指定した列のユーザー、グループ、または PUBLIC から指定された許可を取り消します。

(*column\$1list*) ON EXTERNAL TABLE *schema\$1name.table\$1name*   <a name="revoke-external-table-column"></a>
参照されるスキーマで、Lake Formation テーブルの指定された列の IAM ロールから、指定された許可を取り消します。

ON EXTERNAL TABLE *schema\$1name.table\$1name*   <a name="revoke-external-table"></a>
参照されるスキーマの指定された Lake Formation テーブルの IAM ロールから、指定された許可を取り消します。

ON EXTERNAL SCHEMA *schema\$1name*   <a name="revoke-external-schema"></a>
参照されるスキーマの IAM ロールから、指定された許可を取り消します。

FROM IAM\$1ROLE *iam\$1role*   <a name="revoke-from-iam-role"></a>
許可が取り消される IAM ロールを示します。

ROLE *role\$1name*   
指定されたロールからアクセス許可を取り消します。

GROUP *group\$1name*   
指定されたユーザーグループから許可を取り消します。

PUBLIC   
すべてのユーザーから、指定された許可を取り消します。PUBLIC は、常にすべてのユーザーを含むグループを表します。各ユーザーのアクセス許可は、PUBLIC に付与されたアクセス許可、ユーザーが属するグループに付与されたアクセス許可、およびユーザーに個別に付与されたアクセス許可のすべてで構成されます。  
Lake Formation 外部テーブルから PUBLIC を取り消すと、Lake Formation の *everyone* グループからアクセス許可が取り消されます。

CREATE   
データベースオブジェクトに応じて、ユーザーまたはグループから以下のアクセス許可を取り消します。  
+ データベースでは、REVOKE の CREATE 句を使用してユーザーがデータベース内でスキーマを作成することを阻止します。
+ スキーマでは、REVOKE の CREATE 句を使用してユーザーがスキーマ内でオブジェクトを作成することを阻止します。オブジェクトの名前を変更するには、CREATE アクセス許可を持ち、名前を変更するオブジェクトを所有している必要があります。
デフォルトでは、PUBLIC スキーマに対して、すべてのユーザーが CREATE と USAGE アクセス許可を持ちます。

TEMPORARY \$1 TEMP   
指定されたデータベースに一時テーブルを作成するアクセス許可を取り消します。  
デフォルトでは、PUBLIC グループの自動メンバーシップにより、一時テーブルを作成するアクセス許可がユーザーに付与されます。ユーザーが一時テーブルを作成するためのアクセス許可を削除するには、PUBLIC グループから TEMP アクセス許可を取り消してから、特定のユーザーまたはユーザーのグループに対して、一時テーブルを作成するアクセス許可を明示的に付与します。

ON DATABASE *db\$1name*   
指定されたデータベースに関するアクセス許可を取り消します。

USAGE   
特定のスキーマ内のオブジェクトに対する USAGE アクセス許可を取り消します。ユーザーはこれらのオブジェクトにアクセスできなくなります。これらのオブジェクトに関する特定のアクションは、個別に取り消す必要があります (関数に対する EXECUTE アクセス許可など)。  
デフォルトでは、PUBLIC スキーマに対して、すべてのユーザーが CREATE と USAGE アクセス許可を持ちます。

ON SCHEMA *schema\$1name*   
指定されたスキーマに関するアクセス許可を取り消します。スキーマアクセス許可を使用して、テーブルの作成を制御できます。データベースの CREATE アクセス許可は、スキーマの作成だけを制御します。

RESTRICT   
ユーザーが直接付与したアクセス許可だけを取り消します。この動作がデフォルトです。

EXECUTE ON PROCEDURE *procedure\$1name*   
特定のストアドプロシージャに対する EXECUTE アクセス許可を取り消します。ストアドプロシージャ名は重複する場合があるため、プロシージャの引数リストを含める必要があります。詳細については、「[ストアドプロシージャの名前付け](stored-procedure-naming.md)」を参照してください。

EXECUTE ON ALL PROCEDURES IN SCHEMA *procedure\$1name*   
参照されるスキーマ内のすべてのプロシージャに対する指定されたアクセス許可を取り消します。

USAGE ON LANGUAGE *language\$1name*   
言語に対する 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 のセキュリティとアクセス許可](udf-security-and-privileges.md)」を参照してください。  
ストアドプロシージャの使用を取り消すには、最初に PUBLIC に対して使用を取り消します。次に、SQL UDF の作成を許可された特定のユーザーやグループにのみ、`plpgsql`の使用を許可します。詳細については、「[ストアドプロシージャのセキュリティおよび権限](stored-procedure-security-and-privileges.md)」を参照してください。

ON COPY JOB *job\$1name*  <a name="on-copy-job-revoke"></a>
コピージョブに対する、指定されたアクセス許可を取り消します。

FOR \$1 ALL \$1 COPY \$1 UNLOAD \$1 EXTERNAL FUNCTION \$1 CREATE MODEL \$1 [, ...]  <a name="revoke-for"></a>
アクセス許可を取り消す SQL コマンドを指定します。ALL を指定することで、COPY、UNLOAD、EXTERNAL FUNCTION、および CREATE MODEL ステートメントに対するアクセス許可を取り消すことができます。この句は、ASSUMEROLE アクセス許可の取り消しにのみ適用されます。

ALTER  
データ共有を所有していないユーザーまたはユーザーグループがデータ共有を変更できるようにする、ユーザーまたはユーザーグループの ALTER アクセス許可を取り消します。このアクセス許可は、データ共有にオブジェクトを追加または削除したり、プロパティ PUBLICACCESSIBLE を設定したりするために必要です。詳細については、「[ALTER DATASHARE](r_ALTER_DATASHARE.md)」を参照してください。

SHARE  
データ共有にコンシューマーをするための、ユーザーおよびユーザーグループのアクセス許可を取り消します。特定のコンシューマークラスターからデータ共有にアクセスするのを停止するには、このアクセス許可を取り消す必要があります。

ON DATASHARE *datashare\$1name *  
参照されるデータ共有に対する指定されたアクセス許可を付与します。

FROM ユーザーネーム  
アクセス許可を失うユーザーを示します。

FROM GROUP *group\$1name*  
アクセス許可を失うユーザーグループを示します。

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 のアカウントから取り消すことになります。アカウント番号を省略すると、クラスターを所有するアカウントから取り消すことになります。

ON DATABASE *shared\$1database\$1name> [, ...]*   <a name="revoke-datashare"></a>
指定されたデータ共有に作成された指定されたデータベースに対する指定された使用アクセス許可を取り消します。

ON SCHEMA* shared\$1schema*   <a name="revoke-datashare"></a>
指定されたデータ共有に作成された指定されたスキーマに対する指定されたアクセス許可を取り消します。

FOR \$1 SCHEMAS \$1 TABLES \$1 FUNCTIONS \$1 PROCEDURES \$1 LANGUAGES \$1 COPY JOBS\$1 IN   
アクセス許可を取り消すデータベースオブジェクトを指定します。IN に続くパラメータは、取り消されたアクセス許可のスコープを定義します。

CREATE MODEL  
指定されたデータベースに機械学習モデルを作成する CREATE MODEL アクセス許可を取り消します。

ON MODEL *model\$1name*  
特定のモデルについての EXECUTE アクセス許可を取り消します。

ACCESS CATALOG  
ロールがアクセスできるオブジェクトの関連メタデータを表示するアクセス許可を取り消します。

[ ADMIN OPTION FOR ] \$1 role \$1 [, ...]  
指定された (WITH ADMIN OPTION を使用している) ユーザーから取り消すロール。

FROM \$1 role \$1 [, ...]  
取り消すために指定したロールが付与されているロール。

EXPLAIN \$1 RLS \$1 MASKING \$1 FROM ROLE *rolename*  
EXPLAIN プランにおけるクエリのセキュリティポリシーフィルターを説明するアクセス許可をロールから取り消します。RLS は、行レベルのセキュリティポリシーフィルターを説明するアクセス許可を取り消します。MASKING は、動的データマスキングポリシーフィルターを説明するアクセス許可を取り消します。

IGNORE RLS FROM ROLE *rolename*   
ロールからのクエリの行レベルのセキュリティポリシーをバイパスするアクセス許可を取り消します。

FROM \$1 RLS \$1 MASKING \$1 POLICY *policy\$1name*  
アクセス許可を失うユーザーを示します。TO RLS POLICY は、行レベルのセキュリティポリシーを示します。TO MASKING POLICY は、動的データマスキングポリシーを示します。

## 使用に関する注意事項
使用に関する注意事項

REVOKE の使用上の注意事項の詳細については、「[使用に関する注意事項](r_REVOKE-usage-notes.md)」を参照してください。

## 例
例

REVOKE の使用方法の例については、「[例](r_REVOKE-examples.md)」を参照してください。

# 使用に関する注意事項
使用に関する注意事項

オブジェクトから権限を取り消すには、次の条件のうち 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 Data Catalog の `ALL` アクセス許可が、IAM ロールにもある場合は、この `ALL` アクセス許可は取り消されません。`SELECT` アクセス許可のみ取り消されます。Lake Formation アクセス許可は、Lake Formation コンソールで表示することができます。

## ASSUMEROLE アクセス許可を取り消すための使用上の注意事項
ASSUMEROLE アクセス許可を取り消すための使用上の注意事項

以下の使用上の注意は、Amazon Redshift で ASSUMEROLE 権限を取り消す場合に適用されます。

データベースのスーパーユーザーのみが、ユーザーおよびグループの ASSUMEROLE 権限を取り消すことができます。スーパーユーザーは、常に ASSUMEROLE 権限を保持します。

ユーザーおよびグループに対して ASSUMEROLE 権限の使用を有効にするために、スーパーユーザーはクラスター上で次のステートメントを 1 回実行します。ユーザーおよびグループに ASSUMEROLE 権限を付与する前に、スーパーユーザーはクラスター上で次のステートメントを 1 回実行する必要があります。

```
revoke assumerole on all from public for all;
```

## 機械学習アクセス許可の取り消しに関する使用上の注意事項
機械学習アクセス許可の取り消しに関する使用上の注意事項

ML 関数に関連するアクセス許可を直接付与または取り消すことはできません。ML 関数は ML モデルに属し、アクセス許可はモデルを通じて制御されます。代わりに、ML モデルに関連するアクセス許可を取り消すことができます。次の例は、モデル `customer_churn` に関連付けられたすべてのユーザーから実行アクセス許可を取り消す方法を示しています。

```
REVOKE EXECUTE ON MODEL customer_churn FROM PUBLIC;
```

ML モデル `customer_churn` に対するすべてのアクセス許可をユーザーから取り消すこともできます。

```
REVOKE ALL on MODEL customer_churn FROM ml_user;
```

スキーマに ML 関数がある場合、その ML 関数が既に `GRANT EXECUTE ON MODEL` を通じて `EXECUTE` アクセス許可を持っている場合でも、ML 関数に関連する `EXECUTE` アクセス許可の付与または取り消しは失敗します。`CREATE MODEL` コマンドを使用して ML 関数を個別のスキーマに保持するときには、個別のスキーマを使用することをお勧めします。次の例は、その方法を示しています。

```
CREATE MODEL ml_schema.customer_churn
FROM customer_data
TARGET churn
FUNCTION ml_schema.customer_churn_prediction
IAM_ROLE default
SETTINGS (
 S3_BUCKET 'amzn-s3-demo-bucket'
);
```

# 例
例

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

```
revoke insert on table sales from group guests;
```

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

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

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

```
revoke select on table eventview from bobr;
```

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

```
revoke temporary on database tickit from public;
```

次の例では、`cust_profile`テーブルの `cust_name` 列 と `cust_phone` 列に対する SELECT 権限をユーザー `user1` から取り消します。

```
revoke select(cust_name, cust_phone) on cust_profile from user1;
```

次の例では、`sales_group`グループから、`cust_profile`テーブルの `cust_name` 列と `cust_phone` 列に対する SELECT 権限と `cust_contact_preference` 列に対する UPDATE 権限を取り消します。

```
revoke select(cust_name, cust_phone), update(cust_contact_preference) on cust_profile from group sales_group;
```

次の例では、ALL キーワードを使用して、`sales_admin`グループ `cust_profile` テーブルの 3 つの列に対する SELECT 権限と UPDATE 権限の両方を取り消す方法を説明します。

```
revoke ALL(cust_name, cust_phone,cust_contact_preference) on cust_profile from group sales_admin;
```

次の例では、`cust_profile_vw`ビューの `cust_name` 列に対する SELECT 権限を `user2` ユーザーから取り消す方法を説明します。

```
revoke select(cust_name) on cust_profile_vw from user2;
```

## データ共有経由で作成されたデータベースから USAGE アクセス許可を取り消す例
データ共有の USAGE アクセス許可を取り消す例

次の例では、`13b8833d-17c6-4f16-8fe4-1a018f5ed00d` 名前空間から `salesshare` データ共有へのアクセスを取り消します。

```
REVOKE USAGE ON DATASHARE salesshare FROM NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
```

次の例では、`sales_db` に対する USAGE アクセス許可を `Bob` から取り消します。

```
REVOKE USAGE ON DATABASE sales_db FROM Bob;
```

次の例では、`sales_schema` に対する USAGE アクセス許可を `Analyst_role` から REVOKE します。

```
REVOKE USAGE ON SCHEMA sales_schema FROM ROLE Analyst_role;
```

## スコープ付きアクセス許可を取り消す例
スコープ付きアクセス許可を取り消す例

次の例では、`Sales_db` データベース内の現在および将来のすべてのスキーマの使用を `Sales` ロールから取り消します。

```
REVOKE USAGE FOR SCHEMAS IN DATABASE Sales_db FROM ROLE Sales;
```

次の例では、`Sales_db` データベース内の現在および将来のすべてのテーブルに対する SELECT アクセス許可をユーザー `alice` に付与する権限を取り消します。`alice` は `Sales_db` 内のすべてのテーブルへのアクセスを保持します。

```
REVOKE GRANT OPTION SELECT FOR TABLES IN DATABASE Sales_db FROM alice;
```

次の例では、`Sales_schema` スキーマ内の関数の EXECUTE アクセス許可をユーザー `bob` から削除します。

```
REVOKE EXECUTE FOR FUNCTIONS IN SCHEMA Sales_schema FROM bob;
```

次の例では、`ShareDb` データベースの `ShareSchema` スキーマ内のすべてのテーブルに対するすべてのアクセス許可を `Sales` ロールから削除します。スキーマを指定するとき、2 つの部分からなる形式 `database.schema` を使用してスキーマのデータベースを指定することもできます。

```
REVOKE ALL FOR TABLES IN SCHEMA ShareDb.ShareSchema FROM ROLE Sales;
```

次の例では、前の例と同じです。2 つの部分からなる形式を使用する代わりに、`DATABASE` キーワードを使用してスキーマのデータベースを指定できます。

```
REVOKE ALL FOR TABLES IN SCHEMA ShareSchema DATABASE ShareDb FROM ROLE Sales;
```

## AssumeROLE 権限を取り消す例
AssumeROLE 権限を取り消す例

次に、ASSUMEROLE 権限を取り消す例を示します。

スーパーユーザーは、クラスターで次のステートメントを 1 回実行することによって、ユーザーおよびグループに対して ASSUMEROLE 権限の使用を有効にする必要があります。

```
revoke assumerole on all from public for all;
```

次のステートメントは、すべてのオペレーションのすべてのロールについて、ユーザー reg\$1user1 からの ASSUMEROLE 権限を取り消します。

```
revoke assumerole on all from reg_user1 for all;
```

## ROLE 権限を取り消す例
ROLE 権限を取り消す例

次の例では、sample\$1role1 を sample\$1role2 から取り消します。

```
CREATE ROLE sample_role2;
GRANT ROLE sample_role1 TO ROLE sample_role2;
REVOKE ROLE sample_role1 FROM ROLE sample_role2;
```

次の例では、user1 からシステム権限を取り消します。

```
GRANT ROLE sys:DBA TO user1;
REVOKE ROLE sys:DBA FROM user1;
```

次の例では、user1 から sample\$1role1 と sample\$1role2 を取り消します。

```
CREATE ROLE sample_role1;
CREATE ROLE sample_role2;
GRANT ROLE sample_role1, ROLE sample_role2 TO user1;
REVOKE ROLE sample_role1, ROLE sample_role2 FROM user1;
```

次の例では、ADMIN OPTION を指定して user1 から sample\$1role2 を取り消します。

```
GRANT ROLE sample_role2 TO user1 WITH ADMIN OPTION;
REVOKE ADMIN OPTION FOR ROLE sample_role2 FROM user1;
REVOKE ROLE sample_role2 FROM user1;
```

次の例では、sample\$1role5 から sample\$1role1 と sample\$1role2 を取り消します。

```
CREATE ROLE sample_role5;
GRANT ROLE sample_role1, ROLE sample_role2 TO ROLE sample_role5;
REVOKE ROLE sample_role1, ROLE sample_role2 FROM ROLE sample_role5;
```

次の例では、sample\$1role1 のシステム権限、CREATE SCHEMA および DROP SCHEMA を取り消します。

```
GRANT CREATE SCHEMA, DROP SCHEMA TO ROLE sample_role1;
REVOKE CREATE SCHEMA, DROP SCHEMA FROM ROLE sample_role1;
```