SHOW CALLER GRANTS
SHOW CALLER GRANTS
제한된 호출자 권한(restricted caller's rights)을 구현하는 데 사용되는 호출자 그랜트(caller grants)를 나열하는 명령이에요.
출처: 문서
본문
구문 (Syntax)
SHOW CALLER GRANTS
{
{ ON <object_type> <object_name> | ON ACCOUNT }
| TO { ROLE | DATABASE ROLE } <owner_name>
}
파라미터
- ON object_type object_name 또는 ON ACCOUNT — 특정 객체의 호출자 그랜트를 나열할지, 아니면 계정과 관련된 모든 호출자 그랜트를 나열할지 지정해요. object_type의 단수형(예: TABLE, WAREHOUSE)을 사용해요.
- TO ROLE owner_name 또는 TO DATABASE ROLE owner_name — 실행 가능한 소유자(executable owner)를 지정해요. 해당 소유자에게 부여된 모든 호출자 그랜트를 나열해요.
출력 (Output)
| Column | Description |
|---|---|
| created_on | 호출자 그랜트가 부여된 날짜와 시간. |
| privilege | grantee_name이 소유한 실행 파일이 실행할 수 있는 권한. |
| granted_on | 호출자 그랜트의 대상이 되는 객체 유형(객체에 직접 부여됐는지, 해당 유형의 모든 객체에 부여됐는지와 무관). |
| name | 호출자 그랜트가 특정 객체에 직접 부여된 경우 그 객체의 이름. |
| is_inherited | TRUE이면 GRANT INHERITED CALLER 또는 GRANT ALL INHERITED CALLER PRIVILEGES 문으로 특정 유형의 모든 객체에 호출자 그랜트가 부여된 것. FALSE이면 name 객체에 직접 부여된 것. |
| inherited_from | GRANT INHERITED CALLER 또는 GRANT ALL INHERITED CALLER PRIVILEGES 문으로 특정 유형의 모든 객체에 부여된 경우, 부여된 수준. ACCOUNT, DATABASE, SCHEMA 중 하나. |
| inherited_from_database | inherited_from이 데이터베이스(애플리케이션 또는 애플리케이션 패키지 포함)이면 그 데이터베이스의 이름. inherited_from이 스키마이면 그 스키마를 포함하는 데이터베이스의 이름. |
| inherited_from_schema | inherited_from이 스키마이면 그 스키마의 이름. |
| granted_to | 호출자 그랜트가 부여된 실행 가능한 소유자의 유형. ROLE 또는 DATABASE ROLE 중 하나. |
| grantee_name | 호출자 그랜트가 부여된 실행 가능한 소유자의 이름. |
접근 제어 요구사항 (Access control requirements)
누구나 SHOW CALLER GRANTS TO … 명령을 실행하여 특정 실행 가능한 소유자에게 부여된 호출자 그랜트를 나열할 수 있어요.
SHOW CALLER GRANTS ON … 명령을 실행하려면 다음 권한이 필요해요:
| Privilege | Object | Notes |
|---|---|---|
| Any privilege | Specified object | SHOW CALLER GRANTS 명령에 지정된 객체에 대해 최소한 하나의 권한이 필요해요. |
사용 메모 (Usage notes)
SHOW CALLER GRANTS ON …문을 실행할 때 출력의 서로 다른 행이 서로 다른 것을 나타낼 수 있어요. 예를 들어 한 행은 호출자 그랜트가 객체에 직접 부여됐음을, 다른 행은 객체가 GRANT 문의 IN 절로 지정됐음을 나타낼 수 있어요.- 사용자가
SHOW CALLER GRANTS를 실행하면 결과에는 사용자가 최소한 하나의 권한을 가진 객체만 포함돼요. - 이 명령은 실행에 실행 중인 웨어하우스가 필요하지 않아요.
- 이 명령은 현재 사용자의 현재 역할에 최소한 하나의 접근 권한이 부여된 객체만 반환해요.
MANAGE GRANTS접근 권한은 보유자가 계정의 모든 객체를 볼 수 있게 암시적으로 허용해요. 기본적으로 계정 관리자(ACCOUNTADMIN 역할 사용자)와 보안 관리자(SECURITYADMIN 역할 사용자)만 MANAGE GRANTS 권한을 가져요.- 이 명령의 출력을 후처리하려면 파이프 연산자(
->>)나RESULT_SCAN함수를 사용할 수 있어요. 출력 열 이름은 소문자이므로 큰따옴표로 묶은 식별자를 사용해요(예:SELECT "type").
예시 (Examples)
테이블 t1에 부여된 호출자 그랜트를 나열해요:
SHOW CALLER GRANTS ON TABLE t1;
현재 계정에 부여된 모든 호출자 그랜트를 나열해요. 여기에는 계정에 직접 부여된 그랜트(GRANT CALLER … ON ACCOUNT)와 계정의 모든 객체에 부여된 그랜트(GRANT INHERITED CALLER … IN ACCOUNT)가 포함돼요:
SHOW CALLER GRANTS ON ACCOUNT;
데이터베이스 역할 db.owner_role에 부여된 모든 호출자 그랜트를 나열해요:
SHOW CALLER GRANTS TO DATABASE ROLE db.owner_role;