REVOKE <privileges> FROM APPLICATION¶
보안 가능한 오브젝트에 대한 하나 이상의 액세스 권한을 애플리케이션에서 취소합니다. 취소할 수 있는 권한은 오브젝트별로 다릅니다.
역할 및 보안 오브젝트에 대한 자세한 내용은 액세스 제어의 개요 를 참조하십시오.
구문¶
REVOKE { { globalPrivileges } ON ACCOUNT
| { accountObjectPrivileges | ALL [ PRIVILEGES ] } ON { USER | RESOURCE MONITOR | WAREHOUSE | COMPUTE POOL | DATABASE | INTEGRATION | CONNECTION | FAILOVER GROUP | REPLICATION GROUP | EXTERNAL VOLUME } <object_name>
| { schemaPrivileges | ALL [ PRIVILEGES ] } ON { SCHEMA <schema_name> | ALL SCHEMAS IN DATABASE <db_name> }
| { schemaObjectPrivileges | ALL [ PRIVILEGES ] } ON { <object_type> <object_name> | ALL <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> }
}
FROM 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 | 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, or SNAPSHOT
USAGE [ , ... ]
-- For IMAGE REPOSITORY
{ READ, WRITE } [ , ... ]
-- For PIPE
{ APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
-- For { MASKING | PACKAGES | PASSWORD | ROW ACCESS | SESSION } POLICY or TAG
APPLY [ , ... ]
-- For SECRET
READ, USAGE [ , ... ]
-- 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 } [ , ... ]
-- 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
수신자 애플리케이션(권한이 부여되는 역할)의 식별자를 지정합니다.
보안 요구 사항¶
- 개별 오브젝트에 대한 권한 취소하기:
다음 기준 중 하나에 부응하는 활성 역할 또는 상위 역할 을 사용하여 다른 애플리케이션 역할에서 오브젝트에 대한 권한을 취소할 수 있습니다.
이 역할은 SHOW GRANTS 출력의 GRANTED_BY 열에서 권한 부여자 로 식별됩니다.
한 권한의 여러 인스턴스를 지정된 오브젝트에 부여한 경우 활성 권한 부여자 역할이 부여한 인스턴스만 취소됩니다.
이 역할은 전역 MANAGE GRANTS 권한이 있습니다.
한 권한의 여러 인스턴스를 지정된 오브젝트에 부여한 경우 모든 인스턴스가 취소됩니다.
SECURITYADMIN 시스템 역할 이상의 역할만 기본적으로 MANAGE GRANTS 권한을 가집니다. 하지만 사용자 지정 역할에 이 권한을 부여할 수 있습니다.
관리되는 액세스 스키마(CREATE SCHEMA … WITH MANAGED ACCESS 구문을 사용하여 만든 스키마)에서는 스키마 소유자(스키마에 대한 OWNERSHIP 권한을 가진 역할) 또는 전역 MANAGE GRANTS 권한을 가진 역할이나 그 이상의 역할만 스키마의 오브젝트에 대한 권한을 취소할 수 있습니다.
사용법 노트¶
모든 클래스에 대해 직접 권한을 부여하거나 취소할 수 없습니다. 그러나 클래스의 인스턴스를 만들고 계정 역할에서 인스턴스 역할 을 취소할 수 있습니다. 역할이 클래스의 인스턴스를 생성하지 못하도록 하려면 스키마에 대한 CREATE <class_name> 권한을 취소하십시오.
다른 권한 부여자가 한 역할에 여러 번 권한을 부여할 수 있습니다. REVOKE <권한> 문은 활성 역할 또는 계층 구조의 하위 역할이 권한 부여자인 권한 부여만 취소합니다. 다른 권한 부여자가 지정한 권한의 추가 권한 부여가 무시됩니다.
또한 아무 권한도 취소되지 않은 경우에도 REVOKE <권한> 문이 성공합니다. REVOKE <권한> 문은 지정된 권한에 종속 권한 부여가 있고 문에서 CASCADE 절이 생략된 경우에만 오류를 반환합니다.
단일 GRANT 문에서 같은 오브젝트 유형에 대해 여러 권한을 지정하거나(각 권한은 쉼표로 구분됨) 특수
ALL [ PRIVILEGES ]
키워드를 사용하여 지정된 오브젝트 유형에 적용 가능한 모든 권한을 부여할 수 있습니다. 하지만 GRANT 명령을 실행하는 역할이 보유하고 부여할 수 있는 권한만 실제로 대상 역할에 부여됩니다. 부여할 수 없는 모든 권한에 대해 경고 메시지가 반환됩니다.태그에는 이 키워드를 지정할 수 없습니다.
데이터베이스의 경우 IMPORTED PRIVILEGES 권한은 공유 데이터베이스(즉, 공유에서 만든 데이터베이스)에만 적용됩니다. 자세한 내용은 공유 데이터 사용하기 섹션을 참조하십시오.
스키마와 스키마의 오브젝트에 대해, 컨테이너 내에서 같은 유형의 모든 오브젝트(데이터베이스 또는 스키마)에 대한 권한을 부여하기 위해 옵션이 제공됩니다. 이것은 편리한 옵션입니다. 내부적으로, 이 명령은 각 오브젝트에 대한 일련의 개별 GRANT 명령으로 확장됩니다. 현재 컨테이너 내에 있는 오브젝트만 영향을 받습니다.
하지만 Snowflake 모델에서 권한을 대량으로 부여하는 것은 권장되는 방법이 아닙니다. 대신, Snowflake는 공유 역할을 만들고 그 역할을 사용해 역할이 부여된 모든 사용자에게 자동으로 액세스할 수 있는 오브젝트를 만들 것을 권장합니다.
스테이지에 대해서는 다음과 같습니다.
USAGE는 외부 스테이지에만 적용됩니다.
READ | WRITE는 내부 스테이지에만 적용됩니다. 또한, 내부 스테이지에 대해 WRITE 권한을 부여하려면 먼저 스테이지에 대해 READ 권한을 부여해야 합니다.
외부 및 내부 스테이지에 대한 자세한 내용은 CREATE STAGE 를 참조하십시오.
개별 UDF에 권한을 부여할 때
udf_name ( [ arg_data_type , ... ] )
의 형식으로 UDF에 대한 인자(있는 경우)의 데이터 타입을 지정해야 합니다. 이는 Snowflake가 인자 데이터 타입을 사용하여 스키마 내에서 같은 이름을 가진 UDFs를 확인하기 때문에 필요합니다. 자세한 내용은 사용자 정의 함수 개요 섹션을 참조하십시오.개별 저장 프로시저에 권한을 부여할 때
procedure_name ( [ arg_data_type , ... ] )
의 형식으로 프로시저에 대한 인자(있는 경우)의 데이터 타입을 지정해야 합니다. 이는 Snowflake가 인자 데이터 타입을 사용하여 스키마 내에서 같은 이름을 가진 저장 프로시저를 확인하기 때문에 필요합니다.자세한 내용은 관리되는 액세스 스키마 를 참조하십시오.
예¶
애플리케이션에서 뷰에 대한 SELECT 권한을 취소합니다.
REVOKE SELECT ON VIEW data.views.credit_usage
FROM APPLICATION app_snowflake_credits;