REVOKE <privileges> … FROM USER

사용자로부터 보안 오브젝트에 대한 하나 이상의 권한을 제거합니다. 취소할 수 있는 권한은 오브젝트별로 다릅니다.

참고 항목:

구문

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 } <object_name>
     | { schemaPrivileges         | ALL [ PRIVILEGES ] } ON { SCHEMA <schema_name> | ALL SCHEMAS IN DATABASE <db_name> }
     | { schemaObjectPrivileges   | ALL [ PRIVILEGES ] } ON { <object_type> <object_name> | ALL <object_type_plural> IN SCHEMA <schema_name> }
    }
  FROM [ USER ] <user_name> [ RESTRICT | CASCADE ]
Copy

여기서

globalPrivileges ::=
  {
      | ATTACH POLICY | AUDIT | BIND SERVICE ENDPOINT
      | APPLY {
         { AGGREGATION | AUTHENTICATION | JOIN | MASKING | PACKAGES | PASSWORD
           | PROJECTION | ROW ACCESS | SESSION } POLICY
         | TAG }
      | EXECUTE { ALERT | DATA METRIC FUNCTION | MANAGED ALERT | MANAGED TASK | TASK }
      | IMPORT SHARE
      | MANAGE { ACCOUNT SUPPORT CASES | EVENT SHARING | GRANTS | LISTING AUTO FULFILLMENT | ORGANIZATION SUPPORT CASES | USER SUPPORT CASES | WAREHOUSES }
      | 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
  }
  [ , ... ]
Copy
accountObjectPrivileges ::=
-- For COMPUTE POOL
   { MODIFY | MONITOR | OPERATE | USAGE } [ , ... ]
-- For CONNECTION
   { FAILOVER } [ , ... ]
-- For DATABASE
   { APPLYBUDGET
   | IMPORTED PRIVILEGES | MODIFY | MONITOR | USAGE } [ , ... ]
-- For EXTERNAL VOLUME
   { USAGE } [ , ... ]
-- For FAILOVER GROUP
   { FAILOVER | MODIFY | MONITOR | REPLICATE } [ , ... ]
-- For INTEGRATION
   { USAGE | USE_ANY_ROLE } [ , ... ]
-- For REPLICATION GROUP
   { MODIFY | MONITOR | REPLICATE } [ , ... ]
-- For RESOURCE MONITOR
   { MODIFY | MONITOR } [ , ... ]
-- For USER
   { MONITOR } [ , ... ]
-- For WAREHOUSE
   { APPLYBUDGET | MODIFY | MONITOR | USAGE | OPERATE } [ , ... ]
Copy
schemaPrivileges ::=

    ADD SEARCH OPTIMIZATION | APPLYBUDGET
   | MODIFY | MONITOR | USAGE
   [ , ... ]
Copy
schemaObjectPrivileges ::=
  -- For ALERT
     { MONITOR | OPERATE } [ , ... ]
  -- For DATA METRIC FUNCTION
     USAGE [ , ... ]
  -- For DYNAMIC TABLE
     MONITOR, OPERATE, SELECT [ , ...]
  -- For EVENT TABLE
     { APPLYBUDGET | DELETE | REFERENCES | SELECT | TRUNCATE } [ , ... ]
  -- For FILE FORMAT, FUNCTION (UDF or external function), MODEL, PROCEDURE, SECRET, SEQUENCE, or SNAPSHOT
     USAGE [ , ... ]
  -- For GIT REPOSITORY
     { READ, WRITE } [ , ... ]
  -- For HYBRID TABLE
     { APPLYBUDGET | DELETE | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
  -- For IMAGE REPOSITORY
     { READ, WRITE } [ , ... ]
  -- For ICEBERG TABLE
     { APPLYBUDGET | DELETE | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
  -- For MATERIALIZED VIEW
     { APPLYBUDGET | REFERENCES | SELECT } [ , ... ]
  -- For PIPE
     { APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
  -- For { AGGREGATION | AUTHENTICATION | MASKING | JOIN | PACKAGES | PASSWORD | PRIVACY | PROJECTION | ROW ACCESS | SESSION } POLICY or TAG
     APPLY [ , ... ]
  -- For SECRET
     { READ | USAGE } [ , ... ]
  -- For SEMANTIC VIEW
     REFERENCES [ , ... ]
  -- For SERVICE
     { MONITOR | OPERATE } [ , ... ]
  -- For external STAGE
     USAGE [ , ... ]
  -- For internal STAGE
     READ [ , WRITE ] [ , ... ]
  -- For STREAM
     SELECT [ , ... ]
  -- For STREAMLIT
     USAGE [ , ... ]
  -- For TABLE
     { APPLYBUDGET | DELETE | EVOLVE SCHEMA | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
  -- For TAG
     READ
  -- For TASK
     { APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
  -- For VIEW
     { REFERENCES | SELECT } [ , ... ]
Copy

각 오브젝트 유형에 지원되는 권한에 대한 자세한 내용은 액세스 제어 권한 섹션을 참조하십시오.

필수 매개 변수

object_name

권한이 취소된 오브젝트의 식별자를 지정합니다.

object_type

스키마 수준 오브젝트의 유형을 지정합니다.

  • AGGREGATION POLICY

  • ALERT

  • AUTHENTICATION POLICY

  • CORTEX SEARCH SERVICE

  • DATA METRIC FUNCTION

  • DATASET

  • DYNAMIC TABLE

  • EVENT TABLE

  • EXTERNAL TABLE

  • FILE FORMAT

  • FUNCTION

  • GIT REPOSITORY

  • IMAGE REPOSITORY

  • ICEBERG TABLE

  • JOIN POLICY

  • MASKING POLICY

  • MATERIALIZED VIEW

  • MODEL

  • MODEL MONITOR

  • NETWORK RULE

  • NOTEBOOK

  • PACKAGES POLICY

  • PASSWORD POLICY

  • PIPE

  • PRIVACY POLICY

  • PROCEDURE

  • PROJECTION POLICY

  • ROW ACCESS POLICY

  • SECRET

  • SEMANTIC VIEW

  • SERVICE

  • SESSION POLICY

  • SEQUENCE

  • SNAPSHOT

  • STAGE

  • STREAM

  • STREAMLIT

  • TABLE

  • TAG

  • TASK

  • VIEW

object_type_plural

object_type 의 복수형입니다(예: TABLES, VIEWS).

user_name

수신자 사용자(권한이 취소된 사용자)의 식별자를 지정합니다.

선택적 매개 변수

GRANT OPTION FOR

지정된 경우 수신자 사용자가 다른 역할 또는 사용자에게 권한을 부여하는 기능을 제거합니다.

기본값: 값 없음

RESTRICT | CASCADE

지정된 경우 권한이 다른 역할 또는 사용자에게 다시 부여되었는지 여부를 기준으로 권한에 대한 취소 작업의 성공 여부를 결정합니다.

  • RESTRICT: 취소되는 권한이 다른 역할 또는 사용자에게 다시 부여된 경우 REVOKE 명령이 실패합니다.

  • CASCADE: 취소되는 권한이 다시 부여된 경우 REVOKE 명령은 이러한 종속적 권한 부여를 재귀적으로 취소합니다. 다른 권한 부여자가 어떤 오브젝트에 대해 대상 사용자에게 같은 권한을 부여한 경우(병렬 권한 부여), 그 권한 부여는 영향을 받지 않으며 대상 사용자는 권한을 유지합니다.

기본값: RESTRICT

사용법 노트

  • 모든 클래스에 대해 직접 권한을 부여하거나 취소할 수 없습니다.

  • 다른 권한 부여자가 한 사용자에게 여러 번 권한을 부여할 수 있습니다. REVOKE privilege 문은 사용자가 부여한 권한만 취소합니다. 다른 권한 부여자가 지정한 권한의 추가 권한 부여가 무시됩니다.

    또한 아무 권한도 취소되지 않은 경우에도 REVOKE privilege 문이 성공합니다. REVOKE privilege 는 지정된 권한에 종속 권한 부여가 있고 문에서 CASCADE 절이 생략된 경우에만 오류를 반환합니다.

  • 단일 GRANT 문에서 같은 오브젝트 유형에 대해 여러 권한을 지정하거나(각 권한은 쉼표로 구분됨) 특수 ALL [ PRIVILEGES ] 키워드를 사용하여 지정된 오브젝트 유형에 적용 가능한 모든 권한을 부여할 수 있습니다. 하지만 GRANT 명령을 실행하는 역할 또는 사용자가 보유하고 부여할 수 있는 권한만 실제로 대상 사용자에게 부여됩니다. 부여할 수 없는 모든 권한에 대해 경고 메시지가 반환됩니다.

    태그에는 ALL [ PRIVILEGES ] 키워드를 지정할 수 없습니다.

  • 스테이지에 대해서는 다음과 같습니다.

    • USAGE는 외부 스테이지에만 적용됩니다.

    • READ | WRITE는 내부 스테이지에만 적용됩니다. 또한, 내부 스테이지에 대해 WRITE 권한을 부여하려면 먼저 스테이지에 대해 READ 권한을 부여해야 합니다.

    외부 및 내부 스테이지에 대한 자세한 내용은 CREATE STAGE 섹션을 참조하십시오.

  • 저장소 통합의 경우:

    • 저장소 통합에 의존하는 외부 스테이지를 사용하여 다음 명령을 실행하려면 사용자에게 저장소 통합에 대한 USAGE 권한이 직접 부여되거나 해당 권한을 보유하거나 상속하는 역할을 사용해야 합니다.

      사용자로부터 USAGE 권한을 취소하면 사용자는 이러한 명령을 실행할 수 없습니다. 자세한 내용은 스테이지 권한 섹션을 참조하십시오.

    • 저장소 통합에 대한 USAGE 권한을 취소해도 저장소 통합과 관련된 외부 테이블을 쿼리하는 사용자가 차단되지는 않습니다. 외부 테이블을 쿼리하는 데는 기본 저장소 통합에 대한 USAGE 권한이 필요하지 않습니다.

액세스 제어 요구 사항

개별 오브젝트에 대한 권한 취소하기:

다음 기준 중 하나에 부응하는 활성 역할 이나 활성 사용자 또는 상위 역할 을 사용하여 사용자로부터 오브젝트에 대한 권한을 취소할 수 있습니다.

  • 역할 또는 사용자는 SHOW GRANTS 출력의 GRANTED_BY 열에서 권한 부여자 로 식별됩니다.

    한 권한의 여러 인스턴스가 지정된 오브젝트에 부여된 경우 활성 권한 부여자 역할이 부여한 인스턴스만 취소됩니다.

  • 이 역할 또는 사용자는 전역 MANAGE GRANTS 권한이 있습니다.

    한 권한의 여러 인스턴스가 지정된 오브젝트에 부여된 경우 모든 인스턴스가 취소됩니다.

    SECURITYADMIN 시스템 역할 이상의 역할만 기본적으로 MANAGE GRANTS 권한을 가집니다. 하지만 사용자 지정 역할에 이 권한을 부여할 수 있습니다.

관리되는 액세스 스키마 (CREATE SCHEMA ... WITH MANAGED ACCESS 를 사용하여 만든 스키마) 구문에서는 스키마 소유자(스키마에 대한 OWNERSHIP 권한을 가진 역할), 전역 MANAGE GRANTS 권한을 가진 역할이나 사용자, 또는 그 이상의 역할만 스키마의 오브젝트에 대한 권한을 취소할 수 있습니다.

특정 사용자 joe 로부터 Streamlit 애플리케이션에 대한 USAGE 권한을 취소하는 방법은 다음과 같습니다.

REVOKE USAGE ON STREAMLIT streamlit_db.streamlit_schema.streamlit_app FROM USER joe;
Copy

특정 사용자 user1 로부터 프로시저에 대한 USAGE 권한을 취소하는 방법은 다음과 같습니다.

REVOKE USAGE ON PROCEDURE mydb.myschema.myprocedure(number) FROM USER user1;
Copy