秣馬厲兵——SQL數據庫安全(一)

 
IT界有一句話“硬盤有價,數據無價!”,我奉之爲經典。信息時代的今天,有效信息的收集、分析、利用、儲存、安全是IT信息產業發展過程中相當重要的環節,對於企業的發展、壯大來說是不可或缺的,因此對於數據信息 的存儲和安全就有相應的要求。如此我就來向大家介紹一下保證SQL數據庫安全的的一些知識。
數據庫安全分爲四個大塊:
一、用戶安全
二、存儲安全
三、網絡傳輸安全
四、 數據加密安全
要對數據庫進行安全管理實現要對數據庫進行規範的如下,我先來介紹一下規範數據庫
*規範數據庫
當我們收集到許多有效信息後,需要對這些雜亂的信息進行一下規範。這樣多的目的很簡單:保證數據的有效性和合法性!!!這需要用到約束來維護數據的完整性。數據庫的完整性有域完整性、實體完整性、引用完整性。
#對於域完整性需要用default約束和check約束來保證字段取值合法性。
#實體完整性包含primary key約束和unique約束,以此來保證記錄的有效性
#用foreign key 約束保證引用完整性,即保證數據的一貫性和一致性。
接下來我來說一下這些約束的具體使用方法和作用!
@、default約束
作用:默認值綁定
實例:1 創建新表默認年齡爲25 如下圖:出入記錄,但是不插入年齡記錄。
clip_image002
結果顯示年齡爲25。
2 修改默認綁定 如下圖:修改過後在出入記錄顯示出默認性別爲男性
clip_image003
@、check約束
可以使用圖形界面來做check約束,暫不做介紹。
實例:創建新表設置check約束,年齡限制在20到40歲,在爲該表增加一個check約束,來限制性別默認爲女性。
clip_image004
如上圖 已經成功限制年齡超出範圍的記錄添加。
clip_image005
如上圖在增加一條只允許女性記錄的check約束後,加入一條男性的記錄就報錯啦,與check約束的性別約束相沖突。
@、主鍵約束
作用:保證表中字段的記錄唯一性,不允許爲空,以此統一管理數據。
實例:創建新表設置ID爲主鍵,插入沒有ID號的記錄。 clip_image006
如圖所示,插入失敗,不允許空值。
@、unique約束
作用:保證字段不重複
@、外鍵約束
作用:實現多個表的級聯刪除以及級聯更新
實例:創建兩個表部門表和員工表,爲員工表設定外鍵爲部門ID
create table 部門表
(部門id int not null primary key,
uname varchar(8),
電話 varchar(11))
create table 員工表
(員工id int not null primary key,
姓名 varchar(8),
部門id int foreign key references 部門表(部門id))
sp_helpconstraint 員工表 ——顯示員工表的所有約束
alter table 員工表 drop constraint fk_部門id ——刪除約束
alter table 員工表 add constraint fk_部門id foreign key (部門id) references 部門表(部門id) on delete cascade on update cascade
重新使用命令使用級聯刪除和級聯更新
除了這五個約束之外還有比如可編程性(默認值)以及規則來全方面的約束數據表。我就不在過多的介紹啦!
進入下一個重點:數據庫服務器的安全
這個講的事服務器本身的安全,它又分爲載體安全性和物理安全性。我們來分別論述。
載體安全性分爲兩種1、操作系統的安全性 2、應用程序的安全性
其中對操作系統安全性要求較高,我們需要爲其安裝所有的安全補丁、正版的殺毒軟件,要經常使用註冊表和組策略對操作系統進行日常維護!
物理安全性針對的事服務器本身的管理環境這就需要公司本身對其實施行政手段啦,我就不做過多的論述啦!
!!!!!!!!!!!!!
一、用戶安全
要保證服務器的安全,對用戶的管理是在正常不過的事啦!
要求我們對用戶進行限制。
用戶分爲兩大種類:1、windows本地用戶 2、SQL SERVER用戶
這也就需要使用兩種不同的身份驗證方式啦!1windows驗證 2 混合身份驗證 3 SQL SERVER驗證
兩者的不同在於windows驗證只驗證windows用戶 混合身份驗證則驗證SQL SERVER用戶和windows用戶。有一點很重要的只要是SQL SERVER用戶 一定就是windows用戶,SQL SERVER驗證靈活,但不安全。
我們先來創建windows用戶,並且對這個用戶進行分配權限和刪除權限的操作。
首先創建windows用戶,叫做“Jim”,然後在SQL服務器上打開XP_cmdshell
特權模式,用於在SQL環境下添加windows用戶,路徑如下圖
clip_image008
clip_image010
選擇“功能的外圍應用配置器”
clip_image012
勾選 “啓用XP_cmdshell” 然後我們開始進行運作
clip_image014
xp_cmdshell 'net user Jim Ccjsj1200\add'
建立Jim用戶(windows之前要創建這個用戶),使SQL識別該windows用戶
create login [beijing\Jim] from windows with default_database=master
創建該用戶的登錄名
create user Jim for login [beijing\Jim]
使Jim用戶成爲SQL數據庫的合法用戶
clip_image016
爲Jim用戶添加瀏覽check1表的權限,然後開始測試,用Jim用戶登陸服務器,運行SQL SERVER
clip_image018
clip_image019
正如所料,Jim用戶只能查看check1的信息,不能進行其他的操作。成功完成測試。
刪除權限,刪除登陸用戶!
clip_image021
對於用戶限制我們還可以使用組策略來進行限制。
clip_image023
clip_image025
對於這些限制相信大家都很熟悉,我就不在闡述啦!唯一需要說明是當用戶被鎖定後需要用這條命令進行解鎖,如下
alter login 用戶名 with password=‘密碼’unlock login
即可!
!!!!!!架構
應用架構概念可以更好的管理用戶。
架構使用四點法:服務器名。數據庫名。用戶名。對象。
值得注意是1、架構與用戶管理是沒有從屬關係的
2、我們只需要在創建用戶時制定用戶的架構就可以規範用戶管理啦。
3、不指定架構就會默認屬於dbo
4、若存在架構名。對象名,訪問時則直接在指定架構中訪問,反之,則在dbo中查找
我們來創建一個架構
clip_image027
架構成功建立,並且加入一個用戶來應用架構中的內容。
!!!!!!!角色
角色:它的作用就相當於windows中的組,權限相同的用戶集合
它分爲兩個部分服務器角色和數據庫角色。
做個實例吧 ,創建一個角色,一用戶加入其中,並且對test架構有查詢權限。
clip_image029
進行測試一下吧
Yangyang登錄進來
clip_image031
clip_image033
正常顯示員工表的內容
clip_image035
拒絕對無權限用戶的非法操作。
至此數據庫安全性的用戶安全暫告一段落,接下來我們講數據存儲安全。
請參見下一篇博客。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章