GRANT CALLER¶
호출자 권한 을 역할에 부여합니다. 역할이 소유한 실행 파일이 제한된 호출자 권한으로 실행되는 경우 호출자 권한 부여에 지정된 호출자 권한으로만 실행할 수 있습니다.
GRANT CALLER 명령의 변형은 다음과 같습니다.
GRANTCALLER — 특정 오브젝트에 대한 호출자 권한을 부여합니다. 문에 의해 생성된 각 호출자 권한은 실행 파일을 지정된 권한으로 실행할 수 있도록 허용합니다.
GRANT ALL CALLER PRIVILEGES — 특정 오브젝트에 대한 호출자 권한을 부여합니다. 문에 의해 생성된 호출자 권한은 실행 파일이 호출자의 모든 권한으로 실행되도록 허용합니다.
GRANT INHERITED CALLER — 공통 스키마, 데이터베이스 또는 계정을 공유하는 경우 동일한 유형의 현재 및 향후 모든 오브젝트에 대해 호출자 권한을 부여합니다. 문에 의해 생성된 각 호출자 권한은 실행 파일을 지정된 권한으로 실행할 수 있도록 허용합니다.
GRANT ALL INHERITED CALLER PRIVILEGES — 공통 스키마, 데이터베이스 또는 계정을 공유하는 경우 동일한 유형의 현재 및 향후 모든 오브젝트에 대해 호출자 권한을 부여합니다. 문에 의해 생성된 호출자 권한은 실행 파일이 호출자의 모든 권한으로 실행되도록 허용합니다.
구문¶
GRANT CALLER <object_privilege> [ , <object_privilege> ... ]
ON <object_type> <object_name>
TO { ROLE | DATABASE ROLE } <grantee_name>
GRANT ALL CALLER PRIVILEGES
ON <object_type> <object_name>
TO { ROLE | DATABASE ROLE } <grantee_name>
GRANT 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> }
TO { ROLE | DATABASE ROLE } <grantee_name>
GRANT 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> }
TO { ROLE | DATABASE ROLE } <grantee_name>
매개 변수¶
object_privilege [ , object_privilege ... ]
실행 파일이 실행할 수 있는 오브젝트 권한입니다. 특정 오브젝트 유형에 대한 권한 목록은 액세스 제어 권한 섹션을 참조하십시오.
쉼표로 구분된 목록을 사용하여 둘 이상의 오브젝트 권한을 지정합니다.
ON object_type object_name
지정된 오브젝트(
object_name
)에 액세스할 때 지정된object_privilege
로 실행 파일을 실행하도록 허용합니다.object_type
의 단수형(예:TABLE
또는WAREHOUSE
)을 사용합니다.ON ALL object_type_plural IN ACCOUNT
또는 .ON ALL object_type_pluarl 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
)을 사용합니다.GRANT 문을 사용하여 현재 계정의 모든 오브젝트 또는 지정된 데이터베이스, 스키마, 애플리케이션 또는 애플리케이션 패키지의 오브젝트에 대한 액세스를 제어할 수 있습니다.
TO ROLE grantee_name
또는 .TO DATABASE ROLE grantee_name
호출자 권한 부여로 보안하려는 실행 파일의 소유자입니다.
데이터베이스 역할을 지정하면 권한은 데이터베이스 역할과 동일한 데이터베이스의 오브젝트로 제한됩니다.
액세스 제어 요구 사항¶
이 작업을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.
권한 |
오브젝트 |
참고 |
---|---|---|
MANAGE CALLER GRANTS |
계정 |
계정 수준 MANAGE CALLER GRANTS 권한은 호출자 권한 부여에만 적용됩니다. 역할에 권한을 부여할 수 없습니다. |
모든 권한 |
지정된 모든 오브젝트 |
호출자 권한 부여에 지정된 오브젝트에 대해 하나 이상의 권한이 필요합니다. 예를 들어, 테이블에 호출자 권한을 부여하려면 해당 테이블에 대한 권한이 하나 이상 있어야 합니다. |
지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.
보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.
예¶
v1
뷰에 액세스하는 owner_role
소유의 실행 파일은 해당 뷰에 대한 SELECT 권한으로 실행할 수 있습니다.
GRANT CALLER SELECT ON VIEW v1 TO owner_role;
db.sch
스키마의 모든 테이블에 액세스하는 owner_role
소유의 실행 파일은 호출자의 SELECT 및 INSERT 권한으로 실행할 수 있습니다.
GRANT INHERITED CALLER SELECT, INSERT ON ALL TABLES IN SCHEMA db.sch TO ROLE owner_role;
현재 계정의 스키마에 액세스하는 owner_role
소유의 실행 파일은 스키마에 대한 호출자의 모든 권한으로 실행할 수 있습니다.
GRANT ALL INHERITED CALLER PRIVILEGES ON ALL SCHEMAS IN ACCOUNT TO ROLE owner_role;
db.sch1.t1
테이블에 액세스하는 db.r
데이터베이스 역할이 소유한 실행 파일은 테이블에 대한 SELECT 권한으로 실행할 수 있습니다.
GRANT CALLER SELECT ON TABLE db.sch1.t1 TO DATABASE ROLE db.r;
my_db
데이터베이스에 액세스하는 owner_role
소유의 실행 파일은 데이터베이스에 대한 호출자의 모든 권한으로 실행할 수 있습니다.
GRANT ALL CALLER PRIVILEGES ON DATABASE my_db TO ROLE owner_role;