REVOKE <privileges> ... FROM APPLICATION ROLE¶
撤消应用程序角色对安全架构级对象的一项或多项访问权限。可撤消的权限是特定于对象的。
有关角色和安全对象的更多详细信息,请参阅 访问控制概述。
语法¶
账户角色:
其中:
有关每种对象类型支持的权限的更多详细信息,请参阅 访问控制权限。
必填参数¶
object_name为授予权限的对象指定标识符。
object_type为架构级对象指定对象的类型。
ALERTDYNAMIC TABLEEVENT TABLEEXTERNAL TABLEFILE FORMATFUNCTIONMASKING POLICYMATERIALIZED VIEWNETWORK RULEPACKAGES POLICYPASSWORD POLICYPIPEPROCEDUREROW ACCESS POLICYSECRETSEMANTIC VIEWSESSION POLICYSEQUENCESTAGESTREAMTABLETAGTASKTYPEVIEW
object_type_pluralobject_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 权限: