REVOKE <privileges> ... FROM USER¶
从用户移除对安全对象的一项或多项权限。可撤销的权限是特定于对象的。
另请参阅:
语法¶
REVOKE [ GRANT OPTION FOR ]
{
{ globalPrivileges | ALL [ PRIVILEGES ] } ON ACCOUNT
| { accountObjectPrivileges | ALL [ PRIVILEGES ] } ON { 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 SCHEMA <schema_name> }
}
FROM [ USER ] <user_name> [ RESTRICT | CASCADE ]
其中:
globalPrivileges ::=
{
| ATTACH POLICY | AUDIT | BIND SERVICE ENDPOINT
| APPLY {
{ AGGREGATION | AUTHENTICATION | JOIN | MASKING | PACKAGES | PASSWORD
| PROJECTION | ROW ACCESS | SESSION } POLICY
| TAG }
| EXECUTE { ALERT | DATA METRIC FUNCTION | MANAGED ALERT | MANAGED TASK | TASK }
| IMPORT SHARE
| MANAGE { ACCOUNT SUPPORT CASES | EVENT SHARING | GRANTS | LISTING AUTO FULFILLMENT | ORGANIZATION SUPPORT CASES | USER SUPPORT CASES | WAREHOUSES }
| MODIFY { LOG LEVEL | TRACE LEVEL | SESSION LOG LEVEL | SESSION TRACE LEVEL }
| MONITOR { EXECUTION | SECURITY | USAGE }
| OVERRIDE SHARE RESTRICTIONS | PURCHASE DATA EXCHANGE LISTING | RESOLVE ALL
| READ SESSION
}
[ , ... ]
accountObjectPrivileges ::=
-- For COMPUTE POOL
{ MODIFY | MONITOR | OPERATE | USAGE } [ , ... ]
-- For CONNECTION
{ FAILOVER } [ , ... ]
-- For DATABASE
{ APPLYBUDGET
| 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 | APPLYBUDGET
| MODIFY | MONITOR | USAGE
[ , ... ]
schemaObjectPrivileges ::=
-- For ALERT
{ MONITOR | OPERATE } [ , ... ]
-- For DATA METRIC FUNCTION
USAGE [ , ... ]
-- For DYNAMIC TABLE
MONITOR, OPERATE, SELECT [ , ...]
-- For EVENT TABLE
{ APPLYBUDGET | DELETE | REFERENCES | SELECT | TRUNCATE } [ , ... ]
-- For FILE FORMAT, FUNCTION (UDF or external function), MODEL, PROCEDURE, SECRET, SEQUENCE, or SNAPSHOT
USAGE [ , ... ]
-- For GIT REPOSITORY
{ READ, WRITE } [ , ... ]
-- For HYBRID TABLE
{ APPLYBUDGET | DELETE | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
-- For IMAGE REPOSITORY
{ READ, WRITE } [ , ... ]
-- For ICEBERG TABLE
{ APPLYBUDGET | DELETE | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
-- For MATERIALIZED VIEW
{ APPLYBUDGET | REFERENCES | SELECT } [ , ... ]
-- For PIPE
{ APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
-- For { AGGREGATION | AUTHENTICATION | MASKING | JOIN | PACKAGES | PASSWORD | PRIVACY | PROJECTION | ROW ACCESS | SESSION } POLICY or TAG
APPLY [ , ... ]
-- For SECRET
{ READ | USAGE } [ , ... ]
-- For SEMANTIC VIEW
REFERENCES [ , ... ]
-- For SERVICE
{ MONITOR | OPERATE } [ , ... ]
-- For external STAGE
USAGE [ , ... ]
-- For internal STAGE
READ [ , WRITE ] [ , ... ]
-- For STREAM
SELECT [ , ... ]
-- For STREAMLIT
USAGE [ , ... ]
-- For TABLE
{ APPLYBUDGET | DELETE | EVOLVE SCHEMA | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
-- For TAG
READ
-- For TASK
{ APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
-- For VIEW
{ REFERENCES | SELECT } [ , ... ]
有关每种对象类型支持的权限的更多信息,请参阅 访问控制权限。
必填参数¶
object_name
指定要撤销对其权限的对象的标识符。
object_type
为架构级对象指定对象的类型。
AGGREGATION POLICY
ALERT
AUTHENTICATION POLICY
CORTEX SEARCH SERVICE
DATA METRIC FUNCTION
DATASET
DYNAMIC TABLE
EVENT TABLE
EXTERNAL TABLE
FILE FORMAT
FUNCTION
GIT REPOSITORY
IMAGE REPOSITORY
ICEBERG TABLE
JOIN POLICY
MASKING POLICY
MATERIALIZED VIEW
MODEL
MODEL MONITOR
NETWORK RULE
NOTEBOOK
PACKAGES POLICY
PASSWORD POLICY
PIPE
PRIVACY POLICY
PROCEDURE
PROJECTION POLICY
ROW ACCESS POLICY
SECRET
SEMANTIC VIEW
SERVICE
SESSION POLICY
SEQUENCE
SNAPSHOT
STAGE
STREAM
STREAMLIT
TABLE
TAG
TASK
VIEW
object_type_plural
object_type
的复数形式(例如,TABLES
、VIEWS
)。user_name
指定接收者用户(即权限被撤销的用户)的标识符。
可选参数¶
GRANT OPTION FOR
如果指定此参数,则移除接收者用户将权限授予其他角色或用户的能力。
默认:无值
RESTRICT | CASCADE
如果指定此参数,则会根据权限是否已重新授予其他角色或用户来确定撤销权限的操作是成功还是失败。
RESTRICT
:如果撤销的权限已重新授予其他角色或用户,则 REVOKE 命令失败。CASCADE
:如果撤消的权限已被重新授予,则 REVOKE 命令以递归方式撤消这些依赖性的授予。如果另一个授予者已将对某个对象的相同权限授予目标用户(并行授予),则该授予不受影响,并且目标用户将保留该权限。
默认:
RESTRICT
使用说明¶
不能直接对任何类授予或撤销权限。
不同的授予者可以将一个权限多次授予一个用户。
REVOKE privilege
语句仅撤销用户为授予者的授权。其他授予者对指定权限的任何额外授予都会被忽略。另请注意,即使没有撤销任何权限,
REVOKE privilege
语句也是成功的。REVOKE privilege
仅在以下情况下返回错误:指定的权限具有依赖性的授予,并且从该语句中省略了 CASCADE 子句。可以在单个 GRANT 语句中为同一对象类型指定多个权限(每个权限用逗号分隔),或者可以使用特殊的
ALL [ PRIVILEGES ]
关键字将所有适用的权限授予指定的对象类型。但请注意,实际上只有执行 GRANT 命令的角色或用户所拥有和可授予的权限才会被授予目标用户。对于任何无法授予的权限,将返回一条警告消息。不得为标签指定
ALL [ PRIVILEGES ]
关键字。
对于暂存区:
USAGE 仅适用于外部暂存区。
READ | WRITE 仅适用于内部暂存区。此外,要授予对内部暂存区的 WRITE 权限,必须先授予对暂存区的 READ 权限。
有关外部和内部暂存区的更多信息,请参阅 CREATE STAGE。
对于存储集成:
要使用依赖存储集成的外部暂存区运行以下命令,必须直接向用户授予对存储集成的 USAGE 权限,或者使用具有或继承该权限的角色。
如果您撤销用户的 USAGE 权限,则用户无法运行这些命令。有关更多信息,请参阅 暂存区权限。
撤销存储集成的 USAGE 权限 不会 阻止用户查询与存储集成关联的外部表。查询外部表 不 需要对其底层存储集成具有 USAGE 权限。
访问控制要求¶
- 撤消对单个对象的权限:
要撤销用户对某个对象的权限,可以使用满足以下任一条件的 活跃角色 或用户,也可以使用 更高级别的角色:
在 SHOW GRANTS 输出的 GRANTED_BY 列中,角色或用户被标识为该权限的 授予者。
如果授予了对指定对象的多个权限实例,则仅会撤销由活跃授予者角色授予的实例。
角色或用户具有全局 MANAGE GRANTS 权限。
如果授予了对指定对象的多个权限实例,则会撤销 所有 实例。
请注意,默认情况下,只有 SECURITYADMIN 系统角色及更高级别的角色才具有 MANAGE GRANTS 权限;不过,可以将该权限授予自定义角色。
在 托管访问架构 <label-managed_access_schemas>`(使用 :samp:`CREATE SCHEMA ... WITH MANAGED ACCESS 创建的架构)语法中,只有架构所有者(对架构具有 OWNERSHIP 权限的角色)、具有全局 MANAGE GRANTS 权限的角色或用户或者更高级别的角色可以撤销对架构中对象的权限。
示例¶
要撤销特定用户 joe
对 Streamlit 应用程序的 USAGE 权限,请执行以下操作:
REVOKE USAGE ON STREAMLIT streamlit_db.streamlit_schema.streamlit_app FROM USER joe;
要撤销特定用户 user1
对过程的 USAGE 权限,请执行以下操作:
REVOKE USAGE ON PROCEDURE mydb.myschema.myprocedure(number) FROM USER user1;