REVOKE CALLER
REVOKE CALLER
caller grant를 사용하여 실행 가능 객체 소유자(executable owner)에게 이전에 부여된 권한을 취소하는 명령이에요.
출처: 문서
본문
REVOKE CALLER 명령의 변형은 다음과 같아요:
REVOKE CALLER— 특정 객체의 특정 권한을 취소해요.REVOKE ALL CALLER PRIVILEGES— 특정 객체의 모든 권한을 취소해요. 실행 가능 객체는 객체에 접근하려고 할 때 호출자의 어떤 권한으로도 실행할 수 없어요.REVOKE INHERITED CALLER— 공통 스키마, 데이터베이스 또는 계정을 공유할 때 같은 유형의 모든 현재 및 미래 객체에 대한 caller grants를 취소해요. 지정된 목록의 권한만 취소돼요.REVOKE ALL INHERITED CALLER PRIVILEGES— 공통 스키마, 데이터베이스 또는 계정을 공유할 때 같은 유형의 모든 현재 및 미래 객체에 대한 caller grants를 취소해요. 모든 권한이 취소되며, 실행 가능 객체는 호출자의 어떤 권한으로도 실행할 수 없어요.
구문 (Syntax)
REVOKE CALLER <object_privilege> [ , <object_privilege> ... ]
ON <object_type> <object_name>
FROM { ROLE <grantee_name> | DATABASE ROLE <grantee_name> }
REVOKE ALL CALLER PRIVILEGES
ON <object_type> <object_name>
FROM { ROLE <grantee_name> | DATABASE ROLE <grantee_name> }
REVOKE INHERITED CALLER <object_privilege> [ , <object_privilege> ... ]
ON ALL <object_type_plural>
IN { ACCOUNT | DATABASE <db_name> | SCHEMA <schema_name> | APPLICATION <app_name> | APPLICATION PACKAGE <app_pkg_name> }
FROM { ROLE <grantee_name> | DATABASE ROLE <grantee_name> }
REVOKE ALL INHERITED CALLER PRIVILEGES
ON ALL <object_type_plural>
IN { ACCOUNT | DATABASE <db_name> | SCHEMA <schema_name> | APPLICATION <app_name> | APPLICATION PACKAGE <app_pkg_name> }
FROM { ROLE <grantee_name> | DATABASE ROLE <grantee_name> }
파라미터
- object_privilege [ , object_privilege ... ] — 취소하려는 객체 권한. 지정된 역할이 소유한 실행 가능 객체는 더 이상 이 권한으로 실행할 수 없어요. 둘 이상의 객체 권한을 지정하려면 쉼표로 구분된 목록을 사용해요.
- ON object_type object_name — 권한을 취소하려는 객체(유형 포함). object_type의 단수 형태를 사용해요(예: TABLE 또는 WAREHOUSE).
- ON ALL object_type_plural IN ACCOUNT 또는 ON ALL object_type_plural IN DATABASE db_name 또는 ON ALL object_type_plural IN SCHEMA schema_name 또는 ON ALL object_type_plural IN APPLICATION app_name 또는 ON ALL object_type_plural IN APPLICATION PACKAGE app_pkg_name — 특정 유형의 모든 객체에 대한 권한을 취소해요. 객체 유형의 복수 형태를 사용해요(예: TABLES 또는 WAREHOUSES). REVOKE 문장으로 현재 계정의 모든 객체 또는 지정된 데이터베이스, 스키마, 애플리케이션, 애플리케이션 패키지의 객체에 대한 접근을 취소할 수 있어요.
- FROM ROLE grantee_name 또는 FROM DATABASE ROLE grantee_name — 이전에 caller grant가 부여된 실행 가능 객체 소유자.
접근 제어 요구사항 (Access control requirements)
이 작업을 실행하는 역할은 최소한 다음 권한을 가져야 해요:
| Privilege | Object | Notes |
|---|---|---|
| MANAGE CALLER GRANTS | Account | 계정 수준의 MANAGE CALLER GRANTS 권한은 caller grants에만 관련돼요. 이 권한으로 역할에서 권한을 취소할 수는 없어요. |
| Any privilege | All specified objects | REVOKE 명령에 지정된 객체에 대한 권한이 하나 이상 필요해요. 예를 들어 테이블에 대한 caller grant를 취소하려면 그 테이블에 대한 권한이 하나 이상 있어야 해요. |
예시 (Examples)
owner_role이 소유한 실행 가능 객체는 현재 계정의 뷰에 접근할 때 더 이상 호출자의 권한으로 실행할 수 없어요:
REVOKE ALL INHERITED CALLER PRIVILEGES ON ALL VIEWS IN ACCOUNT FROM ROLE owner_role;
owner_role이 소유한 실행 가능 객체는 db.sch1 스키마에 접근할 때 더 이상 USAGE 권한으로 실행할 수 없어요:
REVOKE CALLER USAGE ON SCHEMA db.sch1 FROM ROLE owner_role;