1 sql server2005安全管理之用戶、角色、架構 與 權限 2 2008-12-04 16:47 3 --打開數據庫 4 Use databaseName 5 6 --創建角色 7 create role ProgramerRole 8 9 --用於創建表 存儲過程 視圖 10 grant create table,create procedure,create view to ProgramerRole 11 12 --execute用以執行存儲過程,alter用以創建、修改存儲過程和視圖, 13 --並可以新建立表,但不能修改表,但也可以刪除表和對表改名了 14 grant select,insert,execute,alter on schema::dbo to ProgramerRole 15 16 --用於允許用戶查看 顯示估計的執行計划(081205) 17 grant showplan to ProgramerRole 18 19 --創建登錄賬號 20 --create login username with password='password' 21 --創建數據庫用戶 22 create user username for login username 23 24 --將用戶TestUser添加到TestRole角色中 25 exec sp_addrolemember 'ProgramerRole','username ' 26 27 --執行Sql Server Profiler是服務器級權限,所以在master庫中授權 28 USE master;grant alter trace to auto; 29 30 31 注:據庫引擎優化顧問必須由具有系統管理員權限的用戶進行初始化。在具有系統管理員權限的用戶對數據庫引擎優化顧問進行初始化之后,任何是 db_owner 固定數據庫角色成員的用戶,都可以使用數據庫引擎優化顧問來優化他們擁有的數據庫上的表。 32 詳優化物理數據庫設計http://msdn.microsoft.com/zh-cn/library/ms191531(SQL.90).aspx 33 34 參考資料: 35 用戶架構分離:http://msdn.microsoft.com/zh-cn/library/ms190387(SQL.90).aspx 36 數據庫架構是一個獨立於數據庫用戶的非重復命名空間。您可以將架構視為對象的容器 37 主體:http://msdn.microsoft.com/zh-cn/library/ms181127(SQL.90).aspx 38 是可以請求 SQL Server 資源的實體 39 40 Windows 級別的主體 41 42 Windows 域登錄名 43 Windows 本地登錄名 44 SQL Server 級的主體 45 46 SQL Server 登錄名 47 數據庫級的主體 48 49 數據庫用戶 50 數據庫角色 51 應用程序角色 52 安全對象:http://msdn.microsoft.com/zh-cn/library/ms190401(SQL.90).aspx 53 安全對象是 SQL Server 數據庫引擎 授權系統控制對其進行訪問的資源 54 安全對象范圍有服務器、數據庫和架構 55 安全對象范圍:服務器包含以下安全對象: 56 端點 57 登錄帳戶 58 數據庫 59 60 安全對象范圍:數據庫包含以下安全對象: 61 用戶 62 角色 63 應用程序角色 64 程序集 65 消息類型 66 路由 67 服務 68 遠程服務綁定 69 全文目錄 70 證書 71 非對稱密鑰 72 對稱密鑰 73 約定 74 架構 75 76 安全對象范圍:架構包含以下安全對象: 77 類型 78 XML 架構集合 79 對象 80 81 對象 下面是對象類的成員: 82 聚合 83 約束 84 函數 85 過程 86 隊列 87 統計信息 88 同義詞 89 表 90 視圖 91 92 架構:http://msdn.microsoft.com/zh-cn/library/ms365789(SQL.90).aspx 93 架構是指包含表、視圖、過程等的容器。它位於數據庫內部,而數據庫位於服務器內部 94 特定架構中的每個安全對象都必須有唯一的名稱。架構中安全對象的完全指定名稱包括此安全對象所在的架構的名稱。因此,架構也是命名空間 95 96 權限:http://msdn.microsoft.com/zh-cn/library/ms190387(SQL.90).aspx 97 每個 SQL Server 2005 安全對象都有可以授予主體的關聯權限 98 99 數據庫級別的角色:http://msdn.microsoft.com/zh-cn/library/ms189121(SQL.90).aspx 100 固定數據庫角色是在數據庫級別定義的,並且存在於每個數據庫中。db_owner 和 db_securityadmin 數據庫角色的成員可以管理固定數據庫角色成員身份;但是,只有 db_owner 數據庫的成員可以向 db_owner 固定數據庫角色中添加成員。 101 每個數據庫用戶都屬於 public 數據庫角色。當尚未對某個用戶授予或拒絕對安全對象的特定權限時,則該用戶將繼承授予該安全對象的 public 角色的權限 102 服務器級別角色:http://msdn.microsoft.com/zh-cn/library/ms188659(SQL.90).aspx 103 固定服務器角色在其作用域內屬於服務器范圍。固定服務器角色的每個成員都可以向其所屬角色添加其他登錄名。 104 105 GRANT 架構權限:http://msdn.microsoft.com/zh-cn/library/ms187940(SQL.90).aspx 106 107 如何配置用戶以創建和管理 SQL Server 代理作業 http://msdn.microsoft.com/zh-cn/library/ms187901.aspx 108 109 若要配置用戶以創建或執行 Microsoft SQL Server 代理作業,必須先將某個現有 SQL Server 登錄名或 msdb 角色添加到 msdb 數據庫中的下列 SQL Server 代理固定數據庫角色之一:SQLAgentUserRole、SQLAgentReaderRole 或 SQLAgentOperatorRole。 110 111 默認情況下,這些數據庫角色的成員可以創建各自的作業步驟,這些作業步驟不執行其他作業步驟。如果這些非管理用戶要運行那些執行其他作業步驟類型(例如,SSIS 包)的作業,它們需要對代理帳戶具有訪問權限。sysadmin 固定服務器角色的所有成員都有創建、修改和刪除代理帳戶的權限 112 113 114 115 116 117 118 為具體的用戶設置具體的訪問權限 收藏 119 use 你的庫名 120 go 121 122 --新增用戶 123 exec sp_addlogin 'test' --添加登錄 124 exec sp_grantdbaccess N'test' --使其成為當前數據庫的合法用戶 125 exec sp_addrolemember N'db_owner', N'test' --授予對自己數據庫的所有權限 126 127 --這樣創建的用戶就只能訪問自己的數據庫,及數據庫中包含了guest用戶的公共表 128 go 129 130 --刪除測試用戶 131 exec sp_revokedbaccess N'test' --移除對數據庫的訪問權限 132 exec sp_droplogin N'test' --刪除登錄 133 134 135 如果在企業管理器中創建的話,就用: 136 137 企業管理器--安全性--右鍵登錄--新建登錄 138 139 常規項 140 --名稱中輸入用戶名 141 --身份驗證方式根據你的需要選擇(如果是使用windows身份驗證,則要先在操作系統的用戶中新建用戶) 142 --默認設置中,選擇你新建的用戶要訪問的數據庫名 143 144 服務器角色項 145 這個里面不要選擇任何東西 146 147 數據庫訪問項 148 勾選你創建的用戶需要訪問的數據庫名 149 數據庫角色中允許,勾選"public","db_ownew" 150 151 確定,這樣建好的用戶與上面語句建立的用戶一樣 152 --------------------------------------------------------------------------- 153 154 最后一步,為具體的用戶設置具體的訪問權限,這個可以參考下面的最簡示例: 155 156 --添加只允許訪問指定表的用戶: 157 exec sp_addlogin '用戶名','密碼','默認數據庫名' 158 159 --添加到數據庫 160 exec sp_grantdbaccess '用戶名' 161 162 --分配整表權限 163 GRANT SELECT , INSERT , UPDATE , DELETE ON table1 TO [用戶名] 164 165 --分配權限到具體的列 166 GRANT SELECT , UPDATE ON table1(id,AA) TO [用戶名]