REVOKE <privileges> … FROM USER
REVOKE <privileges> … FROM USER
보호 가능한 객체(securable object)에 대한 하나 이상의 권한을 사용자에서 제거하는 명령이에요. 취소할 수 있는 권한은 객체별로 다릅니다.
출처: 문서
본문
구문 (Syntax)
REVOKE [ GRANT OPTION FOR ]
{
{ <globalPrivileges> | ALL [ PRIVILEGES ] } ON ACCOUNT
| { <accountObjectPrivileges> | ALL [ PRIVILEGES ] } ON { RESOURCE MONITOR | WAREHOUSE | COMPUTE POOL | DATABASE | INTEGRATION | CONNECTION | FAILOVER GROUP | REPLICATION GROUP | EXTERNAL VOLUME }
| { <schemaPrivileges> | ALL [ PRIVILEGES ] } ON { SCHEMA <name> | ALL SCHEMAS IN DATABASE <db_name> }
| { <schemaObjectPrivileges> | ALL [ PRIVILEGES ] } ON { <object_name> | ALL <object_type_plural> IN SCHEMA <schema_name> }
}
FROM [ USER ] <user_name> [ RESTRICT | CASCADE ]
여기서:
globalPrivileges— ATTACH POLICY, AUDIT, BIND SERVICE ENDPOINT, APPLY { ... } POLICY | TAG, EXECUTE { ALERT | DATA METRIC FUNCTION | MANAGED ALERT | MANAGED TASK | TASK }, IMPORT SHARE, MANAGE { ... }, MODIFY { LOG LEVEL | TRACE LEVEL | SESSION LOG LEVEL | SESSION TRACE LEVEL }, MONITOR { EXECUTION | SECURITY | USAGE }, OVERRIDE SHARE RESTRICTIONS, PURCHASE DATA EXCHANGE LISTING, RESOLVE ALL, READ SESSION.accountObjectPrivileges— 객체 유형별: COMPUTE POOL(MODIFY | MONITOR | OPERATE | USAGE), CONNECTION(FAILOVER), DATABASE(APPLYBUDGET | IMPORTED PRIVILEGES | MODIFY | MONITOR | USAGE), EXTERNAL VOLUME(USAGE), FAILOVER GROUP(FAILOVER | MODIFY | MONITOR | REPLICATE), INTEGRATION(USAGE | USE_ANY_ROLE), REPLICATION GROUP(MODIFY | MONITOR | REPLICATE), RESOURCE MONITOR(MODIFY | MONITOR), USER(MONITOR), WAREHOUSE(APPLYBUDGET | MODIFY | MONITOR | USAGE | OPERATE).schemaPrivileges— ADD SEARCH OPTIMIZATION | APPLYBUDGET | MODIFY | MONITOR | USAGE.schemaObjectPrivileges— 객체 유형별: ALERT(MONITOR | OPERATE), DATA METRIC FUNCTION(USAGE), DYNAMIC TABLE(MONITOR, OPERATE, SELECT), EVENT TABLE(APPLYBUDGET | DELETE | REFERENCES | SELECT | TRUNCATE), FILE FORMAT/FUNCTION/MODEL/PROCEDURE/SECRET/SEQUENCE/SNAPSHOT/TYPE(USAGE), GIT REPOSITORY(READ, WRITE), HYBRID TABLE(APPLYBUDGET | DELETE | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE), IMAGE REPOSITORY(READ, WRITE), ICEBERG TABLE(APPLYBUDGET | DELETE | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE), MATERIALIZED VIEW(APPLYBUDGET | REFERENCES | SELECT), PIPE(APPLYBUDGET | MONITOR | OPERATE), POLICY/TAG(APPLY), SECRET(READ | USAGE), SEMANTIC VIEW(REFERENCES), SERVICE(MONITOR | OPERATE), external STAGE(USAGE), internal STAGE(READ [ , WRITE ]), STREAM(SELECT), STREAMLIT(USAGE), TABLE(APPLYBUDGET | DELETE | EVOLVE SCHEMA | INSERT | REFERENCES | SELECT | SELECT ERROR TABLE | TRUNCATE | UPDATE), TAG(READ), TASK(APPLYBUDGET | MONITOR | OPERATE), VIEW(REFERENCES | SELECT).
필수 파라미터 (Required parameters)
- object_name — 권한이 취소되는 객체의 식별자를 지정해요.
- object_type — 스키마 수준 객체의 객체 유형:
AGENT,AGGREGATION POLICY,ALERT,AUTHENTICATION POLICY,CORTEX SEARCH SERVICE,DATA METRIC FUNCTION,DATASET,DBT PROJECT,DYNAMIC TABLE,EVENT TABLE,EXPERIMENT,EXTERNAL TABLE,FILE FORMAT,FUNCTION,GATEWAY,GIT REPOSITORY,IMAGE REPOSITORY,ICEBERG TABLE,INTERACTIVE TABLE,JOIN POLICY,MASKING POLICY,MATERIALIZED VIEW,MCP SERVER,MODEL,MODEL MONITOR,NETWORK RULE,NOTEBOOK,ONLINE FEATURE TABLE,PACKAGES POLICY,PASSWORD POLICY,PIPE,PRIVACY POLICY,PROCEDURE,PROJECTION POLICY,RESTRICTED SESSION SCOPE,ROW ACCESS POLICY,SECRET,SEMANTIC VIEW,SERVICE,SESSION POLICY,SEQUENCE,SNAPSHOT,SNAPSHOT POLICY,SNAPSHOT SET,STAGE,STORAGE LIFECYCLE POLICY,STREAM,STREAMLIT,TABLE,TAG,TASK,TYPE,VIEW,WORKSPACE. - object_type_plural — object_type의 복수형(예: TABLES, VIEWS).
- user_name — 수신 사용자(권한이 취소되는 사용자)의 식별자를 지정해요.
선택 파라미터 (Optional parameters)
- GRANT OPTION FOR — 지정하면 수신 사용자가 권한을 다른 역할이나 사용자에게 부여할 수 있는 능력을 제거해요. 기본값: 없음
- RESTRICT | CASCADE — 지정하면 권한이 다른 역할이나 사용자에게 재부여되었는지 여부를 기준으로 취소 작업이 성공하는지 실패하는지 결정해요.
RESTRICT: 취소되는 권한이 다른 역할이나 사용자에게 재부여되었으면 REVOKE 명령이 실패해요.CASCADE: 취소되는 권한이 재부여되었으면 REVOKE 명령이 이러한 종속 권한 부여를 재귀적으로 취소해요. 객체의 같은 권한이 다른 grantor(병렬 grant)에 의해 대상 사용자에게 부여되었다면 그 grant는 영향받지 않고 대상 사용자는 권한을 유지해요.- 기본값: RESTRICT
사용 메모 (Usage notes)
- 어떤 클래스에도 직접 권한을 부여하거나 취소할 수 없어요.
- 권한은 서로 다른 grantor에 의해 사용자에게 여러 번 부여될 수 있어요.
REVOKE privilege문장은 사용자가 grantor인 grant만 취소해요. 다른 grantor의 지정된 권한의 추가 grant는 무시돼요.REVOKE privilege문장은 취소되는 권한이 없어도 성공해요. 지정된 권한에 종속 grant가 있고 문장에 CASCADE 절이 생략된 경우에만 오류를 반환해요. - 단일 GRANT 문장에서 같은 객체 유형에 대해 여러 권한을 지정할 수 있고(각 권한은 쉼표로 구분), GRANT 명령을 실행하는 역할이나 사용자가 보유하고 부여할 수 있는 권한만 대상 사용자에게 실제로 부여돼요. 부여할 수 없는 권한에 대해 경고 메시지가 반환돼요. 태그에는
ALL [ PRIVILEGES ]키워드를 지정할 수 없어요. - 스테이지의 경우:
- USAGE는 외부 스테이지에만 적용돼요.
- READ | WRITE는 내부 스테이지에만 적용돼요. 내부 스테이지에 WRITE 권한을 부여하려면 먼저 스테이지에 READ 권한이 부여되어야 해요.
- 스토리지 통합의 경우: 스토리지 통합에 의존하는 외부 스테이지를 사용하여 다음 명령을 실행하려면 스토리지 통합에 대한 USAGE 권한이 사용자에게 직접 부여되거나 권한을 가지거나 상속하는 역할을 사용해야 해요: LIST, REMOVE, COPY INTO
, COPY INTO
. 사용자에서 USAGE 권한을 취소하면 사용자는 이 명령을 실행할 수 없어요. 스토리지 통합에 대한 USAGE 권한을 취소해도 사용자가 스토리지 통합과 연결된 외부 테이블을 쿼리하는 것을 차단하지 않아요. 외부 테이블을 쿼리하는 데는 기본 스토리지 통합에 대한 USAGE 권한이 필요하지 않아요. 접근 제어 요구사항 (Access control requirements)
개별 객체에 권한 취소: 다음 기준 중 하나를 충족하는 활성 역할이나 사용자(또는 더 높은 역할)를 사용하여 객체의 권한을 사용자에서 취소할 수 있어요:
- 역할이나 사용자가 SHOW GRANTS 출력의 GRANTED_BY 열에서 권한의 grantor로 식별되는 경우. 지정된 객체에 권한의 여러 인스턴스가 부여된 경우 활성 grantor 역할이 부여한 인스턴스만 취소돼요.
- 역할이나 사용자가 전역 MANAGE GRANTS 권한을 가진 경우. 지정된 객체에 권한의 여러 인스턴스가 부여된 경우 모든 인스턴스가 취소돼요. 기본적으로 SECURITYADMIN 시스템 역할 이상만 MANAGE GRANTS 권한을 가지지만 사용자 지정 역할에 부여할 수 있어요.
관리 액세스 스키마(즉
CREATE SCHEMA ... WITH MANAGED ACCESS구문으로 만든 스키마)에서는 스키마 소유자(즉 스키마에 OWNERSHIP 권한이 있는 역할), 전역 MANAGE GRANTS 권한이 있는 역할이나 사용자, 또는 더 높은 역할만 스키마의 객체에 대한 권한을 취소할 수 있어요.예시 (Examples)
Streamlit 애플리케이션에 대한 USAGE 권한을 특정 사용자 joe에서 취소해요:
REVOKE USAGE ON STREAMLIT streamlit_db.streamlit_schema.streamlit_app FROM USER joe;프로시저에 대한 USAGE 권한을 특정 사용자 user1에서 취소해요:
REVOKE USAGE ON PROCEDURE mydb.myschema.myprocedure(number) FROM USER user1;더 알아보기 (Learn more)