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;

더 알아보기 (Learn more)