撤銷所有用戶權限

使用正則表達式和一係列的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)。


這篇文章有用嗎?