撤销所有用户权限

使用正则表达式和一系列的for循环撤销对单个用户的所有权限。

写的pavan.kumarchalamcharla

去年发表在:2022年5月31日

当用户权限明确授予单独的表和视图,选中的用户可以访问这些表和视图,即使他们没有权限访问底层数据库。

如果你想撤销用户的访问,你可以这样做撤销命令。然而,撤销命令是显式的,严格限定作用域对象中指定的命令。

例如:

%的sql数据库上的所有特权撤销<数据库名称>的<用户> @ <域名>的撤销选择在<表名称> <用户> @ <域名>的

如果你想取消单个用户的所有权限可以用一系列的多个命令,或者你可以使用一个正则表达式和一系列的循环自动化这个过程。

示例代码

这个示例代码相匹配则所得< >模式数据库名和表名,然后撤销用户的特权。搜索是递归的。

%的python重新导入搜索databaseQuery = sqlContext。sql(“显示数据库”)databaseList = databaseQuery.collect() #这个循环在数据库级别上撤销。在databaseList db: listTables = sqlContext。sql(“显示表”+ db(“数据库名”))tableRows = listTables.collect()如果搜索(<则所得> db(“数据库名”)):revokeDatabase = sqlContext。sql(“撤销所有PRIVILAGES数据库”+ db(“数据库名”)+“<用户名>”)显示(revokeDatabase)打印(“跑撤销查询”+ db(“数据库名”)+“<用户名>”)#这个循环撤销在表级别。则所得的表tableRows:如果搜索(< >,表(“表”)):revokeCommand = sqlContext。sql表(“取消选择”+“数据库”+”。“+表“表”+”从<用户名>”)显示(revokeCommand)打印(“撤销SELECT权限”+表(“数据库”)+“。”+表(“表”)+“<用户名>”)
删除

信息

这些命令只工作(如果已启用集群表访问控制(AWS|Azure|GCP)。


这篇文章有用吗?