Security5:授予查看定義,執行和修改SP的許可權
SQL Server資料庫有完善的許可權管理機制,對於存儲過程,其許可權分為查看定義,執行和修改,查看SP定義的許可權是:VIEW
DEFINITION
,執行存儲過程的許可權是:EXECUTE,修改SP的許可權是:ALTER,但是該許可權也能修改表結構,視圖的定義等資料庫對象。數據的讀取許可權是SELECT,這個查看定義是不同的許可權。對於一個數據表,如果僅授予VIEW
DEFINITION許可權,而沒有授予SELECT許可權,那麼用戶只能查看數據表的結構(Schema),而無法查看錶中存儲的數據。
在管理許可權時,可以給特定的用戶授予「只能讀取數據和執行SP,而不能修改數據」的許可權,也就是,使特定的用戶只能查看數據(只讀,SELECT),只能查看定義(VIEW
DEFINITION),和執行SP的許可權(EXECUTE),這樣的許可權設置,既能使用戶查看到業務數據,又能避免用戶私自修改數據。
對於數據的讀取許可權,SQL Server內置固定資料庫角色 db_datareader,把用戶添加到該角色中,用戶就被授予了對資料庫中所有數據(表或視圖)的讀取許可權;也可以逆向思考,不允許用戶修改數據,把用戶添加到固定資料庫角色 db_denydatawriter 中,這樣,用戶不能添加,更新和刪除任何數據,就是說,不能對任何數據表執行insert,updae和delete命令。許可權管理是個技術活。
一,授予查看定義的許可權
查看資料庫對象的許可權是VIEW DEFINITION,通常資料庫對象是指:數據表,視圖,存儲過程,函數等,被授予VIEW DEFINITION許可權之後,用戶只能查看定義,而無法從數據表或視圖中查看數據,無法執行SP和函數等。
1,授予SQL Server實例級別的查看定義的許可權
以下代碼用於授予許可權VIEW ANY DEFINITION,代碼必須在master資料庫中執行,使指定的用戶能夠查看當前SQL Server實例中的所有資料庫對象的定義:
use mastergogrant view any definition to [domainuser]
2,授予User,只能查看當前資料庫對象的定義的許可權
以下代碼用於授予VIEW DEFINITION,使指定的用戶能夠查看指定資料庫中的所有對象的定義:
use db_namegogrant view definition to [domainuser]
3,授予User,只能查看當前資料庫的指定資料庫對象的定義的許可權
以下代碼用於授予VIEW DEFINITION,通過on子句,使指定的用戶能夠查看指定對象的定義:
use db_namegogrant view definition
二,授予執行存儲過程的許可權
以下代碼授予用戶執行存儲過程的許可權,通過on子句指定用戶只能執行特定的SP:
use db_namegogrant execute on object::schema_name.object_nameto [domainuser]
如果grant execute省略on子句,表示所有的SP,這樣,用戶可以執行資料庫中的所有SP:
use db_namegogrant execute to [domainuser]
三,授予用戶修改存儲過程的許可權
修改存儲過程的許可權是ALTER,但是,ALTER同時也能修改表結構,視圖定義等資料庫對象,如下代碼所示:
GRANT ALTER TO [domainuser]
如果僅授予用戶修改SP的許可權,那麼必須逐個設置,或者把SP創建在獨立的schema下,通過授予用戶修改schema,達到控制用戶只修改SP的目的:
GRANT ALTER ON SCHEMA::proc_schemaTO [domainuser]
四,授予用戶查看SP的定義,執行和修改SP的許可權
通過GRANT子句,可以一次性把查看SP的定義,執行和修改SP的許可權都授予指定的用戶:
GRANT ALTER, EXECUTE, VIEW DEFINITION
在GRANT子句中省略ON子句,表示授予用戶的許可權作用於所有的資料庫對象,包括數據表,視圖,存儲過程,函數等。
五,授予Public用戶查看定義的許可權
當Login沒有映射到相應的User時,該Login被映射到默認的Public,設置給用戶查看定義的許可權,這樣,每個登陸到SQL Server實例的用戶,都可以查看定義。
use master
六,授予用戶查看定義,只讀數據和執行SP的許可權
存儲過程 sp_msforeachdb @command 是微軟未公開的存儲過程,該存儲過程遍歷當前的SQL Server實例的所有資料庫,在每個資料庫中執行相同的命令:
View Code
遍歷資料庫的功能,也可以使用游標來實現,本文不再贅述。
文章摘自博客園
更多IT精品課程,訪問中公優就業官網:http://xue.ujiuye.com
勤工儉學計劃」,給你一個真正0元學習IT技術的機會!
http://www.ujiuye.com/zt/qgjx/?wt.bd=lsh
找工作太難?不是你不行,我們來幫你!
http://www.ujiuye.com/zt/jyfc/?wt.bd=lsh
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
※競態與死鎖的詳解!
※JVM學習記錄:垃圾收集演算法
※回首2010,是什麼決定了BAT三巨頭的格局?
※有人告訴我一篇文章就可以學會Gulp(Getting started with Gulp)!你敢信?
TAG:IT優就業 |
※Python和Scala的定義變數
※簡單定義Python和Scala的類和對象
※SpriteJS:重新定義Canvas API
※BeatMods可以修復《Beat Saber》自定義歌曲和Mods
※刷新你對奢華的定義!Eric Emanuel x Crazy BYW 即將發售
※Android使用Canvas和Path自定義繪製動畫
※iOS12新增Short Cut功能,支持第三方自定義Siri控制
※Substratum主題不能玩了!Android P刪除自定義疊加層
※live like a model-不願被定義 開講了,超模Pilates導師
※一句話無法定義,這就是AdidasTubular | Xsneaker
※沒人能在 Jake Phelps 和他的《Thrasher》面前定義什麼是「酷」
※Facebook更新Spaces,開放虛擬形象自定義
※Clare Waight Keller正在重新定義Givenchy
※iPhone XS Max 雙卡還能這麼玩:自定義 emjio 表情標籤
※如何在CUDA中為Transformer編寫一個PyTorch自定義層
※Python Flask,資料庫,SQLAlchemy,模型類的定義,資料庫添加
※創意PC頂點Surface Studio 2測評:堅持定義自我 完善設計動力
※All You Need is IMC 超模新勢力,由你來定義!
※賦能軟體定義 SUSE Linux Enterprise 15要做IT轉型的「橋樑」
※ES6 Class Methods 定義方式的差異