有人在嘗試你的sa密碼,去把sa密碼設置復雜一些,長度10位以上,數字字母符號混合即可,或者裝第三方防火墻軟件,將此ip地址禁止連接
創新互聯網站建設提供從項目策劃、軟件開發,軟件安全維護、網站優化(SEO)、網站分析、效果評估等整套的建站服務,主營業務為成都做網站、網站設計,app軟件開發以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業、用心的態度為用戶提供真誠的服務。創新互聯深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
SQLSERVER2008新增的審核功能
在sqlserver2008新增了審核功能,可以對服務器級別和數據庫級別的操作進行審核/審計,事實上,事件通知、更改跟蹤、變更數據捕獲(CDC)
都不是用來做審計的,只是某些人亂用這些功能,也正因為亂用這些功能導致踩坑
事件通知:性能跟蹤
更改跟蹤:用Sync Services來構建偶爾連接的系統
變更數據捕獲(CDC):數據倉庫的ETL 中的數據抽取(背后使用logreader)
而審核是SQLSERVER專門針對數據庫安全的進行的審核,記住,他是專門的!
我們看一下審核的使用方法
審核對象
步驟一:創建審核對象,審核對象是跟保存路徑關聯的,所以如果你需要把審核操作日志保存到不同的路徑就需要創建不同的審核對象
我們把審核操作日志保存在文件系統里,在創建之前我們還要在相關路徑先創建好保存的文件夾,我們在D盤先創建sqlaudits文件夾,然后執行下面語句
--創建審核對象之前需要切換到master數據庫
USE [master]
GO
CREATE SERVER AUDIT MyFileAudit TO FILE(FILEPATH='D:\sqlaudits') --這里指定文件夾不能指定文件,生成文件都會保存在這個文件夾
GO
實際上,我們在創建審核對象的同時可以指定審核選項,下面是相關腳本
把日志放在磁盤的好處是可以使用新增的TVF:sys.[fn_get_audit_file] 來過濾和排序審核數據,如果把審核數據保存在Windows 事件日志里查詢起來非常麻煩
USE [master]
GO
CREATE SERVER AUDIT MyFileAudit TO FILE(
FILEPATH='D:\sqlaudits',
MAXSIZE=4GB,
MAX_ROLLOVER_FILES=6)
WITH (
ON_FAILURE=CONTINUE,
QUEUE_DELAY=1000);
ALTER SERVER AUDIT MyFileAudit WITH(STATE =ON)
MAXSIZE:指明每個審核日志文件的最大大小是4GB
MAX_ROLLOVER_FILES:指明滾動文件數目,類似于SQL ERRORLOG,達到多少個文件之后刪除前面的歷史文件,這里是6個文件
ON_FAILURE:指明當審核數據發生錯誤時的操作,這里是繼續進行審核,如果指定shutdown,那么將會shutdown整個實例
queue_delay:指明審核數據寫入的延遲時間,這里是1秒,最小值也是1秒,如果指定0表示是實時寫入,當然性能也有一些影響
STATE:指明啟動審核功能,STATE這個選項不能跟其他選項共用,所以只能單獨一句
在修改審核選項的時候,需要先禁用審核,再開啟審核
ALTER SERVER AUDIT MyFileAudit WITH(STATE =OFF)
ALTER SERVER AUDIT MyFileAudit WITH(QUEUE_DELAY =1000)
ALTER SERVER AUDIT MyFileAudit WITH(STATE =ON)
審核規范
在SQLSERVER審核里面有審核規范的概念,一個審核對象只能綁定一個審核規范,而一個審核規范可以綁定到多個審核對象
我們來看一下腳本
CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFile
FOR SERVER AUDIT MyFileAudit
ADD (failed_login_group),
ADD (successful_login_group)
WITH (STATE=ON)
GO
CREATE SERVER AUDIT MyAppAudit TO APPLICATION_LOG
GO
ALTER SERVER AUDIT MyAppAudit WITH(STATE =ON)
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE=OFF)
GO
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile
FOR SERVER AUDIT MyAppAudit
ADD (failed_login_group),
ADD (successful_login_group)
WITH (STATE=ON)
GO
我們創建一個服務器級別的審核規范CaptureLoginsToFile,然后再創建多一個審核對象MyAppAudit ,這個審核對象會把審核日志保存到Windows事件日志的應用程序日志里
我們禁用審核規范CaptureLoginsToFile,修改審核規范CaptureLoginsToFile屬于審核對象MyAppAudit ,修改成功
而如果要把多個審核規范綁定到同一個審核對象則會報錯
CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFileA
FOR SERVER AUDIT MyFileAudit
ADD (failed_login_group),
ADD (successful_login_group)
WITH (STATE=ON)
GO
CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFileB
FOR SERVER AUDIT MyFileAudit
ADD (failed_login_group),
ADD (successful_login_group)
WITH (STATE=ON)
GO
--消息 33230,級別 16,狀態 1,第 86 行
--審核 'MyFileAudit' 的審核規范已經存在。
這里要說一下 :審核對象和審核規范的修改 ,無論是審核對象還是審核規范,在修改他們的相關參數之前,他必須要先禁用,后修改,再啟用
--禁用審核對象
ALTER SERVER AUDIT MyFileAudit WITH(STATE =OFF)
--禁用服務器級審核規范
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE=OFF)
GO
--禁用數據庫級審核規范
ALTER DATABASE AUDIT SPECIFICATION CaptureDBLoginsToFile WITH (STATE=OFF)
GO
--相關修改選項操作
--啟用審核對象
ALTER SERVER AUDIT MyFileAudit WITH(STATE =ON)
--啟用服務器級審核規范
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE=ON)
GO
--啟用數據庫級審核規范
ALTER DATABASE AUDIT SPECIFICATION CaptureDBLoginsToFile WITH (STATE=ON)
GO
審核服務器級別事件
審核服務級別事件,我們一般用得最多的就是審核登錄失敗的事件,下面的腳本就是審核登錄成功事件和登錄失敗事件
CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFile
FOR SERVER AUDIT MyFileAudit
ADD (failed_login_group),
ADD (successful_login_group)
WITH (STATE=ON)
GO
修改審核規范
--跟審核對象一樣,更改審核規范時必須將其禁用
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE =OFF)
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile
ADD (login_change_password_gourp),
DROP (successful_login_group)
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE =ON)
GO
審核操作組
每個審核操作組對應一種操作,在SQLSERVER2008里一共有35個操作組,包括備份和還原操作,數據庫所有權的更改,從服務器和數據庫角色中添加或刪除登錄用戶
添加審核操作組的只需在審核規范里使用ADD,下面語句添加了登錄用戶修改密碼操作的操作組
ADD (login_change_password_gourp)
這里說一下服務器審核的內部實際上使用的是SQL2008新增的擴展事件里面的其中一個package:SecAudit package,當然他內部也是使用擴展事件來收集服務器信息
審核數據庫級別事件
數據庫審核規范存在于他們的數據庫中,不能審核tempdb中的數據庫操作
CREATE DATABASE AUDIT SPECIFICATION和ALTER DATABASE AUDIT SPECIFICATION
工作方式跟服務器審核規范一樣
在SQLSERVER2008里一共有15個數據庫級別的操作組
7個數據庫級別的審核操作是:select ,insert,update,delete,execute,receive,references
相關腳本如下:
--創建審核對象
USE [master]
GO
CREATE SERVER AUDIT MyDBFileAudit TO FILE(FILEPATH='D:\sqldbaudits')
GO
ALTER SERVER AUDIT MyDBFileAudit WITH (STATE=ON)
GO
--創建數據庫級別審核規范
USE [sss]
GO
CREATE DATABASE AUDIT SPECIFICATION CaptureDBActionToEventLog
FOR SERVER AUDIT MyDBFileAudit
ADD (database_object_change_group),
ADD (SELECT ,INSERT,UPDATE,DELETE ON schema::dbo BY PUBLIC)
WITH (STATE =ON)
我們先在D盤創建sqldbaudits文件夾
第一個操作組對數據庫中所有對象的DDL語句create,alter,drop等進行記錄
第二個語句監視由任何public用戶(也就是所有用戶)對dbo架構的任何對象所做的DML操作
創建完畢之后可以在SSMS里看到相關的審核
SQL code--無
EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'AuditLevel', REG_DWORD, 0
GO
--僅限成功登陸
EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'AuditLevel', REG_DWORD, 1
GO
--失敗和成功的登錄
EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'AuditLevel', REG_DWORD, 3
GO
--僅限失敗登陸
EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'AuditLevel', REG_DWORD, 2
GO
------解決方案--------------------
其實SQL Server Login auditing是通過寫注冊表的方式來存儲的。存儲的注冊表位置如下:
HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\AuditLevel
修改方式如以下:
SQL code
USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE'
, N'Software\Microsoft\MSSQLServer\MSSQLServer'
, N'AuditLevel'
, REG_DWORD
, 0/*--住需要修改這個地方的值為0、1、2或者3即可。
0:None
2:Failed Logins Only
1:Successful logins only
3:Both failed and successful logins only
*/
GO
------解決方案--------------------
1. 通過本地用戶管理,建立一個本地用戶sqlserver,密碼:123456;
2. 如果現在就我們打開SERVICES配置通過該用戶啟動,系統會報錯誤:
Source:Service Control Manager
Event ID:7000
Description:
The %service% service failed to start due to the following error:
The service did not start due to a logon failure.
No Data will be available.
這是因為作為一個普通用戶是無法啟動服務的,我們需要給sqlserver用戶分配必要的權限。
SQL Server服務啟動賬號必須有3個基本權限:
l 數據庫本地目錄的讀寫權限;
l 啟動本地服務的權限;
l 讀取注冊表的權限;
3. 賦予sqlserver用戶mssql(WINDOWS平臺上強大的數據庫平臺)目錄的讀寫權限;
因為我的SQL SERVER是安裝在D盤,所以我在權限管理中,將D:\PROGRMAM FILE\Microsoft SQL Server\mssql(WINDOWS平臺上強大的數據庫平臺)讀寫權限賦予sqlserver用戶。
4. 分配sqlserver用戶啟動本地服務的權限;
這個比較復雜,我只舉例作為成員服務器的情況。
l 啟動“Local Security Setting” MMC 管理單元。
l 展開Local Policy,然后單擊User Rights Assignment。
l 在右側窗格中,右鍵單擊Log on as Service,將用戶添加到該策略,然后單擊OK。
l 在右側窗格中,右鍵單擊Log on as a batch job,將用戶添加到該策略,然后單擊OK
l 在右側窗格中,右鍵單擊Locks pages in memory,將用戶添加到該策略,然后單擊OK
l 在右側窗格中,右鍵單擊Act as part of the operating systme,將用戶添加到該策略,然后單擊OK
l 在右側窗格中,右鍵單擊Bypass traverse checking,將用戶添加到該策略,然后單擊OK
l 在右側窗格中,右鍵單擊Replace a process level token,將用戶添加到該策略,然后單擊OK
l 關閉“Local Security Setting” MMC 管理單元。
如圖:
5. 重新啟動系統,用sqlserver用戶登陸系統;
6. 再重新啟動系統,已administrator用戶登陸,打開SERVICES管理工具,配置用該用戶啟動mssql(WINDOWS平臺上強大的數據庫平臺)SERVER服務;
這樣我們就可以通過限制SQLSERVER用戶的權限來控制SQLSERVER擴展存儲過程的權限。
網站題目:sqlserver審核,sqlserver登錄審核
分享路徑:http://vcdvsql.cn/article14/dsdjege.html
成都網站建設公司_創新互聯,為您提供品牌網站制作、網站導航、靜態網站、App設計、微信小程序、Google
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯