

 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
<a name="r_REVOKE"></a>

사용자 또는 역할에서 테이블 생성, 삭제 또는 업데이트 권한과 같은 액세스 권한을 제거합니다.

ON SCHEMA 구문을 사용하는 데이터베이스 사용자 및 역할에 외부 스키마에 대한 사용 권한을 부여하거나 취소할 수 있습니다. 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) 명령을 사용합니다.

## 구문
<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 }
```

### Lake Formation용 Redshift Spectrum에 대한 권한 취소
<a name="revoke-spectrum-integration-with-lf-permissions"></a>

다음은 Lake Formation과 Redshift Spectrum 통합을 위한 구문입니다.

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

**소비자 측 데이터 공유 권한**  
다음은 datashare에서 생성된 특정 데이터베이스 또는 스키마에 대한 datashare 사용 권한에 대한 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 } [, ...]
```

범위가 지정된 권한은 함수에 대한 권한과 프로시저에 대한 권한을 구별하지 않습니다. 예를 들어 다음 문은 `Sales_schema` 스키마의 함수와 프로시저 모두에 대한 `bob`의 `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 [, ...]
```

## 파라미터
<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 *모든 사람* 그룹에서 권한이 취소됩니다.

CREATE   
데이터베이스 객체에 따라, 사용자 또는 그룹에서 다음 권한을 취소합니다.  
+ 데이터베이스의 경우 REVOKE를 위한 CREATE 절을 사용하면 사용자가 데이터베이스 내에 스키마를 생성하지 못합니다.
+ 스키마의 경우 REVOKE를 위한 CREATE 절을 사용하면 사용자가 스키마 내에 객체를 생성하지 못합니다. 객체의 이름을 바꾸려면 사용자가 CREATE 권한이 있고 이름을 바꿀 객체를 소유해야 합니다.
기본적으로 모든 사용자는 PUBLIC 스키마에서 CREATE 및 USAGE 권한을 갖습니다.

TEMPORARY \$1 TEMP   
지정된 데이터베이스에서 임시 테이블을 생성할 권한을 취소합니다.  
기본적으로, 사용자는 PUBLIC 그룹에서 자동 멤버십으로 임시 테이블을 생성할 권한이 허용됩니다. 임의의 사용자가 임시 테이블을 생성할 권한을 제거하려면 PUBLIC 그룹에서 TEMP 권한을 취소한 다음, 특정 사용자 또는 사용자 그룹에 임시 테이블을 생성할 권한을 명시적으로 허용하세요.

ON DATABASE *db\$1name*   
지정된 데이터베이스에 대한 권한을 취소합니다.

객체   
특정 스키마 내의 객체에 대한 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에서의 사용을 취소해야 합니다. 그런 다음 저장 프로시저 생성이 허용된 사용자 또는 그룹에게만 `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 username  
권한을 잃는 사용자를 나타냅니다.

FROM GROUP *group\$1name*  
권한을 잃는 사용자 그룹을 나타냅니다.

WITH GRANT OPTION  
권한을 잃은 사용자가 다른 사용자의 동일한 권한을 취소할 수 있음을 나타냅니다. 그룹 또는 PUBLIC에 대해 WITH GRANT OPTION을 취소할 수 없습니다.

객체  
소비자 계정 또는 동일한 계정 내의 네임스페이스에 대해 USAGE가 취소되면 지정된 소비자 계정 또는 계정 내의 네임스페이스는 읽기 전용 방식으로 datashare 및 datashare 객체에 액세스할 수 없습니다.  
USAGE 권한을 취소하면 소비자에게서 데이터 공유에 대한 액세스 권한이 취소됩니다.

FROM NAMESPACE 'clusternamespace GUID'  
소비자가 데이터 공유에 대한 권한을 상실한 동일한 계정의 네임스페이스를 나타냅니다. 네임스페이스는 128비트 영숫자 전역 고유 식별자(GUID)를 사용합니다.

TO 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은 직원 테이블에서 SELECT 명령을 수행할 뿐 아니라 다른 사용자에 대해 같은 권한을 허용하고 취소할 수 있습니다.

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

  HR은 SELECT 이외의 작업 권한이나 직원 이외의 테이블에 대한 권한을 취소할 수 없습니다.

수퍼유저는 객체 권한을 설정하는 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';
```

**참고**  
IAM 역할에 Lake Formation에 사용되는 AWS Glue Data Catalog의 `ALL` 권한도 있는 경우 `ALL` 권한이 취소되지 않습니다. `SELECT` 권한만 취소됩니다. Lake Formation 콘솔에서 Lake Formation 권한을 볼 수 있습니다.

## ASSUMEROLE 권한 취소에 대한 사용 노트
<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 함수가 이미 `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'
);
```

# 예제
<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;
```

다음 예에서는 사용자 `cust_name`에게서 `cust_phone` 테이블의 `cust_profile` 및 `user1` 열에 대한 SELECT 권한을 취소합니다.

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

다음 예에서는 `cust_name` 그룹에서 `cust_phone` 테이블의 `cust_contact_preference` 및 `cust_profile` 열에 대한 SELECT 권한과 `sales_group` 열에 대한 UPDATE 권한을 취소합니다.

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

다음 예에서는 ALL 키워드를 사용하여 `cust_profile` 그룹에서 `sales_admin` 테이블의 세 열에 대한 SELECT 및 UPDATE 권한을 모두 취소하는 것을 보여 줍니다.

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

다음 예에서는 `cust_name` 사용자에게서 `cust_profile_vw` 뷰의 `user2` 열에 대한 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';
```

다음 예시에서는 `Bob`에게서 `sales_db`에 대한 USAGE 권한을 취소합니다.

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

다음 예시에서는 `Analyst_role`에게서 `sales_schema`에 대한 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;
```

다음 예시에서는 `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` 역할에게서 취소합니다. 스키마를 지정할 때 두 부분으로 구성된 `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\$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;
```

다음은 sample\$1role1 및 sample\$1role2를 user1에서 취소하는 예입니다.

```
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\$1role1 및 sample\$1role2를 sample\$1role5에서 취소하는 예입니다.

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