撤銷所有用戶權限

使用regex和一係列for循環來撤銷單個用戶的所有特權。

寫的pavan.kumarchalamcharla

最後發布時間:2022年5月31日

當顯式地為各個表和視圖授予用戶權限時,所選用戶可以訪問這些表和視圖,即使他們沒有訪問底層數據庫的權限。

如果要撤銷用戶的訪問權限,可以使用撤銷命令。然而,撤銷命令是顯式的,並且嚴格限定在命令中指定的對象範圍內。

例如:

%sql REVOKE ALL PRIVILEGES ON DATABASE < DATABASE -name> FROM ' @ ' REVOKE SELECT ON  FROM ' @ '

如果要撤銷單個用戶的所有特權,可以使用一係列多個命令來實現,也可以使用正則表達式和一係列循環來自動化流程。

示例代碼

此示例代碼與則所得< >模式轉換為數據庫名和表名,然後撤銷用戶的特權。搜索是遞歸的。

%python from re import search databaseQuery = sqlContext。sql("show databases") databaseList = databasquery .collect()for db in databaseList: listTables = sqlContext。if search(, db['databaseName']): revokeDatabase=sqlContext. sql("show tables from "+db['databaseName']) tableRows = listTables.collect()sql("REVOKE ALL privileges ON DATABASE "+db['databaseName']+" to '  ' ") display(revokeDatabase) print("Ran the REVOKE query ON "+db['databaseName']+" for ") #此循環在表級調用。if search(,table['tableName']): revokeCommand=sqlContext. if search(,table['tableName']):sql("REVOKE SELECT ON "+表['database']+"."+table['tableName']+" FROM '  ' ") display(revokeCommand) print(" revoke the SELECT permissions on "+table['database']+"."+表(“表”)+“<用戶名>”)
刪除

信息

隻有在啟用了對集群的表訪問控製(AWS|Azure|GCP).