sql server2005安全管理之用戶、角色、架構 與 權限
2008-12-04 16:47
--打開數據庫
Use databaseName sql
--建立角色
create role ProgramerRole 數據庫
--用於建立表 存儲過程 視圖
grant create table,create procedure,create view to ProgramerRole windows
--execute用以執行存儲過程,alter用以建立、修改存儲過程和視圖,
--並能夠新創建表,但不能修改表,但也能夠刪除表和對錶更名了
grant select,insert,execute,alter on schema::dbo to ProgramerRole 安全
--用於容許用戶查看 顯示估計的執行計劃(081205)
grant showplan to ProgramerRole 服務器
--建立登陸帳號
--create login username with password='password'
--建立數據庫用戶
create user username for login username antd
--將用戶TestUser添加到TestRole角色中
exec sp_addrolemember 'ProgramerRole','username ' 架構
--執行Sql Server Profiler是服務器級權限,因此在master庫中受權
USE master;grant alter trace to auto; 數據庫設計
注:據庫引擎優化顧問必須由具備系統管理員權限的用戶進行初始化。在具備系統管理員權限的用戶對數據庫引擎優化顧問進行初始化以後,任何是 db_owner 固定數據庫角色成員的用戶,均可以使用數據庫引擎優化顧問來優化他們擁有的數據庫上的表。
詳優化物理數據庫設計http://msdn.microsoft.com/zh-cn/library/ms191531(SQL.90).aspx 函數
參考資料:
用戶架構分離:http://msdn.microsoft.com/zh-cn/library/ms190387(SQL.90).aspx
數據庫架構是一個獨立於數據庫用戶的非重複命名空間。您能夠將架構視爲對象的容器
主體:http://msdn.microsoft.com/zh-cn/library/ms181127(SQL.90).aspx
是能夠請求 SQL Server 資源的實體
Windows 級別的主體 測試
Windows 域登陸名
Windows 本地登陸名
SQL Server 級的主體
SQL Server 登陸名
數據庫級的主體
數據庫用戶
數據庫角色
應用程序角色
安全對象:http://msdn.microsoft.com/zh-cn/library/ms190401(SQL.90).aspx
安全對象是 SQL Server 數據庫引擎 受權系統控制對其進行訪問的資源
安全對象範圍有服務器、數據庫和架構
安全對象範圍:服務器包含如下安全對象:
端點
登陸賬戶
數據庫
安全對象範圍:數據庫包含如下安全對象:
用戶
角色
應用程序角色
程序集
消息類型
路由
服務
遠程服務綁定
全文目錄
證書
非對稱密鑰
對稱密鑰
約定
架構
安全對象範圍:架構包含如下安全對象:
類型
XML 架構集合
對象
對象 下面是對象類的成員:
聚合
約束
函數
過程
隊列
統計信息
同義詞
表
視圖
架構:http://msdn.microsoft.com/zh-cn/library/ms365789(SQL.90).aspx
架構是指包含表、視圖、過程等的容器。它位於數據庫內部,而數據庫位於服務器內部
特定架構中的每一個安全對象都必須有惟一的名稱。架構中安全對象的徹底指定名稱包括此安全對象所在的架構的名稱。所以,架構也是命名空間
權限:http://msdn.microsoft.com/zh-cn/library/ms190387(SQL.90).aspx
每一個 SQL Server 2005 安全對象都有能夠授予主體的關聯權限
數據庫級別的角色:http://msdn.microsoft.com/zh-cn/library/ms189121(SQL.90).aspx
固定數據庫角色是在數據庫級別定義的,而且存在於每一個數據庫中。db_owner 和 db_securityadmin 數據庫角色的成員能夠管理固定數據庫角色成員身份;可是,只有 db_owner 數據庫的成員能夠向 db_owner 固定數據庫角色中添加成員。
每一個數據庫用戶都屬於 public 數據庫角色。當還沒有對某個用戶授予或拒絕對安全對象的特定權限時,則該用戶將繼承授予該安全對象的 public 角色的權限
服務器級別角色:http://msdn.microsoft.com/zh-cn/library/ms188659(SQL.90).aspx
固定服務器角色在其做用域內屬於服務器範圍。固定服務器角色的每一個成員均可以向其所屬角色添加其餘登陸名。
GRANT 架構權限:http://msdn.microsoft.com/zh-cn/library/ms187940(SQL.90).aspx
如何配置用戶以建立和管理 SQL Server 代理做業 http://msdn.microsoft.com/zh-cn/library/ms187901.aspx
若要配置用戶以建立或執行 Microsoft SQL Server 代理做業,必須先將某個現有 SQL Server 登陸名或 msdb 角色添加到 msdb 數據庫中的下列 SQL Server 代理固定數據庫角色之一:SQLAgentUserRole、SQLAgentReaderRole 或 SQLAgentOperatorRole。
默認狀況下,這些數據庫角色的成員能夠建立各自的做業步驟,這些做業步驟不執行其餘做業步驟。若是這些非管理用戶要運行那些執行其餘做業步驟類型(例如,SSIS 包)的做業,它們須要對代理賬戶具備訪問權限。sysadmin 固定服務器角色的全部成員都有建立、修改和刪除代理賬戶的權限
爲具體的用戶設置具體的訪問權限 收藏
use 你的庫名
go
--新增用戶
exec sp_addlogin 'test' --添加登陸
exec sp_grantdbaccess N'test' --使其成爲當前數據庫的合法用戶
exec sp_addrolemember N'db_owner', N'test' --授予對本身數據庫的全部權限
--這樣建立的用戶就只能訪問本身的數據庫,及數據庫中包含了guest用戶的公共表
go
--刪除測試用戶
exec sp_revokedbaccess N'test' --移除對數據庫的訪問權限
exec sp_droplogin N'test' --刪除登陸
若是在企業管理器中建立的話,就用:
企業管理器--安全性--右鍵登陸--新建登陸
常規項
--名稱中輸入用戶名
--身份驗證方式根據你的須要選擇(若是是使用windows身份驗證,則要先在操做系統的用戶中新建用戶)
--默認設置中,選擇你新建的用戶要訪問的數據庫名
服務器角色項
這個裏面不要選擇任何東西
數據庫訪問項
勾選你建立的用戶須要訪問的數據庫名
數據庫角色中容許,勾選"public","db_ownew"
肯定,這樣建好的用戶與上面語句創建的用戶同樣
---------------------------------------------------------------------------
最後一步,爲具體的用戶設置具體的訪問權限,這個能夠參考下面的最簡示例:
--添加只容許訪問指定表的用戶:
exec sp_addlogin '用戶名','密碼','默認數據庫名'
--添加到數據庫
exec sp_grantdbaccess '用戶名'
--分配整表權限
GRANT SELECT , INSERT , UPDATE , DELETE ON table1 TO [用戶名]
--分配權限到具體的列GRANT SELECT , UPDATE ON table1(id,AA) TO [用戶名]