GRANT <privileges> … TO APPLICATION
GRANT <privileges> … TO APPLICATION
보호 가능한 객체(securable object)에 대한 하나 이상의 접근 권한을 애플리케이션에 부여하는 명령이에요. 부여할 수 있는 권한은 객체별로 다릅니다.
출처: 문서
본문
구문 (Syntax)
GRANT { <globalPrivileges> ON ACCOUNT
| { <accountObjectPrivileges> | ALL [ PRIVILEGES ] } ON { USER | RESOURCE MONITOR | WAREHOUSE | COMPUTE POOL | DATABASE | INTEGRATION | CONNECTION | FAILOVER GROUP | REPLICATION GROUP | EXTERNAL VOLUME | APPLICATION PACKAGE | APPLICATION }
| { <schemaPrivileges> | ALL [ PRIVILEGES ] } ON { SCHEMA <name> | ALL SCHEMAS IN DATABASE <db_name> }
| { <schemaObjectPrivileges> | ALL [ PRIVILEGES ] } ON { <object_name> | ALL <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> }
}
TO APPLICATION <name>
여기서:
globalPrivileges ::=
{
CREATE {
COMPUTE POOL | DATABASE | WAREHOUSE
}
| BIND SERVICE ENDPOINT
| EXECUTE MANAGED TASK
| MANAGE WAREHOUSES
| READ SESSION
}
[ , ... ]
accountObjectPrivileges ::=
-- For COMPUTE POOL
{ MODIFY | MONITOR | OPERATE | USAGE } [ , ... ]
-- For CONNECTION
{ FAILOVER } [ , ... ]
-- For DATABASE
{ APPLYBUDGET | CREATE { DATABASE ROLE | SCHEMA }
| IMPORTED PRIVILEGES | MODIFY | MONITOR | USAGE } [ , ... ]
-- For EXTERNAL VOLUME
{ USAGE } [ , ... ]
-- For FAILOVER GROUP
{ FAILOVER | MODIFY | MONITOR | REPLICATE } [ , ... ]
-- For INTEGRATION
{ USAGE | USE_ANY_ROLE } [ , ... ]
-- For REPLICATION GROUP
{ MODIFY | MONITOR | REPLICATE } [ , ... ]
-- For RESOURCE MONITOR
{ MODIFY | MONITOR } [ , ... ]
-- For USER
{ MONITOR } [ , ... ]
-- For WAREHOUSE
{ APPLYBUDGET | MODIFY | MONITOR | USAGE | OPERATE } [ , ... ]
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 ::=
-- For ALERT
{ MONITOR | OPERATE } [ , ... ]
-- For DYNAMIC TABLE
OPERATE, SELECT [ , ...]
-- For EVENT TABLE
{ INSERT | SELECT } [ , ... ]
-- For FILE FORMAT, FUNCTION (UDF or external function), PROCEDURE, SECRET, SEQUENCE, SNAPSHOT, or TYPE
USAGE [ , ... ]
-- For IMAGE REPOSITORY
{ READ, WRITE } [ , ... ]
-- For MATERIALIZED VIEW
{ APPLYBUDGET | REFERENCES | SELECT } [ , ... ]
-- For PIPE
{ APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
-- For { AGGREGATION | MASKING | PACKAGES | PASSWORD | PROJECTION | ROW ACCESS | SESSION } POLICY or TAG
APPLY [ , ... ]
-- For SECRET
READ, USAGE [ , ... ]
-- For SEMANTIC VIEW
REFERENCES [ , ... ]
-- For SERVICE
{ MONITOR | OPERATE } [ , ... ]
-- For external STAGE
USAGE [ , ... ]
-- For internal STAGE
READ [ , WRITE ] [ , ... ]
-- For STREAM
SELECT [ , ... ]
-- For TABLE
{ APPLYBUDGET | DELETE | EVOLVE SCHEMA | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
-- For TAG
READ
-- For TASK
{ APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
-- For VIEW
{ REFERENCES | SELECT } [ , ... ]
스키마 수준 객체의 경우 객체 유형을 지정해요: 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_name — 권한이 부여되는 객체의 식별자를 지정해요.
- object_type_plural — object_type의 복수형(예: TABLES, VIEWS). 파이프에 대한 대량 부여는 허용되지 않아요.
- name — 수신 애플리케이션(권한이 부여되는 애플리케이션)의 식별자를 지정해요.
사용 메모 (Usage notes)
- 스키마나 데이터베이스의 객체 또는 지정된 유형의 모든 객체에 대한 OWNERSHIP 권한을 애플리케이션에 부여하거나, 한 애플리케이션에서 다른 애플리케이션으로 객체의 소유권을 이전하는 것은 허용되지 않아요.
- 현재 애플리케이션 버전 매니페스트에 없는 ACCOUNT 수준 권한 부여(REVOKE 아님)는 허용되지 않아요.
예시 (Example)
뷰에 대한 SELECT 권한을 애플리케이션에 부여해요:
GRANT SELECT ON VIEW data.views.credit_usage
TO APPLICATION app_snowflake_credits;