問題 在SQL Server 7.0中,角色是一個新概念。使用資料庫角色有什麼意義呢?
我們新增了7個固定的伺服器角色和9個固定的資料庫角色。伺服器角色是分散系統管理員工作的一個辦法。在SQL
Server 6.5和更早的版本中,有一個叫做“sa”的帳號,這個帳號可以在資料庫伺服器上做任何事情。在那時,你可以有10個Windows
NT使用者被映射成“sa”,這意味著這10個使用者都可以在任何時間做任何事情,然而伺服器審計工具只會記錄成“sa”的操作。你沒有任何辦法來確認到底是誰做了什麼操作。
SQL Server 7.0改進了這一點。不是像以前那樣使“sa”具有所有的特權,許可權是通過角色成員來獲得的。我們還把系統管理員的特權劃分成了多個角色。例如,為了在SQL
Server 7.0中讓某人獲得系統管理員許可權,你只需要把他加入到“sysadmin”這個固定伺服器角色中即可。
還有其它角色,例如“dbcreator”是用來建立和更改資料庫的;“securityadmin”是用來增加新的登入或者重設預設資料庫的。“sa”登入仍然存在,是為了保持向後相容性。但該許可權是通過成為“sysadmin”角色中的成員來獲得的。伺服器的審計追蹤功能將根據你的Windows
NT或者SQL Server登入名稱來跟蹤所做的改變,而不管分配給該帳號的安全特權。
在單個資料庫這一層級上情況也非常相似。在以前版本中,人們會把自己化名為“dbo”來獲得對資料庫的所有許可權。現在使用者可以被分配成“db_owner”角色,同樣可以擁有對單個資料庫的完全控制許可權。而且,還有更具體的角色,比如“db_acessadmin”用來控制對資料庫的訪問,“db_securityadmin”用來給予其他使用者存取權限,“db_backupoperator”用於備份資料。我們還增加了使用者自訂的和應用程式角色,而且允許使用者可以同時成為多個資料庫角色的成員。
與Windows NT整合是使SQL Server 7.0安全性更易於實施還是使它更為強健呢?
兩者都是。你應該使用7.0版的整合安全的原因之一就是,6.5及更早版本的標準安全模式沒有提供一些最基本的功能。
關於安全方面的一個基本原則就是口令應該在一定的時間後到期。SQL
Server標準安全模式沒有這個功能。另外,它也不禁止為空白的口令,不要求口令必須長於一定數目的字元,也不提供任何其它進階口令管理功能。我們希望能夠利用Windows
NT,它已經包括所有這些功能。現在,當你鎖定使用Windows NT的口令政策時,你通過整合安全同時也鎖定了SQL
Server。從這個角度來說,它確實增強了安全性。
從使用的角度來說,增加整個域的使用者到SQL Server中去要比以前容易的多,而且該過程是動態。在SQL
Server 6.5中,如果你使用SQL Server的安全管理器來增加一組使用者,它將列舉在那個組中的所有使用者。假如該NT組中有人被新增或者被刪除,你必須重新執行以上的操作。而現在呢,舉個例子:假如你把“domain
user”組加入作為一個SQL Server登入,而“domain user”這個NT組中有使用者被刪除,你不需要在SQL
Server中做任何改動來防止該使用者獲得對SQL Server的存取權限。