Re: [SQL ] 資料表開權限
※ 引述《testcrack (testcrack)》之銘言:
: 在SQL Server 2008上,若有幾個資料表要開權限可供Select(不做增刪修)
: 而且,也不讓他看到其他資料表
: 可以直接針對這些資料表來限定這個使用者嗎?
: 而不是這個資料庫的所有資料表,將所有使用者全部設定授予、拒絕的設定..
當一個user存取一個物件時,有效權限的判定原則是:
1. User 及其 Roles 角色權限的累計。
2. 比對及累計過程中,遇到 deny 就是沒有授權。
3. 如果比對沒有結果,就是沒有權限。
也就是說,採用的是先以正面表列說明可以做什麼,再以 deny 進行但書排除。
回到您的問題,僅針對那位設定他可讀取哪些表即可,不必設定他不能讀哪些
資料表。可是,這位使用者如果具備某些角色,他仍然可能因為那些角色而取
得權限,這時,就需要進一步針對他不能讀取的表特別以 deny 進行排除。
另外,上述的設定有兩個注意事項(或者該說是狀況):
1. 如果 View 與 Table 的 Owner 是同一人,使用者透過 View 存取 Table
時,SQL 只會檢查使用者在 View 的權限,通過了就放行了,不會進一步
比對資料表的權限。
2. 如果您有針對應用程式角色設定權限,當使用者以 sp_SetAppRole 啟用
該角色後,到結束連線前,該連線的權限均只以應用程式角色進行判斷。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.41.107.34
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):