A. SQLServer安全模式、密碼管理及管理建議
兩種安全模式:
Windows 認證模式:用戶通過一個現成的Windows用戶帳號來連接伺服器。當一個用戶試圖與一個伺服器連接的時候,SQL Server將會認證用戶的Windows帳號的名稱和密碼。用戶不能同時進入網路和SQL Server,只能進入其中的一個。這一方法也被稱為一個被依賴的連接。
混合模式:這一模式將Windows認證模式和SQL Server認證聯接在一起。用戶可以通過一個Windows用戶帳號進行連接,這正如Windows認證一樣。但是,你也可以在SQL Server中直接建立用戶帳號。每一個SQL Server帳號都存儲了一個用戶名和密碼。
我們建議在可能的情況下都使用Windows認證模式。然而,混合模式很可以使用,特別是在SQL Server 7.0(或更早版本)都可以使用。.對於早期的SQL Server版本,SQL Server認證存在一些缺點。Windows認證已經集成了操作系統的安全系統,這就提供了比SQL Server認證更多的安全特性,很容易的使用,效率更加高,安全性更加好。在設計開始的時候,你應該認真考慮選擇哪一種模式最為合適。
密碼
無論採用哪一些模式,你應該記住在SQL Server中為系統管理者(sa)設置一個密碼。當安裝SQL Server時,安裝程序會自動建立一個帶有SQL Server注冊名稱(sa)和一個空白密碼的管理用戶。如果你保持這些用戶設置原樣而使用混合安全模式,任何具備一點SQL Server基礎知識的用戶都可以很容易地進入到你的資料庫中並做任何舉散他想要做的事情。如果你使用的是Windows認證模式,在理論上你無需為sa用戶設置一個密碼,因為SQL Server注冊不會接受這些的設置。但是設置是一個很良好的操作,尤其是當你被迫轉移到將來使用的混合模式的時候。
逗猛如果安全模式已經啟動,注冊將成為關鍵。你必須使用正確的.方法來啟動程序,注冊也是同樣的,如果你不能正確地輸入用戶名和密碼,程序將不能連接到網路,同時也不能連接到SQL Server。
作為一個管理者,一旦你已經啟動了程序,你就做好安全管理的准備。可以通過定義以下的特性而實現:
用戶(帳號):一個SQL Serve安全帳號代表著一個唯一的用戶。一個用戶也只有一個Windows帳號或者一個SQL Server注冊,這與資料庫中的用戶帳號相統一。
組(帳號):每一個用戶都屬於一個或多個組,這由認證模式決定。每一個組都具有特定許可。作為一個組的成員,你將獲得所山答橋有組的許可。
對象所有權:所有權屬於建立對象的用戶。所有者可以將訪問許可權分配給用戶。如果你是一個視的所有者,你還可以決定哪些用戶可以通過視來查看數據。
許可:一個許可代表著具有執行某些操作的權利,比如打開一個視或者更改一個存儲程序。SQL Server承認許可的三種狀態:GRANT給你一個用戶訪問;REVOKE刪除訪問;DENY防止用戶訪問對象。
任務:這是一個SQL Server安全帳號,可以將帳號的集合作為一個簡單的單元來處理。任務定義在特定資料庫中用戶可以做哪些和哪些不可以做。
設計過程應該用效地定義哪些地方需要進行安全設置和如何設置。在這一過程之前你應該從兩個方面考慮:
敏感數據;
敏感數據包括所有可能的數據,包括整個資料庫中的所有數據,雖然這樣的安全級別很少存在。你的工作就是定義為敏感數據並進行保護。
你選擇的認證模式和建立的注冊將通過限制哪些用戶可以進入到資料庫而實施第一步安全步驟。
第二步就要列舉可以訪問資料庫的所有用戶,然後決定所有數據是否對所有的用戶都適用。通常,你需要對一些數據進行保護,比如工資或者其他私人數據。這就意味著只有特定的用戶可以訪問和查看數據。你還可以設置哪些用戶更改數據。
始終記住的一條規則是「最小權利」概念。如果有人在他的工作中不需要訪問數據,那即不要給他訪問的許可權。應該避免所有的用戶都具有sa用戶的訪問許可權。
具體的建議
當進行安全設置的時候,經驗也是一個很好的老師,但通常也會有適用於通用資料庫的設計准則
從開始就獲得資料庫和對象的所有權。當建立一個新的資料庫時,你將會成為資料庫的所有者,並能夠設置資料庫中所有發生一切。你可以以管理者的身份注冊資料庫。然而,對象的所有權屬於建立對象的用戶。雖然這可能造成所有權的轉移,但可以確定這些的注冊能夠被用於建立所有的對象。
理解所有權鏈。這一安全特性防止用戶建立自己的視而偷看一些敏感數據。例如,假設你建立一個從兩個表中集中的數據的視,如果你是這兩個表的所有者,當你允許其他用戶使用視的許可時,SQL Server不會檢查表的有關許可。
使用視和存儲程序以分配給用戶訪問數據的權利,而不是讓用戶編寫一些直接訪問表格的特別查詢語句。通過這種方式,你無需在表格中將訪問權利分配給用戶。視和存儲程序
也可以限制查看的數據。例如,如果你的雇員表格包含一些秘密的工資信息,你可以建立一個省略了工資欄的視。
如果用戶從特定程序中進入你的程序,你可以建立程序任務。一個程序任務就是分配到特定程序的用戶,並給予用戶的有關許可。使用程序任務,用戶不能直接地認證資料庫,相反,他們先認證他們自己的程序,這就決定哪些程序任務與伺服器相連接。
時刻注意程序補丁。不可否認的,程序補丁是一些訣竅的集合。程序的發布,更新等都會引入新的問題,使用程序補丁是防止外界干擾和保護數據的最好和最容易的方法。可以訪問微軟主頁上的SQL Service Pack下載頁,查看當前最新的程序補丁。
B. 與SQL SERVER 安全控制相關的幾點說明
與SQL SERVER安全控制相關的幾點說明
(一)幾個基本術語
身份驗證(Authentication)是指通過提交伺服器評估的憑據以登錄到主體請求訪問的 SQL Server 的過程。身份驗證可以確定接受身份驗證的用戶或進程的標識。
用戶、賬戶、賬號、登錄名、[資料庫]用戶名
用戶是指能夠在SQL Server安全機制下,訪問資料庫對象中的數據的操作員或客戶。用戶若要訪問資料庫對象,必須獲得資料庫管理員(DBA)分配的賬號和密碼。從SQL Server管理系統的角度來看,用戶就是一組匹配的賬戶和密碼。
賬戶和賬號是一個概念的不同說法,在伺服器中的賬戶又叫登錄名(Login Name),因此訪問伺服器也稱為登錄伺服器。伺服器的登錄名可以映射到資料庫中成為[資料庫]用戶名(User Name)。一個登錄名可以映射多個資料庫用戶,而一個用戶只能映射一個登錄名。
連接或登錄SQL Server伺服器時是用的登錄名而非用戶名登錄的,程序裡面的連接字元串中的用戶名也是指登錄名。
通常用戶名與登錄名相同(不是強制相同,但為了一目瞭然通常都在創建用戶名時使用與登錄名相同的名字)。
提示:登錄名(Login Name)和用戶名(User Name)是兩個不同的概念:
登錄名:伺服器方的一個實體,登錄名只能進入SQL Server伺服器,但是不能讓用戶訪問伺服器中的資料庫資源。
用戶名:一個或多個登錄對象在資料庫中的映射,可以對用戶對象進行授權,以便為登錄對象提供對資料庫的訪問許可權。
登錄名作用於它所在的伺服器。每個登錄名的定義存放在master系統資料庫的syslogins表中。
用戶名作用於它所在的資料庫。用戶定義信息存放在每個資料庫的sysusers表中。用登錄名登錄到SQL Server後,在訪問操作各個資料庫時,SQL Server會自動查詢此資料庫中是否存在與此登錄名關聯的用戶名,若存在就使用此用戶的許可權訪問此資料庫,若不存在就是用guest用戶訪問此資料庫(guest是一個特殊的用戶名,後面會講到)。
SQL身份驗證:適合於非windows平台的用戶或Internet用戶,需要提供賬戶和密碼。
Windows身份驗證:適合於windows平台用戶,利用Windows賬戶和windows集成驗證,不需要提供密碼。
用戶想要操作資料庫的某個對象(如某張表)需要過三關:
第一關:我們需要登錄到SQL Server系統,即需要登錄賬戶;
第二關:我們需要訪問某個資料庫,即需要該資料庫的用戶賬戶;
第三關:我們需要訪問資料庫中的某個對象(如某張表),需要有該對象的許可權。
主體(principal)是可被授予對安全資源的訪問許可權的實體(例如登錄名、用戶、進程、組或角色)。主體可以是主體的集合(比如資料庫角色或Windows組)或不可分割的主體(比如本地登錄或域登錄)。每個主體都具有一個 ID (identification)和一個安全 ID (SID)。
⊙ Windows級別的主體:Windows組、Windows域登錄名、Windows本地登錄名。
⊙ SQL Server級的主體:伺服器角色、SQLServer登錄名。
⊙資料庫級的主體:資料庫角色、資料庫用戶、應用程序角色。
上下文切換 (context switch),更改檢查執行語句或執行操作的許可權時所依據的標識。
伺服器(server)
1)指安裝了SQL SERVER的計算機。2)指SQL Server實例——計算機上運行的 SQLServer的副本。3)指為用戶提供服務的計算機軟體或組件。
需要根據上下文理解。
注冊伺服器
注冊伺服器使您可以存儲伺服器連接信息(伺服器的類型、伺服器的名稱、登錄到伺服器時使用的身份驗證的類型等),以供將來連接時使用——下次連接該伺服器時,不需要重新輸入登錄信息。
SQLServer 2000在SQL Server企業管理器中注冊伺服器,才能使用 SQL Server企業管理器來管理這些伺服器。從SQLServer 2005始,在 SQL ServerManagement Studio 中注冊伺服器,才能使用 SQL Server Management Studio 來管理這些伺服器。
在 Microsoft SQL Server中,可以注冊以下類型的伺服器:SQLServer資料庫引擎、Analysis Services、Reporting Services、IntegrationServices和 SQL Server Compact 3.5SP1。
(二)SQL Server實例(SQL Server instance)
SQLServer實例(SQL Server instance),簡稱實例 (instance),是計算機上運行的SQLServer 的副本。同一台計算機上可以安裝運行的多個 SQLServer副本。每個SQL Server實例都包含資料庫引擎、Analysis Services和 ReportingServices的 SQL Server,每個SQL Server資料庫實例各有一套不為其他實例共享的系統及用戶資料庫。
資料庫引擎是用於存儲、處理和保護數據的核心服務。利用資料庫引擎可控制訪問許可權並快速處理事務。
實例又分為「默認實例」(default instance)和「命名實例」(namedinstance),如果在一台計算機上安裝第一個SQLSERVER,命名設置保持默認的話,那這個實例就是默認實例。默認實例與安裝計算機具有相同名稱。命名實例指安裝SQL Server時給定了名稱,可以安裝多個命名實例,給定名稱是為了與同一台計算機上的其他命名實例和默認實例區分開。
SQLServer應用程序可以通過僅指定伺服器名稱而連接到 SQLServer的默認實例。SQL Server應用程序在連接到伺服器上的某個命名實例時必須既指定伺服器名稱又指定實例名稱,計算機名稱\實例名稱。
一台計算機上最多隻有一個默認實例,也可以沒有默認實例,默認實例名與計算機名相同。如果要訪問本機上的默認SQL伺服器實例,使用計算機名、(local)、localhost、127.0.0.1、.、本機IP地址,都可以達到相同的目的。但如果要訪問非本機的SQL伺服器,那就必須使用計算機名稱\實例名稱。
默認實例和命名實例的區別:
1、服務中服務名稱的區別:
(1)默認實例:MSSQLSERVER。
(2)有名命名實例:實列名為benet,在服務中的名稱是MSSQL$BENET。
註:如果你有多個實例的時候會在服務中出現多個服務名稱。
2、連接到查詢分析器或探查器的時候區別:
(1)默認實例可以使用:「.」(點)、「(local)」、「計算機名稱」。
(2)實例名稱:計算機名pcname,實例名benet,連接時使用的名稱是pcname\benet。
(三)安全對象和許可權
安全對象(Securable),可以通過許可權得到保護的實體。是SQLServer資料庫引擎授權系統控制對其進行訪問的資源。如表、視圖、觸發器等。
SQLServer中將安全對象分為三個層次,分別為:
⊙伺服器層級,包含的安全對象:端點、登錄、伺服器角色、資料庫。
⊙資料庫層級,包含的安全對象:用戶、資料庫角色、應用程序角色、程序集、消息類型、路由、服務、遠程服務綁定、全文目錄、證書、非對稱密鑰、對稱密鑰、約定、架構。
⊙構架(SCHEMA)層級,包含的安全對象:類型、XML架構集合、對象(函數、過程、同義詞、表、視圖)
這三個層級是從上到下包含的,級別從高到低。
說明:端點(endpoint)為伺服器級安全對象。Microsoft SQL Server 2005 中的連接管理基於「端點」。一個端點就是一個SQL Server對象,它能夠使 SQL Server在網路中通信。對於資料庫鏡像,伺服器實例需要有自己專用的「資料庫鏡像端點」。此端點用途特殊,專門用於接收來自其他伺服器實例的資料庫鏡像連接。
許可權 (permission),與對象關聯的規則,用來規定哪些用戶可以獲得該對象的訪問許可權以及方式如何。對安全對象的訪問通過授予或拒絕許可權進行控制。
許可權可以明確用戶能夠使用哪些資料庫對象,並對它們進行何種操作。用戶在資料庫內的許可權取決於用戶賬號的許可權和該用戶所屬的角色的許可權。
提示:在設置許可權時,尤其要注意許可權在安全對象上的繼承關系。對於高級別安全對象上設置的許可權,會被自動繼承到低級別安全對象上。
理解許可權的繼承和許可權的覆蓋會在設置許可權時減少很多問題,最佳方法是統籌規劃,上機驗證。
(四)架構(schema)
架構是指包含表、視圖、過程等的容器。它位於資料庫內部,而資料庫位於伺服器內部。這些實體就像嵌套框放置在一起。伺服器是最外面的框,而架構是最裡面的框。架構包含表、視圖、過程、函數、同義詞、類型、隊列、XML架構集合等安全對象。
注意:
在 SQL Server 2000和早期版本中,資料庫可以包含一個名為「架構」的實體, SQL Server 2000包含 CREATE SCHEMA語句,但此實體實際上是所有者(創建對象時的用戶)。在 SQL Server 2005 開始,架構既是一個容器,又是一個命名空間。任何用戶都可以擁有架構,並且架構所有權可以轉移。從 SQL Server 2005開始,每個用戶都擁有一個默認架構。可以使用 CREATE USER或 ALTER USER的 DEFAULT_SCHEMA選項設置和更改默認架構。如果未定義 DEFAULT_SCHEMA,則資料庫用戶將使用 dbo作為默認架構。
在SQL Server 2000中,DataBaseName.dbo.TableName解釋為:資料庫名.所有者.表名。
從 SQL Server 2005開始,DataBaseName.dbo.TableName解釋為:資料庫名.架構名.表名。
在SQL Server 2000中,資料庫對象全稱是server_name.[database_name].[owner_name].object_name
從SQL Server 2005始,資料庫對象全稱是server_name.[database_name].[schema_name].object_name
在SQL SERVER2000或以前版本中創建一個對象,對象必須要有一個所有者(owner)。對象是如何屬於某個所有者的呢?這依賴於創建對象時的用戶。您不能取消對象所有者(object owner)的特權(privileges)。對象所有者可以執行任何與對象有關的操作(例如 INSERT、UPDATE、DELETE、SELECT或 EXECUTE),也可以管理對象的許可權。
從2005/2008後,一個我們必須重新認識的情況是對象不再有所有者(owner)。架構包含對象,架構有所有者。
在2005前(如SQL Server 2000中),沒有架構的概念,只有用戶的概念,那時候DBO是默認用戶。到了2005,有了架構概念,但是為了向後兼容,保留了DBO,並且把DBO作為默認架構,在不指定架構的情況下,默認為dbo,「默認架構」的概念,用於解析未使用其完全限定名稱引用的對象的名稱。在 SQL Server 2005 中,每個用戶都有一個默認架構,用於指定伺服器在解析對象的名稱時將要搜索的第一個架構。可以使用 CREATE USER和 ALTER USER的 DEFAULT_SCHEMA選項設置和更改默認架構。如果未定義 DEFAULT_SCHEMA,則資料庫用戶將把 DBO作為其默認架構。
(五)dbo
dbo既是默認架構,也是默認用戶。在SQL Server 2000中,dbo作為默認用戶。在SQL Server2005中,dbo既作為默認用戶,也作為默認架構(如圖)。
dbo作為默認用戶,dbo (DataBase Owner,資料庫的所有者,擁有資料庫中的所有對象),每個資料庫都有dbo, sysadmin伺服器角色的成員自動映射成dbo,無法刪除 dbo用戶,且此用戶始終出現在每個資料庫中。通常,登錄名sa映射為庫中的用戶dbo。另外,固定伺服器角色 sysadmin的任何成員都映射到每個資料庫內稱為 dbo的一個特殊用戶上。由固定伺服器角色sysadmin的任何成員創建的任何對象都自動屬於 dbo。由固定伺服器角色 sysadmin的任何成員或 dbo用戶創建的任何對象都自動屬於dbo,由任何其他用戶(包括 db_owner固定資料庫角色成員)創建的對象,屬於創建該對象的用戶,而不是 dbo,用創建該對象的用戶名限定。例如:
如果用戶 Andrew是固定伺服器角色sysadmin的成員,並創建表 T1,則表 T1屬於 dbo,並以 dbo.T1而不是 Andrew.T1進行限定。相反,如果 Andrew不是固定伺服器角色sysadmin的成員,而只是固定資料庫角色 db_owner的成員,並創建表 T1,則 T1屬於 Andrew,並限定為Andrew.T1。該表屬於 Andrew,因為該成員沒有將表限定為dbo.T1。
dbo作為默認架構,在不指定架構的情況下,默認為dbo,「默認架構」的概念,用於解析未使用其完全限定名稱引用的對象的名稱。在 SQL Server 2005 中,每個用戶都有一個默認架構,用於指定伺服器在解析對象的名稱時將要搜索的第一個架構。可以使用 CREATE USER和 ALTER USER的 DEFAULT_SCHEMA選項設置和更改默認架構。如果未定義 DEFAULT_SCHEMA,則資料庫用戶將把 DBO作為其默認架構。
(六)Guest用戶
guest用戶不需要映射到登錄名。這種用戶賬號是供資料庫中沒有明確授予許可權給已映射至認證用戶使用的。guest供那些已經成功登錄到SQL SERVER實例,但是卻沒有通過用戶訪問資料庫的許可權的登錄者使用的。
SQLSERVER 2000中guest用戶可以刪除;而2005/2008中是不能刪除的,卻可以取消CONNECT許可權,而且為安全起見,所有用戶定義的資料庫中預設情況下guest用戶的許可權都是被取消了的,可在除master和tempdb之外的任何資料庫中禁用Guest用戶。
在SQL SERVER 2000中,新建的資料庫中沒有Guest用戶,但可以添加它,也可刪除它,添加與刪除方法與普通資料庫相同。
在SQL Server 2005或以上版本中GUEST已經默認存在於每個資料庫中,但默認情況下,會在新資料庫中禁用GUEST用戶(在「對象資源管理器→安全性→登錄」節點中圖標上有禁用標識),我們可以通過以下語句啟用GUEST用戶:GRANT CONNECT TO GUEST 。當你決定不再想讓該資料庫被非資料庫授權的用戶以GUEST身份進行訪問時,可以再次將GUEST帳號禁用。值得一提的是,GUEST用戶在資料庫中不能被刪除,我們只能通過以下語句禁用GUEST用戶:REVOKE CONNECT FROMGUEST 。
在SQL SERVER 2000中,要允許guest用戶帳戶訪問資料庫,可以像添加其它資料庫用戶那樣添加它,如:
USE<Database Name>
GO
EXECsp_grantdbaccess 'guest'
GO
在SQL SERVER 2005中,允許guest用戶帳戶
USE<Database Name>
GO
GRANT CONNECT TO GUEST
GO
需要提醒的是,對於是否添加Guest用戶要謹慎權衡利弊。
--SQLServer 2000刪除guest用戶賬號
USE<Database Name>
GO
EXECsp_revokedbaccess 'guest'
GO
-- SQLServer 2005禁用guest用戶賬號
USE<Database Name>
GO
REVOKECONNECT FROM GUEST
GO
(七)sa登錄名
SQLServer的 sa登錄名是伺服器級的主體。默認情況下,該登錄名是在安裝實例時創建的。在 SQL Server 2005和 SQL Server2008中,sa的默認資料庫為 master。這是對早期版本的 SQLServer的行為的更改。
sa(system administrator系統管理員)是為向後兼容而提供的特殊登錄。sysadmin是一種角色。該角色能夠執行SQLServer上的任何操作。本質上,任何具有這種角色成員身份的人都是那個伺服器上的sa。這種伺服器角色的創建為微軟提供了某一天去除sa登錄的能力——實際上,聯機叢書把sa稱作本質上為遺留物的東西。
與以前版本不同,SQL Server 2008,即使是用混合模式安裝,sa也默認禁用。
注意,sa是一個默認的SQL Server登錄名,擁有操作SQL Server系統的所有許可權,該登錄名不能被刪除。當採用混合模式安裝Microsoft SQL Server系統之後,應該為sa指定一個密碼,應為 sa登錄分配一個強密碼(strongpassword)。
sa登錄名會映射到 sysadmin固定伺服器角色,它對整個伺服器有不能撤銷的管理憑據。如果攻擊者以系統管理員的身份獲取了訪問許可權,則可能造成的危害是無法預計的。
(八)其它幾個默認配置的的登錄(Logins)和用戶(Users)
默認配置的的登錄和用戶除了dbo用戶、Guest用戶、sa登錄,還有如下幾個:
Administrators組是一個特殊的登錄。administrator用戶默認administrators組的成員。
Administrators組實際名稱為BUILTIN\Administrators。早期版本,這個組的所有成員均為 sysadmin 角色的成員(這意味著Administrators組中的成員具有最高許可權),但可以從該角色中移除這些成員。與以前版本不同,SQL Server 2008默認情況下,本地 Windows組 BUILTIN\Administrators不再包含在新的 SQL Server 2008安裝上的 SQL Server的 sysadmin固定伺服器角色中。
提示:每個版本的 SQL Server都具有不同的安全功能,默認配置也不盡相同,後出的版本更有利於安全,但安全性和使用方便這兩種需求可能有矛盾的一面,最佳方法是上機了解驗證。
NETWORKSERVICE和SYSTEM登錄賬戶
NETWORKSERVICE和SYSTEM登錄賬戶,實際名稱為NT AUTHORITY\NETWORK SERVICE和NT AUTHORITY\SYSTEM,是否存在這些,依賴於伺服器的配置。如果配置了報表伺服器,將出現NETWORK SERVICE登錄賬戶。
INFORMATION_SCHEMA和sys用戶
INFORMATION_SCHEMA和sys又是SQL Server 預定義的架構(內置架構)名稱,它們與INFORMATION_SCHEMA和sys用戶具有相同的名稱。不能刪除,主要用於向後兼容性。可以使用INFORMATION_SCHEMA用戶和sys用戶訪問INFORMATION_SCHEMA和sys架構的系統視圖,獲取有關資料庫元數據信息。
(九)SQL Server中的角色
角色 (role),是SQL Server用來管理伺服器和資料庫許可權的,是安全帳戶的集合,在管理許可權時可以視為一個單元——作為分配許可權的單位。
SQLServer中的角色分為伺服器級別和資料庫級別角色。
◇伺服器級別角色
伺服器級別角色用於幫助管理伺服器上的許可權。伺服器角色的許可權作用域為伺服器范圍。可以將登錄名(Login Name)添加到伺服器角色。
符合許可權要求的用戶,可以將伺服器級主體(SQL Server登錄名、Windows帳戶和 Windows組)添加到伺服器級角色。固定伺服器角色的每個成員都可以將其他登錄名添加到該同一角色。
固定伺服器角色簡介:
1)sysadmin:系統管理員,角色成員可對SQLServer伺服器進行所有的管理工作,為最高管理角色。這個角色一般適合於資料庫管理員(DBA)。
2)securityadmin:安全管理員,角色成員可以管理登錄名及其屬性。可以授予、拒絕、撤銷伺服器級和資料庫級的許可權。另外還可以重置SQL Server登錄名的密碼。
3)serveradmin:伺服器管理員,角色成員具有對伺服器進行設置及關閉伺服器的許可權。
4)setupadmin:設置管理員,角色成員可以添加和刪除鏈接伺服器,並執行某些系統存儲過程。
5)processadmin:進程管理員,角色成員可以終止SQLServer實例中運行的進程。
6)diskadmin:用於管理磁碟文件。
7)dbcreator:資料庫創建者,角色成員可以創建、更改、刪除或還原任何資料庫。
8)bulkadmin:可執行BULK INSERT語句,但是這些成員對要插入數據的表必須有INSERT許可權。BULK INSERT語句的功能是以用戶指定的格式復制一個數據文件至資料庫表或視圖。
9)在sql server 2005 sp2(補丁)及以後版本,伺服器角色中還可以看到一個public角色。每個 SQL Server登錄名均屬於 public伺服器角色。 如果未向某個伺服器主體授予或拒絕對某個安全對象的特定許可權,該用戶將繼承授予該對象的 public角色的許可權。public伺服器角色默認擁有 VIEW ANY DATABASE(查看任何資料庫)許可權。[VIEW ANY DATABASE許可權控制是否顯示sys.databases和 sys.sysdatabases視圖以及 sp_helpdb系統存儲過程中的元數據(metadata)。]
從 SQL Server 2012開始,您可以創建用戶定義的伺服器角色,並將伺服器級許可權添加到用戶定義的伺服器角色。
每個版本的 SQL Server都具有不同的安全功能,版本越高,功能越強。
可以利用系統函數IS_SRVROLEMEMBER指示當前用戶的 SQLServer登錄名是否是固定伺服器角色的成員。
可以利用系統存儲過程sp_helpsrvrolemember返回有關 SQL Server 固定伺服器角色成員的信息。
--查詢 sysadmin固定伺服器角色的成員。
execsp_helpsrvrolemember 'sysadmin'
◇資料庫級別的角色
資料庫級別角色用於幫助管理資料庫中的許可權。資料庫級角色的許可權作用域為資料庫范圍。可以將[資料庫]用戶名(User Name)添加到資料庫角色。
SQLServer中有兩種類型的資料庫級角色:資料庫中預定義的「固定資料庫角色」和您可以創建的「靈活資料庫角色」(自定義資料庫角色)。
固定資料庫角色是在資料庫級別定義的,並且存在於每個資料庫中。 db_owner和db_securityadmin資料庫角色的成員可以管理固定資料庫角色成員身份。但是,只有db_owner資料庫角色的成員能夠向db_owner固定資料庫角色中添加成員。 msdb資料庫中還有一些特殊用途的固定資料庫角色。
符合許可權要求的用戶,可以向資料庫級角色中添加資料庫帳戶和其他 SQL Server角色。固定資料庫角色的每個成員都可向同一個角色添加其他登錄名。
固定資料庫角色簡介:
1)db_owner:資料庫所有者,這個資料庫角色的成員可執行資料庫的所有管理操作。
2)db_accessadmin:資料庫訪問許可權管理者,角色成員具有添加、刪除資料庫使用者、資料庫角色和組的許可權。
3)db_securityadmin:資料庫安全管理員,角色成員可管理資料庫中的許可權,如設置資料庫表的增加、刪除、修改和查詢等存取許可權。
4)db_ddladmin:資料庫DDL管理員,角色成員可增加、修改或刪除資料庫中的對象。
5)db_backupoperator:資料庫備份操作員,角色成員具有執行資料庫備份的許可權。
6)db_datareader:資料庫數據讀取者,角色成員可以從所有用戶表中讀取數據。
7)db_datawriter:資料庫數據寫入者,角色成員具有對所有用戶表進行增加、刪除、修改的許可權。
8)db_denydatareader:資料庫拒絕數據讀取者,角色成員不能讀取資料庫中任何錶的內容。
9)db_denydatawriter:資料庫拒絕數據寫入者,角色成員不能對任何錶進行增加、刪修、修改操作。
10)public:是一個特殊的資料庫角色,每個資料庫用戶都是public角色的成員,因此不能將用戶、組或角色指派為public角色的成員,也不能刪除public角色的成員。public資料庫角色默認的許可權很少[使用某些系統過程查看並顯示master資料庫中的信息;執行一些不需要一些許可權的語句(例如PRINT)]。
可以利用系統函數IS_MEMBER檢查當前用戶是否是資料庫角色或Windows域組的成員。
可以利用系統存儲過程sp_helprolemember顯示資料庫角色的成員。
可以利用系統存儲過程sp_helpuser報告有關當前資料庫中資料庫級主體的信息。
可以利用系統存儲過程sp_helprotect報告當前資料庫中某對象的用戶許可權或語句許可權的信息。
--查詢用戶擁有的資料庫角色
useyourdb
execsp_helpuser 'UserName'
go
--查詢用戶被賦予的許可權
useyourdb
execsp_helprotect @username = 'user name'
C. sqlserver資料庫如何使用圖形界面查看伺服器屬性-安全性
在「對象源宴資源管理器」瞎段中,右鍵單擊伺服器,再單擊「屬性」 。
在 「伺服器屬性」 對話框中,單擊某頁以查看或更改有關該頁的伺服器信息。 某些屬性是只讀屬性。
Transact-SQL
通過使用 SERVERPROPERTY 內置函數查看伺服器屬性
連接到 資料庫引擎。
在標准菜單欄上,單擊 「新建查詢」 。
將以下示例復制並粘貼到查詢窗口中,然後單擊「執行」 。 此示例在 語句中使用 SERVERPROPERTY SELECT 內置函數,以返回有關當前伺服器的信息。 如果基於 Windows 的伺服器上安裝了多個 SQL Server 實例,而且客戶端必須打開另一個到當前連接所使用的同一雹神銀實例連接,則此方案很有用。
D. sqlserver有哪些安全策略
Microsoft建立了一種既靈活又強大的安全管理機制,它能夠對用戶訪問SQL Server伺服器系統和資料庫的安全進行全面地管理。按照本文介紹的步驟,你可以為SQL Server 7.0(或2000)構造出一個靈活的、可管理的安全策略,而且它的安全性經得起考驗。
一、驗證方法選擇
本文對驗證(authentication)和授權(authorization)這兩個概念作不同的解釋。驗證是指檢驗用戶的身份標識;授權是指 允許用戶做些什麼。在本文的討論中,驗證過程在用戶登錄SQL Server的時候出現,授權過程在用戶試圖訪問數據或執行命令的時候出現。
構造安全策略的第一個步驟是確定SQL Server用哪種方式驗證用戶。SQL Server的驗證是把一組帳戶、密碼與Master資料庫Sysxlogins表中的一個清單進行匹配。Windows NT/2000的驗證是請求域控制器檢查用戶身份的合法性。一般地,如果伺服器可以訪問域控制器,我們應該使用Windows NT/2000驗證。域控制器可以是Win2K伺服器,也可以是NT伺服器。無論在哪種情況下,SQL Server都接收到一個訪問標記(Access Token)。訪問標記是在驗證過程中構造出來的一個特殊列表,其中包含了用戶的SID(安全標識號)以及一系列用戶所在組的SID。正如本文後面所介紹 的,SQL Server以這些SID為基礎授予訪問許可權。注意,操作系統如何構造訪問標記並不重要,SQL Server只使用訪問標記中的SID。也就是說,不論你使用SQL Server 2000、SQL Server 7.0、Win2K還是NT進行驗證都無關緊要,結果都一樣。
如果使用SQL Server驗證的登錄,它最大的好處是很容易通過Enterprise Manager實現,最大的缺點在於SQL Server驗證的登錄只對特定的伺服器有效,也就是說,在一個多伺服器的環境中管理比較困難。使用SQL Server進行驗證的第二個重要的缺點是,對於每一個資料庫,我們必須分別地為它管理許可權。如果某個用戶對兩個資料庫有相同的許可權要求,我們必須手工設 置兩個資料庫的許可權,或者編寫腳本設置許可權。如果用戶數量較少,比如25個以下,而且這些用戶的許可權變化不是很頻繁,SQL Server驗證的登錄或許適用。但是,在幾乎所有的其他情況下(有一些例外情況,例如直接管理安全問題的應用),這種登錄方式的管理負擔將超過它的優 點。
二、Web環境中的驗證
即使最好的安全策略也常常在一種情形前屈服,這種情形就是在Web應用中使用SQL Server的數據。在這種情形下,進行驗證的典型方法是把一組SQL Server登錄名稱和密碼嵌入到Web伺服器上運行的程序,比如ASP頁面或者CGI腳本;然後,由Web伺服器負責驗證用戶,應用程序則使用它自己的 登錄帳戶(或者是系統管理員sa帳戶,或者為了方便起見,使用Sysadmin伺服器角色中的登錄帳戶)為用戶訪問數據。
這種安排有幾個缺點,其中最重要的包括:它不具備對用戶在伺服器上的活動進行審核的能力,完全依賴於Web應用程序實現用戶驗證,當SQL Server需要限定用戶許可權時不同的用戶之間不易區別。如果你使用的是IIS 5.0或者IIS 4.0,你可以用四種方法驗證用戶。第一種方法是為每一個網站和每一個虛擬目錄創建一個匿名用戶的NT帳戶。此後,所有應用程序登錄SQL Server時都使用該安全環境。我們可以通過授予NT匿名帳戶合適的許可權,改進審核和驗證功能。
第二種方法是讓所有網站使用Basic驗證。此時,只有當用戶在對話框中輸入了合法的帳戶和密碼,IIS才會允許他們訪問頁面。IIS依靠一個NT 安全資料庫實現登錄身份驗證,NT安全資料庫既可以在本地伺服器上,也可以在域控制器上。當用戶運行一個訪問SQL Server資料庫的程序或者腳本時,IIS把用戶為了瀏覽頁面而提供的身份信息發送給伺服器。如果你使用這種方法,應該記住:在通常情況下,瀏覽器與服 務器之間的密碼傳送一般是不加密的,對於那些使用Basic驗證而安全又很重要的網站,你必須實現SSL(Secure Sockets Layer,安全套接字層)。
在客戶端只使用IE 5.0、IE 4.0、IE 3.0瀏覽器的情況下,你可以使用第三種驗證方法。你可以在Web網站上和虛擬目錄上都啟用NT驗證。IE會把用戶登錄計算機的身份信息發送給IIS,當 該用戶試圖登錄SQL Server時IIS就使用這些登錄信息。使用這種簡化的方法時,我們可以在一個遠程網站的域上對用戶身份進行驗證(該遠程網站登錄到一個與運行著Web 伺服器的域有著信任關系的域)。
最後,如果用戶都有個人數字證書,你可以把那些證書映射到本地域的NT帳戶上。個人數字證書與伺服器數字證書以同樣的技術為基礎,它證明用戶身份標 識的合法性,所以可以取代NT的Challenge/Response(質詢/回應)驗證演算法。Netscape和IE都自動在每一個頁面請求中把證書信 息發送給IIS。IIS提供了一個讓管理員把證書映射到NT帳戶的工具。因此,我們可以用數字證書取代通常的提供帳戶名字和密碼的登錄過程。
由此可見,通過NT帳戶驗證用戶時我們可以使用多種實現方法。即使當用戶通過IIS跨越Internet連接SQL Server時,選擇仍舊存在。因此,你應該把NT驗證作為首選的用戶身份驗證辦法。
三、設置全局組
構造安全策略的下一個步驟是確定用戶應該屬於什麼組。通常,每一個組織或應用程序的用戶都可以按照他們對數據的特定訪問要求分成許多類別。例如,會 計應用軟體的用戶一般包括:數據輸入操作員,數據輸入管理員,報表編寫員,會計師,審計員,財務經理等。每一組用戶都有不同的資料庫訪問要求。
E. sqlserver 2005資料庫的安全性在哪
1、SQL Server資料庫的最主要的設計是用於數據管理,特別是大量的數據的管理。
2、SQL Server資料庫也考慮了銀悉亂安全性,引入了登錄ID、口令、許可權之類的設計,比如查看權、執行權、修改權、創建權等。
3、SQL Server資料庫上安全性上的考慮雖然比較多,但是並不是十分的嚴格,一方面是因為嚴格過頭必然會帶來使用上的不便,甚至為了加密至使數據的匯總、查詢、計算方面的效率嚴重下降。所以,SQL Server資料庫在本地資料庫文件,整體上去論是不加密的。
4、對於安全性要求比較高的應用,應該使用三層架構,用戶不能直接接觸到SQL Server資料庫。我們常見的網站訪問的方式就是典型的三層架構,數據提供給WEB服陸中務器(比如IIS),WEB伺服器將網頁內容及涉及的相關的數據進行鋒檔合成後再推送給來訪者。
5、對於能登錄到SQL Server資料庫所在的伺服器,得到SQL Server資料庫數據文件的人來說,SQL Server資料庫中的內容基本上就是無安全可言。當然,對敏感數據進行了加密後存儲在數據表中的除外。
F. sqlserver限制用戶頻繁訪問
SQLSERVER限制用戶頻繁訪問設置方法:
1、首先進入資料庫級別的安全性、登錄名、新建登錄名。
2、在常規選項卡中,如下圖所示,創建登陸名,並設置默認的資料庫。
3、在飢清物用戶映射選項卡中,勾選需要設置的爛液資料庫,並設置架構,點擊確認按鈕,完成創建用戶的操作。
4、現在就可以對TESLOG資料庫中的USER表進行許可權的設置了表、屬性。
5、在許可權選項卡中,依此點擊添加、瀏覽、選擇對象。
6、在上面點擊確認後,就可以下面的列表中找到對應的許可權,如果你還想細正前化到列的許可權的話,右下角還有一個列許可權的按鈕可以進行設置,點擊確認按鈕就完成了這些許可權的設置了。
7、現在就使用TESUSER用戶登陸資料庫了,現在只能看到一個表了。
G. SQLServer資料庫的注意事項
如果你正在負責一個基於SQL Server的項目 或者你剛剛接觸SQL Server 你都有可能要面臨一些資料庫性能的問題 這篇文章會為你提供一些有用的指導(其中大多數也可以用於其它的DBMS)
在這里 我不打算介紹使用SQL Server的竅門 也不能提供一個包治百病的方案 我所做的是總結一些經驗 關於如何形成一個好的設計 這些經驗來自我過去幾年中經受的教訓 一直來 我看到許多同樣的設計錯誤被一次又一次的重復
你了解你用的工具嗎?
不要輕視這一點 這是我在這篇文章中講述的最關鍵的一條 也許你也看到有很多的SQL Server程序員沒有掌握全部的T SQL命令和SQL Server提供的那些有用的工具
什麼?我要浪費一個月的時間來學習那些我永遠也不會用到的SQL命令??? 你也許會這樣說 對的 你不需要這樣做 但是你應該用一個周末瀏覽所有的T SQL命令 在這里 你的任務是了解 將來 當你設段蠢盯計一個查詢時 你會記起來 對了 這里有一個命令可握和以完全實現我需要的功能 於是 到MSDN查看這個命令的確切語法
不要使用游標
讓我再重復一遍 不要使用游標 如果你想破壞整個系統的性能的話 它們倒是你最有效的首選辦法 大多數的初學者都使用游標 而沒有意識到它們對性能造成的影響 它們佔用內存 還用它們那些不可思議的方式鎖定表 另外 它們簡直就像蝸牛 而最糟糕的是 它們可以使你的DBA所能做的一切性能優化等於沒做 不知你是否知道每執行一次FETCH就等於執行一次SELECT命令?這意味著如果你的游標有 條記錄 它將執行 次SELECT!如果你使用一組SELECT UPDATE或者DELETE來完成相應的工作 那將有效率的多
初學者一般認為使用游標是一種比較熟悉和舒適的編程方式 可很不幸 這會導致糟糕的性能 顯然 SQL的總體目的是你要實現什麼 而不是怎樣實現
我曾經用T SQL重寫了一個基於游標的存儲過程 那個表只有 條記錄 原來的存儲過程用了 分鍾才執行完畢 而新的存儲過程只用了 秒鍾 在這里 我想你應該可以看到一個不稱職的程序員究竟在幹了什麼!!!
我們可以寫一個小程序來取得和處理數據並且更新資料庫 這樣做有時會更有效 記住 對於循環 T SQL無能為力
我再重新提醒一下 使用游標沒有好處 除了DBA的工作外 我從來沒有看到過使用游標可以有效的完成任何工作
規范化你的數據表
為什麼不規范化資料庫?大概有兩個借口 出於性能的考慮和純粹因為懶惰 至於第二點 你遲早得為此付出代價 而關於性能的問題 你不需要優化根本就不慢的東西 我經常看到一些程序員 反規范化 資料庫 他們的理由是 原來的設計太慢了 可結果卻常常是他們讓系統更慢了 DBMS被設計用來處理規范資料庫的 因此 記住 按照規范化的要求設計資料庫
不要使用SELECT *
這點不太容易做到 我太了解了 因為我自己就經常這樣干 可是檔宴 如果在SELECT中指定你所需要的列 那將會帶來以下的好處
減少內存耗費和網路的帶寬
你可以得到更安全的設計
給查詢優化器機會從索引讀取所有需要的列
了解你將要對數據進行的操作
為你的資料庫創建一個健壯的索引 那可是功德一件 可要做到這一點簡直就是一門藝術 每當你為一個表添加一個索引 SELECT會更快了 可INSERT和DELETE卻大大的變慢了 因為創建了維護索引需要許多額外的工作 顯然 這里問題的關鍵是 你要對這張表進行什麼樣的操作 這個問題不太好把握 特別是涉及DELETE和UPDATE時 因為這些語句經常在WHERE部分包含SELECT命令
不要給 性別 列創建索引
首先 我們必須了解索引是如何加速對表的訪問的 你可以將索引理解為基於一定的標准上對表進行劃分的一種方式 如果你給類似於 性別 這樣的列創建了一個索引 你僅僅是將表劃分為兩部分 男和女 你在處理一個有 條記錄的表 這樣的劃分有什麼意義?記住 維護索引是比較費時的 當你設計索引時 請遵循這樣的規則 根據列可能包含不同內容的數目從多到少排列 比如 姓名 省份 性別
使用事務
請使用事務 特別是當查詢比較耗時 如果系統出現問題 這樣做會救你一命的 一般有些經驗的程序員都有體會 你經常會碰到一些不可預料的情況會導致存儲過程崩潰
小心死鎖
按照一定的次序來訪問你的表 如果你先鎖住表A 再鎖住表B 那麼在所有的存儲過程中都要按照這個順序來鎖定它們 如果你(不經意的)某個存儲過程中先鎖定表B 再鎖定表A 這可能就會導致一個死鎖 如果鎖定順序沒有被預先詳細的設計好 死鎖是不太容易被發現的
不要打開大的數據集
在CSDN技術論壇中 :) 一個經常被提出的問題是 我怎樣才能迅速的將 條記錄添加到ComboBox中?這是不對的 你不能也不需要這樣做 很簡單 你的用戶要瀏覽 條記錄才能找到需要的記錄 他一定會詛咒你的 在這里 你需要的是一個更好的UI 你需要為你的用戶顯示不超過 或 條記錄
不要使用伺服器端游標
與伺服器端游標比起來 客戶端游標可以減少伺服器和網路的系統開銷 並且還減少鎖定時間
使用參數查詢
有時 我在CSDN技術論壇看到類似這樣的問題 SELECT * FROM a WHERE a id= A B 因為單引號查詢發生異常 我該怎麼辦? 而普遍的回答是 用兩個單引號代替單引號 這是錯誤的 這樣治標不治本 因為你還會在其他一些字元上遇到這樣的問題 更何況這樣會導致嚴重的bug 除此以外 這樣做還會使SQL Server的緩沖系統無法發揮應有的作用 使用參數查詢 釜底抽薪 這些問題統統不存在了
在程序編碼時使用大數據量的資料庫
程序員在開發中使用的測試資料庫一般數據量都不大 可經常的是最終用戶的數據量都很大 我們通常的做法是不對的 原因很簡單 現在硬碟不是很貴 可為什麼性能問題卻要等到已經無可挽回的時候才被注意呢?
不要使用INSERT導入大批的數據
請不要這樣做 除非那是必須的 使用UTS或者BCP 這樣你可以一舉而兼得靈活性和速度
注意超時問題
查詢資料庫時 一般資料庫的預設都比較小 比如 秒或者 秒 而有些查詢運行時間要比這長 特別是當資料庫的數據量不斷變大時
不要忽略同時修改同一記錄的問題
有時候 兩個用戶會同時修改同一記錄 這樣 後一個修改者修改了前一個修改者的操作 某些更新就會丟失 處理這種情況不是很難 創建一個timestamp欄位 在寫入前檢查它 如果允許 就合並修改 如果存在沖突 提示用戶
在細節表中插入紀錄時 不要在主表執行SELECT MAX(ID)
這是一個普遍的錯誤 當兩個用戶在同一時間插入數據時 這會導致錯誤 你可以使用SCOPE_IDENTITY IDENT_CURRENT和@@IDENTITY 如果可能 不要使用@@IDENTITY 因為在有觸發器的情況下 它會引起一些問題(詳見這里的討論)
避免將列設為NULLable
如果可能的話 你應該避免將列設為NULLable 系統會為NULLable列的每一行分配一個額外的位元組 查詢時會帶來更多的系統開銷 另外 將列設為NULLable使編碼變得復雜 因為每一次訪問這些列時都必須先進行檢查
我並不是說NULLS是麻煩的根源 盡管有些人這樣認為 我認為如果你的業務規則中允許 空數據 那麼 將列設為NULLable有時會發揮很好的作用 但是 如果在類似下面的情況中使用NULLable 那簡直就是自討苦吃
CustomerName CustomerAddress CustomerEmail CustomerName CustomerAddress CustomerEmail CustomerName CustomerAddress CustomerEmail
如果出現這種情況 你需要規范化你的表了
盡量不要使用TEXT數據類型
除非你使用TEXT處理一個很大的數據 否則不要使用它 因為它不易於查詢 速度慢 用的不好還會浪費大量的空間 一般的 VARCHAR可以更好的處理你的數據
盡量不要使用臨時表
盡量不要使用臨時表 除非你必須這樣做 一般使用子查詢可以代替臨時表 使用臨時表會帶來系統開銷 如果你是用 進行編程 它還會給你帶來很大的麻煩 因為 使用資料庫連接池而臨時表卻自始至終都存在 SQL Server提供了一些替代方案 比如Table數據類型
學會分析查詢
SQL Server查詢分析器是你的好夥伴 通過它你可以了解查詢和索引是如何影響性能的
使用參照完整性
lishixin/Article/program/SQLServer/201311/22158
H. SQL Server資料庫安全包括哪些內容
SQL
Server資料庫安全包括:1、數據信息安全,不易被非法程序讀取。2、數據顫念信息豎寬完整,不會因為存儲時間長等意外情況而丟失數據。3、好像茄纖困還有個備份還原機制,從而使損壞數據能夠恢復。
其他的忘記了,希望對你有所幫助
I. 如何保證SQLServer資料庫安全
目前,針對SQL Server資料庫的應用級入侵已經變得越來越肆無忌憚,像SQL注入、跨站點腳本攻擊和未經授權的用戶訪問等。所有這些入侵都有可能繞過前台安全系統並對資料庫系統攻擊。對於資料庫管理來說,保護數據不受內部和外部侵害是一項重要的工作。SQL Server 正日益廣泛的使用於各部門內外,作為資料庫系統管理員,需要深入的理解SQL Server的安全性控制策略,以實現管理安全性的目標。那麼,如何確保SQL Server資料庫的安全性呢,我們可以從以下兩方面考慮。it培訓機構
首先、採取業界已存在的且比較成熟的資料庫審計解決方案來實現
實時記錄用戶對資料庫系統的所有操作(如:插入、刪除、更新、用戶自定義操作等),並還原SQL操作命令包括源IP地址、目的IP地址、訪問時間、用戶名、資料庫操作類型、資料庫表名、欄位名等,如此,可實現對資料庫安全事件准確全程跟蹤定位。
實時檢查資料庫不安全配置、資料庫潛在弱點、資料庫用戶弱口令、資料庫軟體補丁層次、資料庫潛藏木馬等。
進行全方位的多層(應用層、中間層、資料庫層)的訪問審計,通過多層業務審計,實現數據操作原始訪問者的精確定位。
針對於資料庫的操作行為進行實時檢測,並預設置風險控制策略,結合對資料庫活動的實時監控信息,進行特徵檢測,任何嘗試性的攻擊操作都將被檢測到並進行阻斷或告警;並支持通過郵件、簡訊、SYSLOG、SNMP、屏幕等方式告警。
其次、制定相關的資料庫管理流程
不同的人員對資料庫的操作職責不一樣,所有人員對資料庫的操作均需要事前審批,對一些非常重要的操作需要二級以上審批。申請操作時,需明確在什麼人,什麼時間,因為何事,對哪個資料庫(或表),進行什麼樣的操作,可能有什麼樣的風險及採取的補救措施等。
資料庫數據的丟失以及資料庫被非法用戶的侵入使得資料庫管理員身心疲憊不堪,資料庫安全性問題對於資料庫管理員來說簡直就是噩夢。對於資料庫數據的安全問題。本文對圍繞資料庫的安全性問題提出了一些安全性策略,希望對資料庫管理員有所幫助。