REVOKE <privileges> FROM APPLICATION ROLE¶
撤消应用程序角色对安全架构级对象的一项或多项访问权限。可撤消的权限是特定于对象的。
有关角色和安全对象的更多详细信息,请参阅 访问控制概述。
语法¶
账户角色:
REVOKE [ GRANT OPTION FOR ]
{
| { schemaPrivileges | ALL [ PRIVILEGES ] } ON { SCHEMA <schema_name> | ALL SCHEMAS IN DATABASE <db_name> }
| { schemaPrivileges | ALL [ PRIVILEGES ] } ON { FUTURE SCHEMAS IN DATABASE <db_name> }
| { schemaObjectPrivileges | ALL [ PRIVILEGES ] } ON { <object_type> <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 ]
其中:
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
指定收件人应用程序角色(即授予权限的角色)的标识符。
可选参数¶
FUTURE
如果指定此参数,则仅移除对指定类型(例如表或视图)的新(即未来)架构对象的已授予权限,而不移除对现有对象的已授予权限。请注意,所有对现有对象的已授予权限都将保留。
RESTRICT | CASCADE
如果指定此参数,则会根据权限是否已重新授予其他应用程序角色,来确定撤消权限的操作是成功还是失败。
RESTRICT
如果撤消的权限已重新授予其他应用程序角色,则 REVOKE 命令失败。
CASCADE
如果撤消的权限已被重新授予,则 REVOKE 命令以递归方式撤消这些依赖性的授予。如果另一个授予者已将对某个对象的相同权限授予目标角色(并行授予),则该授予不受影响,并且目标角色将保留该权限。
默认:
RESTRICT
安全要求¶
- 撤消对单个对象的权限:
要撤消其他应用程序角色对某个对象的权限,您可以使用满足以下任一条件的 活动角色 或 更高级别的角色:
在 SHOW GRANTS 输出的 GRANTED_BY 列中,该角色被标识为权限的 授予者。
如果授予了对指定对象的多个权限实例,则仅会撤消由活跃授予者角色授予的实例。
该角色具有全局 MANAGE GRANTS 权限。
如果您有多个实例被授予指定对象的权限,则撤消 所有 实例。
请注意,默认情况下,只有 SECURITYADMIN 系统角色及更高级别的角色才具有 MANAGE GRANTS 权限;不过,可以将该权限授予自定义角色。
以下角色可以撤消托管访问架构(即使用 CREATE SCHEMA ...WITH MANAGED ACCESS 语法创建的架构)构中对象的权限:
应用程序角色,因为此角色是架构所有者(即对架构具有 OWNERSHIP 权限)。(即对架构具有 OWNERSHIP 权限的角色)
具有全局 MANAGE GRANTS 权限的角色。
- 撤消对指定类型的未来对象的权限授予:
在托管访问架构中,应用程序角色或具有全局 MANAGE GRANTS 权限的角色都可以撤消对架构中未来对象的权限。
在标准架构中,需要全局 MANAGE GRANTS 权限才能撤消对架构中未来对象的权限。
使用说明¶
不同的授予者可以多次向应用程序角色授予权限。REVOKE <privilege> 语句仅撤消由活跃角色或层次结构中级别较低的角色作为授予者的授予。其他授予者对指定权限的任何额外授予都会被忽略。
即使没有撤消任何权限,REVOKE <privilege> 语句也会成功。REVOKE <privilege> 语句仅在以下情况下返回错误:指定的权限具有依赖性的授予,并且在该语句中省略了 CASCADE 子句。
撤消对单个 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 ROLE app_snowflake_credits;