REVOKE <privileges> … FROM APPLICATION ROLE

REVOKE <privileges> … FROM APPLICATION ROLE

보호 가능한 스키마 수준 객체(securable schema-level object)에 대한 하나 이상의 접근 권한을 애플리케이션 역할에서 취소하는 명령이에요. 취소할 수 있는 권한은 객체별로 다릅니다.

출처: 문서

본문

구문 (Syntax)

REVOKE [ GRANT OPTION FOR ]
    {
    | { <schemaPrivileges>         | ALL [ PRIVILEGES ] } ON { SCHEMA <name>  | ALL SCHEMAS IN DATABASE <db_name>  }
    | { <schemaPrivileges>         | ALL [ PRIVILEGES ] } ON { FUTURE SCHEMAS IN DATABASE <db_name>  }
    | { <schemaObjectPrivileges>   | ALL [ PRIVILEGES ] } ON { <object_name>   | ALL <object_type_plural>  IN SCHEMA <schema_name>  }
    | { <schemaObjectPrivileges>   | ALL [ PRIVILEGES ] } ON FUTURE <object_type_plural>  IN { DATABASE <db_name>  | SCHEMA <schema_name>  }
    }
  FROM APPLICATION ROLE <name>  [ RESTRICT | CASCADE ]

여기서:

  • schemaPrivileges — ADD SEARCH OPTIMIZATION | CREATE { ALERT | EXTERNAL TABLE | FILE FORMAT | FUNCTION | IMAGE REPOSITORY | MATERIALIZED VIEW | PIPE | PROCEDURE | { AGGREGATION | MASKING | PASSWORD | PROJECTION | ROW ACCESS | SESSION } POLICY | SECRET | SEMANTIC VIEW | SEQUENCE | SERVICE | SNAPSHOT | STAGE | STREAM | TAG | TABLE | TASK | VIEW } | MODIFY | MONITOR | USAGE.
  • schemaObjectPrivileges — 객체 유형별: ALERT(MONITOR | OPERATE), DYNAMIC TABLE(OPERATE, SELECT), EVENT TABLE(INSERT | SELECT), FILE FORMAT/FUNCTION/PROCEDURE/SECRET/SEQUENCE/SNAPSHOT/TYPE(USAGE), IMAGE REPOSITORY(READ, WRITE), 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), TABLE(APPLYBUDGET | DELETE | EVOLVE SCHEMA | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE), TAG(READ), TASK(APPLYBUDGET | MONITOR | OPERATE), VIEW(REFERENCES | SELECT).

필수 파라미터 (Required parameters)

  • object_name — 권한이 부여되는 객체의 식별자를 지정해요.
  • object_type — 스키마 수준 객체의 객체 유형: ALERT, DYNAMIC TABLE, EVENT TABLE, EXTERNAL TABLE, FILE FORMAT, FUNCTION, MASKING POLICY, MATERIALIZED VIEW, NETWORK RULE, PACKAGES POLICY, PASSWORD POLICY, PIPE, PROCEDURE, ROW ACCESS POLICY, SECRET, SEMANTIC VIEW, SESSION POLICY, SEQUENCE, STAGE, STREAM, TABLE, TAG, TASK, TYPE, VIEW.
  • object_type_plural — object_type의 복수형(예: TABLES, VIEWS). 파이프에 대한 대량 부여는 허용되지 않아요.
  • name — 수신 애플리케이션 역할(권한이 부여되는 역할)의 식별자를 지정해요.

선택 파라미터 (Optional parameters)

  • FUTURE — 지정하면 기존 객체가 아니라 지정된 유형의 새(즉 미래) 스키마 객체에 부여된 권한만 제거해요. 기존 객체에 부여된 권한은 유지돼요.
  • RESTRICT | CASCADE — 지정하면 권한이 다른 애플리케이션 역할에 재부여되었는지 여부를 기준으로 취소 작업이 성공하는지 실패하는지 결정해요.
    • RESTRICT: 취소되는 권한이 다른 애플리케이션 역할에 재부여되었으면 REVOKE 명령이 실패해요.
    • CASCADE: 취소되는 권한이 재부여되었으면 REVOKE 명령이 이러한 종속 권한 부여를 재귀적으로 취소해요. 객체의 같은 권한이 다른 grantor(병렬 grant)에 의해 대상 역할에 부여되었다면 그 grant는 영향받지 않고 대상 역할은 권한을 유지해요.
    • 기본값: RESTRICT

보안 요구사항 (Security requirements)

개별 객체에 권한 취소: 다음 기준 중 하나를 충족하는 활성 역할(또는 더 높은 역할)을 사용하여 객체의 권한을 다른 애플리케이션 역할에서 취소할 수 있어요:

  • 역할이 SHOW GRANTS 출력의 GRANTED_BY 열에서 권한의 grantor로 식별되는 경우. 지정된 객체에 권한 grant의 여러 인스턴스가 있으면 활성 grantor 역할이 부여한 인스턴스만 취소돼요.
  • 역할이 전역 MANAGE GRANTS 권한을 가진 경우. 지정된 객체에 권한 grant의 여러 인스턴스가 있으면 모든 인스턴스가 취소돼요. 기본적으로 SECURITYADMIN 시스템 역할 이상만 MANAGE GRANTS 권한을 가지지만 사용자 지정 역할에 부여할 수 있어요.

관리 액세스 스키마(즉 CREATE SCHEMA … WITH MANAGED ACCESS 구문으로 만든 스키마)의 객체에서 권한을 취소할 수 있는 역할:

  • 스키마 소유자(즉 스키마에 OWNERSHIP 권한이 있는 역할)이기 때문에 애플리케이션 역할.
  • 전역 MANAGE GRANTS 권한이 있는 역할.

지정된 유형의 미래 객체에 대한 grant 취소: 관리 액세스 스키마에서는 애플리케이션 역할 또는 전역 MANAGE GRANTS 권한이 있는 역할이 스키마의 미래 객체에 대한 권한을 취소할 수 있어요. 표준 스키마에서는 스키마의 미래 객체에 대한 권한을 취소하려면 전역 MANAGE GRANTS 권한이 필요해요.

사용 메모 (Usage notes)

  • 권한은 서로 다른 grantor에 의해 애플리케이션 역할에 여러 번 부여될 수 있어요. REVOKE <privilege> 문장은 활성 역할 또는 계층 구조의 더 낮은 역할이 grantor인 grant만 취소해요. 다른 grantor의 지정된 권한의 추가 grant는 무시돼요. REVOKE <privilege> 문장은 취소되는 권한이 없어도 성공해요. 지정된 권한에 종속 grant가 있고 문장에 CASCADE 절이 생략된 경우에만 오류를 반환해요.
  • 개별 UDF의 권한을 취소할 때 udf_name ( [ arg_data_type , ... ] ) 형태로 UDF의 인자 데이터 유형을 지정해야 해요.
  • 개별 저장 프로시저의 권한을 취소할 때 procedure_name ( [ arg_data_type , ... ] ) 형태로 프로시저의 인자 데이터 유형을 지정해야 해요.
  • Future grants: future grants를 취소하면 지정된 유형의 미래 객체에 대한 권한 grant만 제거돼요. 기존 객체에 부여된 권한은 유지돼요.

예시 (Example)

뷰에 대한 SELECT 권한을 애플리케이션 역할에서 취소해요:

REVOKE SELECT ON VIEW data.views.credit_usage
  FROM APPLICATION ROLE app_snowflake_credits;

더 알아보기 (Learn more)