sql server2005安全管理之用戶、角色、架構 與 權限

--打開數據庫
Use databaseName

--創建角色
create role ProgramerRole

--用於創建表 存儲過程 視圖
grant create table,create procedure,create view to ProgramerRole

--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

--將用戶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 [用戶名]

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章