GRANT <권한> … TO APPLICATION ROLE¶
보안 가능한 스키마 수준 오브젝트에 대한 하나 이상의 액세스 권한을 애플리케이션 역할에 부여합니다. 부여할 수 있는 권한은 오브젝트별로 다릅니다.
역할 및 보안 오브젝트에 대한 자세한 내용은 액세스 제어의 개요 를 참조하십시오.
구문¶
GRANT {
{ schemaPrivileges | ALL [ PRIVILEGES ] } ON SCHEMA <schema_name>
| { schemaObjectPrivileges | ALL [ PRIVILEGES ] } ON { <object_type> <object_name> | ALL <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> }
| { schemaObjectPrivileges | ALL [ PRIVILEGES ] } ON FUTURE <object_type_plural> IN SCHEMA <schema_name>
}
TO APPLICATION ROLE <name> [ WITH GRANT OPTION ]
여기서:
schemaPrivileges ::=
ADD SEARCH OPTIMIZATION
| CREATE {
ALERT | EXTERNAL TABLE | FILE FORMAT | FUNCTION
| MATERIALIZED VIEW | PIPE | PROCEDURE
| { AGGREGATION | MASKING | PASSWORD | PROJECTION | ROW ACCESS | SESSION } POLICY
| SECRET | SEQUENCE | 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, or SEQUENCE
USAGE [ , ... ]
-- For PIPE
{ APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
-- For { AGGREGATION | MASKING | PACKAGES | PASSWORD | PROJECTION | ROW ACCESS | SESSION } POLICY or TAG
APPLY [ , ... ]
-- For SECRET
READ, USAGE [ , ... ]
-- 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 } [ , ... ]
-- For MATERIALIZED VIEW
{ APPLYBUDGET | REFERENCES | SELECT } [ , ... ]
각 오브젝트 유형에 지원되는 권한에 대한 자세한 내용은 액세스 제어 권한 을 참조하십시오.
필수 매개 변수¶
object_name
권한이 부여된 오브젝트의 식별자를 지정합니다.
object_type
스키마 수준 오브젝트의 유형을 지정합니다.
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
SESSION POLICY
SEQUENCE
STAGE
STREAM
TABLE
TAG
TASK
VIEW
object_type_plural
object_type
의 복수형(예:TABLES
,VIEWS
).파이프에 대한 대량 부여는 허용되지 않습니다.
name
수신자 애플리케이션 역할(즉, 권한이 부여되는 역할)의 식별자를 지정합니다.
선택적 매개 변수¶
ON FUTURE
기존 오브젝트가 아닌 지정된 형식의 새로운(즉, 향후) 스키마 오브젝트에 대해 권한이 부여되도록 지정합니다. ON FUTURE 키워드와 함께 REVOKE <권한> FROM APPLICATION ROLE 을 사용하면 언제든지 향후 권한 부여를 취소할 수 있습니다. 기존 오브젝트에 부여된 모든 권한은 유지됩니다. 향후 권한 부여에 대한 자세한 내용은 이 항목의 스키마 오브젝트에 대한 향후 권한 부여 를 참조하십시오.
WITH GRANT OPTION
지정된 경우 수신자 애플리케이션 역할이 다른 애플리케이션 역할에 권한을 부여하도록 허용합니다.
기본값: 값 없음(수신자 애플리케이션 역할은 다른 애플리케이션 역할에 권한을 부여할 수 없다는 의미임).
참고
WITH GRANT OPTION 절은 IMPORTED PRIVILEGES 권한을 지원하지 않습니다. 자세한 내용은 공유 데이터베이스에 권한 부여하기 섹션을 참조하십시오.
사용법 노트¶
애플리케이션의 오브젝트에 대한 권한을 부여하고 취소하려면 애플리케이션 역할을 사용해야 합니다.
이 명령에는 자신이 애플리케이션 공급자 또는 컨슈머인지 여부에 따라 다른 제한 사항이 있습니다.
애플리케이션 컨슈머 는 애플리케이션 역할과 관련하여 다음을 수행할 수 없습니다.
애플리케이션 역할과 관련된 오브젝트 권한을 부여하거나 취소합니다.
데이터베이스 또는 공유에 애플리케이션 역할을 부여하거나 데이터베이스 또는 공유에서 애플리케이션 역할을 취소합니다.
동일한 애플리케이션 또는 다른 애플리케이션에 애플리케이션 역할을 부여하거나 동일한 애플리케이션 또는 다른 애플리케이션에서 애플리케이션 역할을 취소합니다.
이들 항목은 애플리케이션 역할과 관련하여 애플리케이션 공급자 를 적용합니다.
오브젝트 또는 스키마에서 지정된 유형의 모든 오브젝트에 대한 OWNERSHIP 권한을 애플리케이션 역할에 부여하여 오브젝트의 소유권을 한 애플리케이션 역할에서 다른 애플리케이션 역할로 이전하려면 GRANT OWNERSHIP 명령을 사용하십시오.
단일 GRANT 문에서 같은 오브젝트 유형에 대해 각 권한을 쉼표로 구분하여 여러 권한을 지정할 수 있습니다.
하지만 GRANT 명령을 실행하는 애플리케이션 역할이 보유하고 부여할 수 있는 권한만 실제로 대상 애플리케이션 역할에 부여됩니다. 부여할 수 없는 모든 권한에 대해 경고 메시지가 반환됩니다.
특정 애플리케이션 역할에 부여된 권한은 애플리케이션 역할이 부여된 다른 애플리케이션 역할뿐 아니라, 역할 계층 구조 내에서 다른 더 높은 수준의 애플리케이션 역할이 자동으로 상속합니다.
자세한 내용은 액세스 제어의 개요 섹션을 참조하십시오.
관리되는 액세스 스키마에서는 다음과 같습니다.
오브젝트에 대한 OWNERSHIP 권한은 스키마 소유자의 하위 역할에만 이전될 수 있습니다.
스테이지에 대해서는 다음과 같습니다.
USAGE는 외부 스테이지에만 적용됩니다.
READ
WRITE는 내부 스테이지에만 적용됩니다. 또한, 내부 스테이지에 대해 WRITE 권한을 부여하려면 먼저 스테이지에 대해 READ 권한을 부여해야 합니다.
외부 및 내부 스테이지에 대한 자세한 내용은 CREATE STAGE 및 (이 항목의) 액세스 제어 요구 사항 을 참조하십시오.
개별 UDF 또는 저장 프로시저에 대한 권한을 부여할 때, 아래 표시된 구문을 사용하여 인자의 데이터 타입(있는 경우)을 지정해야 합니다.
<udf_or_stored_procedure_name> ( [ <arg_data_type> [ , ... ] ] )
Snowflake는 인자 데이터 타입을 사용하여, 스키마 내에서 동일한 이름을 가진 UDF 및 저장 프로시저를 확인합니다. 자세한 내용은 프로시저 및 함수 오버로딩하기 섹션을 참조하십시오.
액세스 제어 요구 사항¶
이 명령은 애플리케이션 내에서만 실행할 수 있습니다.
권한은 애플리케이션이 소유한 오브젝트에 대해서만 부여하거나 취소할 수 있습니다. 이러한 오브젝트를 확인하려면 SHOW OBJECTS 명령을 사용하십시오.
SHOW OBJECTS OWNED BY APPLICATION myapp;
다음은 관리되는 액세스 스키마에 관한 설명입니다.
관리되는 액세스 스키마(즉, CREATE SCHEMA … WITH MANAGED ACCESS 구문을 사용하여 만든 스키마)에서 오브젝트 소유자는 권한 부여 결정을 내릴 수 없게 됩니다.
다음 역할은 관리되는 액세스 스키마의 오브젝트에 대한 권한을 부여할 수 있습니다.
애플리케이션 역할(이 역할이 스키마 소유자, 즉 스키마에 대한 OWNERSHIP 권한이 있는 역할이므로).
애플리케이션 역할을 상속하는 역할.
전역 MANAGE GRANTS 권한을 가진 역할이 스키마의 오브젝트에 대한 권한을 부여할 수 있습니다.
전역 MANAGE GRANTS 권한을 보유하는 역할은 현재(부여자) 역할에 추가 권한을 부여할 수 있습니다.
관리되는 액세스 스키마에서 향후 권한 부여의 액세스 제어 요구 사항에 대해서는 이 항목의 스키마 오브젝트에 대한 향후 권한 부여 를 참조하십시오.
스키마 오브젝트에 대한 향후 권한 부여¶
이들 섹션의 참고 사항은 스키마의 오브젝트에 대한 향후 권한 부여를 지정할 때(즉, ON FUTURE 키워드를 사용할 때) 적용됩니다.
고려 사항¶
스키마에 대해 동일한 오브젝트 유형에서 향후 권한 부여가 정의되면 스키마 수준 권한 부여가 데이터베이스 수준의 권한 부여보다 우선하며, 데이터베이스 수준의 권한 부여는 무시됩니다. 이 동작은 한 애플리케이션 역할 또는 다른 애플리케이션 역할에 부여된 향후 오브젝트에 대한 권한에 적용됩니다.
제약 및 제한 사항¶
각 보안 오브젝트 타입에 대한 OWNERSHIP 권한의 향후 권한 부여는 두 번 이상 허용되지 않습니다.
다음 유형의 오브젝트에는 향후 권한 부여를 정의할 수 없습니다.
컴퓨팅 풀
외부 함수
이미지 리포지토리
정책 오브젝트:
집계 정책
마스킹 정책
패키지 정책
프로젝션 정책
행 액세스 정책
세션 정책
태그
데이터베이스에서 지정된 유형의 오브젝트에 대한 OWNERSHIP 권한의 향후 권한 부여는 관리되는 액세스 스키마의 새 오브젝트에 적용되지 않습니다.
관리되는 액세스 스키마의 오브젝트에 대한 향후 권한 부여에는 다음 제한 사항이 적용됩니다.
오브젝트에 대한 OWNERSHIP 권한의 향후 권한 부여는 스키마 소유자(즉 , 스키마에 대한 OWNERSHIP 권한을 가진 역할)의 하위 역할에만 적용할 수 있습니다.
먼저 ON FUTURE 키워드와 함께 REVOKE <권한> 을 사용하여 OWNERSHIP 권한의 모든 공개적인 향후 권한 부여를 취소해야 관리되는 액세스 스키마의 소유권을 다른 역할로 이전할 수 있습니다.
테이블 이름을 바꾸거나 교체하는 경우에는 향후 권한 부여가 적용되지 않습니다.
다음 제한 사항이 있는 명명된 스테이지에서 향후 권한 부여가 지원됩니다.
READ 권한 없이는 WRITE 권한을 지정할 수 없습니다.
WRITE 권한이 있으면 READ 권한을 취소할 수 없습니다.
내부 스테이지의 경우 READ 또는 WRITE 권한이 있는 향후 권한 부여만 구체화됩니다.
외부 스테이지의 경우 USAGE 권한이 포함된 향후 권한 부여만 구체화됩니다.
관리되는 액세스 스키마에서 애플리케이션 역할과 전역 MANAGE GRANTS 권한이 있는 역할은 관리되는 액세스 스키마의 향후 오브젝트에 대한 권한을 부여할 수 있습니다.
표준 스키마에서 스키마의 향후 오브젝트에 대한 권한을 부여하려면 전역 MANAGE GRANTS 권한이 필요합니다.
예¶
애플리케이션 역할에 뷰에 대한 SELECT 권한을 부여합니다.
GRANT SELECT ON VIEW data.views.credit_usage
TO APPLICATION ROLE app_snowflake_credits;