REVOKE <privileges> … FROM APPLICATION ROLE
REVOKE <privileges> … FROM APPLICATION ROLE
보호 가능한 스키마 수준 객체(securable schema-level object)에 대한 하나 이상의 접근 권한을 애플리케이션 역할에서 취소하는 명령이에요. 취소할 수 있는 권한은 객체별로 다릅니다.
출처: 문서
본문
구문 (Syntax)
REVOKE [ GRANT OPTION FOR ]
{
| { <schemaPrivileges> | ALL [ PRIVILEGES ] } ON { SCHEMA <name> | ALL SCHEMAS IN DATABASE <db_name> }
| { <schemaPrivileges> | ALL [ PRIVILEGES ] } ON { FUTURE SCHEMAS IN DATABASE <db_name> }
| { <schemaObjectPrivileges> | ALL [ PRIVILEGES ] } ON { <object_name> | ALL <object_type_plural> IN SCHEMA <schema_name> }
| { <schemaObjectPrivileges> | ALL [ PRIVILEGES ] } ON FUTURE <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> }
}
FROM APPLICATION ROLE <name> [ RESTRICT | CASCADE ]
여기서:
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— 객체 유형별: ALERT(MONITOR | OPERATE), DYNAMIC TABLE(OPERATE, SELECT), EVENT TABLE(INSERT | SELECT), FILE FORMAT/FUNCTION/PROCEDURE/SECRET/SEQUENCE/SNAPSHOT/TYPE(USAGE), IMAGE REPOSITORY(READ, WRITE), MATERIALIZED VIEW(APPLYBUDGET | REFERENCES | SELECT), PIPE(APPLYBUDGET | MONITOR | OPERATE), POLICY/TAG(APPLY), SECRET(READ, USAGE), SEMANTIC VIEW(REFERENCES), SERVICE(MONITOR | OPERATE), external STAGE(USAGE), internal STAGE(READ [ , WRITE ]), STREAM(SELECT), TABLE(APPLYBUDGET | DELETE | EVOLVE SCHEMA | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE), TAG(READ), TASK(APPLYBUDGET | MONITOR | OPERATE), VIEW(REFERENCES | SELECT).
필수 파라미터 (Required parameters)
- 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,SEMANTIC VIEW,SESSION POLICY,SEQUENCE,STAGE,STREAM,TABLE,TAG,TASK,TYPE,VIEW. - object_type_plural — object_type의 복수형(예: TABLES, VIEWS). 파이프에 대한 대량 부여는 허용되지 않아요.
- name — 수신 애플리케이션 역할(권한이 부여되는 역할)의 식별자를 지정해요.
선택 파라미터 (Optional parameters)
- FUTURE — 지정하면 기존 객체가 아니라 지정된 유형의 새(즉 미래) 스키마 객체에 부여된 권한만 제거해요. 기존 객체에 부여된 권한은 유지돼요.
- RESTRICT | CASCADE — 지정하면 권한이 다른 애플리케이션 역할에 재부여되었는지 여부를 기준으로 취소 작업이 성공하는지 실패하는지 결정해요.
RESTRICT: 취소되는 권한이 다른 애플리케이션 역할에 재부여되었으면 REVOKE 명령이 실패해요.CASCADE: 취소되는 권한이 재부여되었으면 REVOKE 명령이 이러한 종속 권한 부여를 재귀적으로 취소해요. 객체의 같은 권한이 다른 grantor(병렬 grant)에 의해 대상 역할에 부여되었다면 그 grant는 영향받지 않고 대상 역할은 권한을 유지해요.- 기본값: RESTRICT
보안 요구사항 (Security requirements)
개별 객체에 권한 취소: 다음 기준 중 하나를 충족하는 활성 역할(또는 더 높은 역할)을 사용하여 객체의 권한을 다른 애플리케이션 역할에서 취소할 수 있어요:
- 역할이 SHOW GRANTS 출력의 GRANTED_BY 열에서 권한의 grantor로 식별되는 경우. 지정된 객체에 권한 grant의 여러 인스턴스가 있으면 활성 grantor 역할이 부여한 인스턴스만 취소돼요.
- 역할이 전역 MANAGE GRANTS 권한을 가진 경우. 지정된 객체에 권한 grant의 여러 인스턴스가 있으면 모든 인스턴스가 취소돼요. 기본적으로 SECURITYADMIN 시스템 역할 이상만 MANAGE GRANTS 권한을 가지지만 사용자 지정 역할에 부여할 수 있어요.
관리 액세스 스키마(즉 CREATE SCHEMA … WITH MANAGED ACCESS 구문으로 만든 스키마)의 객체에서 권한을 취소할 수 있는 역할:
- 스키마 소유자(즉 스키마에 OWNERSHIP 권한이 있는 역할)이기 때문에 애플리케이션 역할.
- 전역 MANAGE GRANTS 권한이 있는 역할.
지정된 유형의 미래 객체에 대한 grant 취소: 관리 액세스 스키마에서는 애플리케이션 역할 또는 전역 MANAGE GRANTS 권한이 있는 역할이 스키마의 미래 객체에 대한 권한을 취소할 수 있어요. 표준 스키마에서는 스키마의 미래 객체에 대한 권한을 취소하려면 전역 MANAGE GRANTS 권한이 필요해요.
사용 메모 (Usage notes)
- 권한은 서로 다른 grantor에 의해 애플리케이션 역할에 여러 번 부여될 수 있어요.
REVOKE <privilege>문장은 활성 역할 또는 계층 구조의 더 낮은 역할이 grantor인 grant만 취소해요. 다른 grantor의 지정된 권한의 추가 grant는 무시돼요.REVOKE <privilege>문장은 취소되는 권한이 없어도 성공해요. 지정된 권한에 종속 grant가 있고 문장에 CASCADE 절이 생략된 경우에만 오류를 반환해요. - 개별 UDF의 권한을 취소할 때
udf_name ( [ arg_data_type , ... ] )형태로 UDF의 인자 데이터 유형을 지정해야 해요. - 개별 저장 프로시저의 권한을 취소할 때
procedure_name ( [ arg_data_type , ... ] )형태로 프로시저의 인자 데이터 유형을 지정해야 해요. - Future grants: future grants를 취소하면 지정된 유형의 미래 객체에 대한 권한 grant만 제거돼요. 기존 객체에 부여된 권한은 유지돼요.
예시 (Example)
뷰에 대한 SELECT 권한을 애플리케이션 역할에서 취소해요:
REVOKE SELECT ON VIEW data.views.credit_usage
FROM APPLICATION ROLE app_snowflake_credits;