

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 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
<a name="r_REVOKE"></a>

從使用者或角色移除存取許可，例如建立、捨棄或更新資料表的許可。

您只能對使用 ON SCHEMA 語法的資料庫使用者和角色執行外部結構描述的 GRANT 或 REVOKE USAGE 許可。搭配 ON EXTERNAL SCHEMA 使用 時 AWS Lake Formation，您只能對 AWS Identity and Access Management (IAM) 角色授予 GRANT 和 REVOKE 許可。如需許可的清單，請參閱語法。

若為預存程序，系統依預設會將 USAGE ON LANGUAGE `plpgsql` 許可授予 PUBLIC。在預設情況下，EXECUTE ON PROCEDURE 許可只會授予擁有者和超級使用者。

在 REVOKE 命令中指定要移除的許可。若要授予許可，請使用 [GRANT](r_GRANT.md) 命令。

## 語法
<a name="r_REVOKE-synopsis"></a>

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

### 授予資料表的資料欄層級許可
<a name="revoke-column-level"></a>

下列語法適用於 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 許可
<a name="revoke-assumerole-permissions"></a>

以下語法可將 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 的許可
<a name="revoke-spectrum-integration-with-lf-permissions"></a>

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

### 撤銷資料共用許可
<a name="revoke-datashare-permissions"></a>

**生產者端資料共用權限**  
以下是使用 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 } [, ...]
```

### 撤銷限定範圍權限
<a name="revoke-scoped-permissions"></a>

限定範圍許可讓您能夠對使用者或角色授予資料庫或結構描述內某一種類型的所有物件的許可。具有限定範圍許可的使用者和角色對於資料庫或結構描述內所有目前和未來的物件擁有指定的許可。

您可以在 [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 } [, ...]
```

請注意，限定範圍許可不區分函式的許可和程序的許可。例如，下列陳述式會同時撤銷 `bob` 在結構描述 `Sales_schema` 中的函式和程序的 `EXECUTE` 許可。

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

### 撤銷機器學習許可
<a name="revoke-model-permissions"></a>

以下是 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 ]
```

### 撤銷角色許可
<a name="revoke-roles"></a>

以下是在 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 } [, ...]
```

### 撤銷安全政策的許可
<a name="revoke-role-level"></a>

以下語法可用來撤銷許可，以解釋 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 [, ...]
```

## Parameters
<a name="r_REVOKE-parameters"></a>

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 不支援 RULE 和 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   
根據資料庫物件而定，將下列許可從使用者或群組中撤銷：  
+ 若是資料庫，使用 CREATE 子句執行 REVOKE，可阻止使用者在資料庫內建立結構描述。
+ 若是結構描述，使用 CREATE 子句執行 REVOKE，可阻止使用者在結構描述內建立物件。若要重新命名物件，使用者必須具有 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 使用權授予獲得許可建立 SQL UDF 的特定使用者或群組。下列範例會撤銷 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 撤銷使用權。然後僅將 `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 表示動態資料遮罩政策。

## 使用須知
<a name="r_REVOKE-usage-notes-link"></a>

若要進一步了解 REVOKE 使用須知，請參閱 [使用須知](r_REVOKE-usage-notes.md)。

## 範例
<a name="r_REVOKE-examples-link"></a>

如需如何使用 REVOKE 的範例，請參閱 [範例](r_REVOKE-examples.md)。

# 使用須知
<a name="r_REVOKE-usage-notes"></a>

若要撤銷物件的權限，您必須符合下列條件之一：
+ 身為物件擁有者。
+ 身為超級使用者。
+ 具有該物件和權限的授予權限。

  例如，以下命令可讓使用者 HR 在 employees 資料表上執行 SELECT 命令，並對其他使用者授予和撤銷相同的權限。

  ```
  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 角色就需具備撤銷外部資料表權限的許可。下列範例所建立的外部結構描述內含相關聯的 `myGrantor` IAM 角色。該 `myGrantor` IAM 角色具備撤銷他人許可的許可。REVOKE 命令會使用與外部結構描述相關聯的 `myGrantor` IAM 角色許可，撤銷 `myGrantee` IAM 角色的許可。

```
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';
```

**注意**  
如果 IAM 角色在 AWS Glue Data Catalog 已啟用 Lake Formation 的 中也有 `ALL` 許可，則不會撤銷該`ALL`許可。只有 `SELECT` 許可會遭撤銷。您可以在 Lake Formation 控制台中檢視 Lake Formation 許可。

## 撤銷 ASSUMEROL 許可的使用須知
<a name="r_REVOKE-usage-notes-assumerole"></a>

下列是在 Amazon Redshift 中撤銷 ASSUMEROLE 權限的使用須知。

只有資料庫超級使用者才能撤銷使用者和群組的 ASSUMEROLE 權限。超級使用者始終保有 ASSUMEROLE 權限。

若要啟用使用者和群組的 ASSUMEROLE 權限，超級使用者要在叢集上執行一次下列陳述式。對使用者和群組授予 ASSUMEROLE 權限之前，超級使用者必須在叢集上執行一次下列陳述式。

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

## 撤銷機器學習許可的使用須知
<a name="r_REVOKE-usage-notes-create-model"></a>

您無法直接授予或撤銷與 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 函數相關的 `EXECUTE` 許可將會失敗，即使該 ML 函數已經具有透過 `GRANT EXECUTE ON MODEL` 取得的 `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'
);
```

# 範例
<a name="r_REVOKE-examples"></a>

以下範例會將 GUESTS 使用者群組在 SALES 資料表上的 INSERT 權限撤銷。此命令會使 GUESTS 的成員無法使用 INSERT 命令將資料載入 SALES 資料表。

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

以下範例會將使用者 `fred` 對 QA\$1TICKIT 結構描述中所有資料表的 SELECT 權限撤銷。

```
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;
```

下列範例會撤銷使用者 `user1` 對 `cust_profile` 資料表中 `cust_name` 和 `cust_phone` 資料欄的 SELECT 權限。

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

下列範例會撤銷 `sales_group` 群組對 `cust_name` 和 `cust_phone` 資料欄的 SELECT 權限，以及對 `cust_profile` 資料表中 `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` 中三個資料欄的 SELECT 和 UPDATE 權限。

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

以下範例會撤銷 `user2` 使用者對 `cust_profile_vw` 檢視中 `cust_name` 資料欄的 SELECT 權限。

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

## 從資料共用建立的資料庫撤銷 USAGE 權限的範例
<a name="r_REVOKE-examples-datashare"></a>

下列範例會從 `13b8833d-17c6-4f16-8fe4-1a018f5ed00d` 命名空間撤銷對 `salesshare` 資料共用的存取權。

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

下列範例會撤銷 `sales_db` 上來自 `Bob` 的 USAGE 權限。

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

下列範例會撤銷 `sales_schema` 上來自 `Analyst_role` 的 USAGE 權限。

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

## 撤銷限定範圍權限的範例
<a name="r_REVOKE-examples-scoped"></a>

下列範例會將 `Sales_db` 資料庫中所有目前和未來結構描述的使用權從 `Sales` 角色撤銷。

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

以下範例撤銷向使用者 `alice` 授予對 `Sales_db` 資料庫中所有目前和未來資料表的 SELECT 權限的能力。`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;
```

下列範例會從 `Sales` 角色撤銷 `ShareDb` 資料庫之 `ShareSchema` 結構描述中所有資料表的所有權限。當指定結構描述時，您也可以使用兩部分格式 `database.schema` 指定結構描述的資料庫。

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

以下範例與前面的範例是相同的。您可以使用 `DATABASE` 關鍵字來指定結構描述資料庫，而不是使用兩部分格式。

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

## 撤銷 ASSUMEROLE 權限的範例
<a name="r_REVOKE-examples-assumerole"></a>

以下是撤銷 ASSUMEROLE 權限的範例 

超級使用者必須在叢集上執行一次下列陳述式，以啟用使用者和群組的 ASSUMEROLE 權限。

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

下列陳述式會在所有操作的所有角色上撤銷使用者 reg\$1user1 的 ASSUMEROLE 權限。

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

## 撤銷 ROLE 權限的範例
<a name="r_REVOKE-examples-role"></a>

下列範例會對 sample\$1role2 撤銷 sample\$1role1。

```
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;
```

下列範例會從 user1 撤銷具有 ADMIN OPTION 的 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;
```