如何配置資料庫可提高其安全性
⑴ 怎麼保證企業資料庫的安全有哪些安全措施
制定一個成功的資料庫安全策略的關鍵在於你要了解為什麼要保護資料庫,保護哪個資料庫,以及如何最好的保護數據以應對所有類型的威脅,遵從各種規范——如SOX、HIPAA、PCI DSS、GLBA 和歐盟法令。在最新的研究中,建議企業按照以下三點來建立完整的資料庫安全策略:
1、建立一個集身份驗證、授權、訪問控制、發現、分類,以及補丁管理於一體的堅實基礎。
了解哪些資料庫包含敏感數據是資料庫安全戰略的基本要求。企業應對所有的資料庫採取一個全面的庫存管理,包括生產和非生產的,並且遵循相同的安全政策給它們劃分類別。所有的資料庫,尤其是那些存有私人數據的資料庫,應該有強的認證、授權和訪問控制,即使應用層已經完成了認證和授權。缺乏這些堅實基礎會削弱審計、監察和加密等其他的安全措施。
此外,如果不能每季度給所有的關鍵資料庫打補丁,那麼至少半年一次,以消除已知的漏洞。使用滾動補丁或從資料庫管理系統(DBMS)的供應商和其他廠商那裡收集信息,以盡量減少應用補丁的停機時間。始終在測試環境下測試安全補丁,定期運行測試腳本,以確保修補程序不影響應用程序的功能或性能。
2、使用具有數據屏蔽、加密和變更管理等功能的預防措施
在建立了一個堅實和基本的資料庫安全策略後,就應該開始採取預防措施,以保護重要的資料庫。這樣就為生產和非生產資料庫提供了一個保護層。數據隱私不隨著生產系統而停止,它也需要擴展到非生產環境,包括測試、開發、質量保證(QA)、分階段和訓練,基本上所有的私有數據都可以駐留。資料庫安全專業人士應該評估在測試環境中或外包應用開發中用數據屏蔽和測試數據生成來保護私有數據的效果。
使用網路加密以防止數據暴露給在監聽網路流量或數據靜止加密的窺視者(他們關注存儲在資料庫中的數據)。當數據針對不同的威脅,這些加密方法可以實現相互獨立。通常情況下,也不會對應用程序的功能有影響。
保護關鍵資料庫的結構要按照標准化的變更管理程序來進行。在過去,對生產環境中的計劃或其它資料庫進行變更時需要關閉資料庫,但新版本的資料庫管理系統允許在聯機時進行這些更改,這就帶來了新的安全風險。一個標准化的變更管理程序能確保只有管理員在得到管理部門批准後才能改變生產資料庫並且跟蹤所有資料庫的變更。機構還應該更新自己的備份和可行性計劃,以處理數據或元數據因這些變更而發生的改變。
3、建立具有審計、監測和漏洞評估功能的資料庫入侵檢測系統
當重要數據發生意外變化或者檢測到可疑數據時,有必要進行一個快速的調查來查看發生了什麼事情。資料庫里的數據和元數據可以被訪問、更改甚至是刪除,而且這些都可以在幾秒鍾的時間內完成。通過資料庫審計,我們能夠發現「是誰改變了數據」和「這些數據是什麼時候被改變的」等問題。為了支持之前提到的管理條例標准,安全和風險管理的專業人士應該追蹤私人數據的所有訪問途徑和變化情況,這些私人數據包括:信用卡卡號、社會安全卡卡號以及重要的資料庫的名稱和地址等信息。如果私人數據在沒有授權的情況下被更改或者被訪問,機構應該追究負責人的責任。最後,可以使用漏洞評估報告來確定資料庫的安全空白地帶,諸如弱效密碼、過多的優先訪問權、增加資料庫管理員以及安全群組監測。
牢記安全政策、安全標准、角色分離和可用性
資料庫安全策略不僅關注審計和監測,它也是一個端到端的過程,致力於減少風險、達到管理條例的要求以及防禦來自內部和外部的各種攻擊。資料庫安全需要把注意力更多地放在填補安全空白、與其他安全政策協作以及使安全方式正式化上。在草擬你的安全策略時,要使你的資料庫安全政策與信息安全政策一致;要注意行業安全標准;要強調角色分離;要清楚描述出數據恢復和數據使用的步驟。
⑵ Mysql資料庫的安全配置、實用技巧
1、前言
MySQL 是完全網路化的跨平台關系型資料庫系統,同時是具有客戶機/伺服器體系結構的分布式資料庫管理系統。它具有功能強、使用簡便、管理方便、運行速度快、安全可靠性強等優點,用戶可利用許多語言編寫訪問MySQL 資料庫的程序,特別是與PHP更是黃金組合,運用十分廣泛。
由於MySQL是多平台的資料庫,它的默認配置要考慮各種情況下都能適用,所以在我們自己的使用環境下應該進行進一步的安全加固。作為一個MySQL的系統管理員,我們有責任維護MySQL資料庫系統的數據安全性和完整性。
MySQL資料庫的安全配置必須從兩個方面入手,系統內部安全和外部網路安全,另外我們還將簡單介紹編程時要注意的一些問題以及一些小竅門。
2、系統內部安全
首先簡單介紹一下MySQL資料庫目錄結構。MySQL安裝好,運行了mysql_db_install腳本以後就會建立數據目錄和姿手初始化資料庫。如果我們用MySQL源碼包安裝,而且安裝目錄是/usr/local/mysql,那麼數據目錄一般會是/usr/local/mysql/var。資料庫系統由一系列資料庫組成,每個資料庫包含一系列資料庫表。MySQL是用資料庫名在數據目錄建立建立一個資料庫目錄,各資料庫表分別以資料庫表名作為文件名,擴展名分別為MYD、MYI、frm的三個文件放到資料庫目錄中。
MySQL的授權表給資料庫的訪問提供了靈活的許可權控制,但是如果本地用戶擁有對庫文件的讀許可權的話,攻擊者只需把資料庫目錄打包拷走,謹哪然後拷到自己本機的數據目錄下就祥冊碼能訪問竊取的資料庫。所以MySQL所在的主機的安全性是最首要的問題,如果主機不安全,被攻擊者控制,那麼MySQL的安全性也無從談起。其次就是數據目錄和數據文件的安全性,也就是許可權設置問題。
從MySQL主站一些老的binary發行版來看,3.21.xx版本中數據目錄的屬性是775,這樣非常危險,任何本地用戶都可以讀數據目錄,所以資料庫文件很不安全。3.22.xx版本中數據目錄的屬性是770,這種屬性也有些危險,本地的同組用戶既能讀也能寫,所以數據文件也不安全。3.23.xx版本數據目錄的屬性是700,這樣就比較好,只有啟動資料庫的用戶可以讀寫資料庫文件,保證了本地數據文件的安全。
如果啟動MySQL資料庫的用戶是mysql,那麼象如下的目錄和文件的是安全的,請注意數據目錄及下面的屬性:
shellls -l /usr/local/mysql
total 40
drwxrwxr-x 2 root root 4096 Feb 27 20:07 bin
drwxrwxr-x 3 root root 4096 Feb 27 20:07 include
drwxrwxr-x 2 root root 4096 Feb 27 20:07 info drwxrwxr-x 3 root root 4096 Feb 27 20:07 lib drwxrwxr-x 2 root root 4096 Feb 27 20:07 libexec drwxrwxr-x 3 root root 4096 Feb 27 20:07 man drwxrwxr-x 6 root root 4096 Feb 27 20:07 mysql-test drwxrwxr-x 3 root root 4096 Feb 27 20:07 share drwxrwxr-x 7 root root 4096 Feb 27 20:07 sql-bench drwx------ 4 mysql mysql 4096 Feb 27 20:07 var
shellls -l /usr/local/mysql/var
total 8
drwx------ 2 mysql mysql 4096 Feb 27 20:08 mysql
drwx------ 2 mysql mysql 4096 Feb 27 20:08 test
shellls -l /usr/local/mysql/var/mysql
total 104
-rw------- 1 mysql mysql 0 Feb 27 20:08 columns_priv.MYD
-rw------- 1 mysql mysql 1024 Feb 27 20:08 columns_priv.MYI
-rw------- 1 mysql mysql 8778 Feb 27 20:08 columns_priv.frm
-rw------- 1 mysql mysql 302 Feb 27 20:08 db.MYD
-rw------- 1 mysql mysql 3072 Feb 27 20:08 db.MYI
-rw------- 1 mysql mysql 8982 Feb 27 20:08 db.frm
-rw------- 1 mysql mysql 0 Feb 27 20:08 func.MYD
-rw------- 1 mysql mysql 1024 Feb 27 20:08 func.MYI
-rw------- 1 mysql mysql 8641 Feb 27 20:08 func.frm
-rw------- 1 mysql mysql 0 Feb 27 20:08 host.MYD
-rw------- 1 mysql mysql 1024 Feb 27 20:08 host.MYI
-rw------- 1 mysql mysql 8958 Feb 27 20:08 host.frm
-rw------- 1 mysql mysql 0 Feb 27 20:08 tables_priv.MYD
-rw------- 1 mysql mysql 1024 Feb 27 20:08 tables_priv.MYI
-rw------- 1 mysql mysql 8877 Feb 27 20:08 tables_priv.frm
-rw------- 1 mysql mysql 428 Feb 27 20:08 user.MYD
-rw------- 1 mysql mysql 2048 Feb 27 20:08 user.MYI
-rw------- 1 mysql mysql 9148 Feb 27 20:08 user.frm
如果這些文件的屬主及屬性不是這樣,請用以下兩個命令修正之:
shellchown -R mysql.mysql /usr/local/mysql/var
shellchmod -R go-rwx /usr/local/mysql/var
⑶ 資料庫系統的主要安全措施有哪些
方法一、資料庫數據加密
數據加密可以有效防止資料庫信息失密性的有效手段。通常加密的方法有替換、置換、混合加密等。雖然通過密鑰的保護是資料庫加密技術的重要手段,但如果採用同種的密鑰源衫來管理所有數據的話,對於一些不法用戶可以採用暴力破解的方法進行攻擊。
但通過不同版本的密鑰對不同的數據信息進行加密處理的話,可以大大提高資料庫數據的安全強度。這種方式主要的表現形式是在解密時必須對應匹配的密鑰版本,加密時就盡量的挑選最新技術的版本。
方法二、強制存取控制
為了保證資料庫系統的安全性,通常採取的是強制存取檢測方式,它是保證資料庫系統安全的重要的一環。強制存取控制是通過對每一個數據進行嚴格的分配不同的密級,例如政府,信息部門。在強制存取控制中,DBMS所管理的全部實體被分為主體和客體兩大類。主體是系統中的活動實體,它不僅包括DBMS被管理的實際用戶,也包括代表用戶的各進程。
客體是系統中的被動實體,是受主體操縱的,包括文件、基表、索引、視圖等等。對於主體和客體,DBMS為它們每個實例(值)指派一個敏感度標記。主客體各自被賦予相應的安全級,主體的安全級反映主體晌裂殲的可信度,而客體的安全級反映客體所含信息的敏感程度。對於病毒和惡意軟體的攻擊可以通過強制存取控制策略進行防範。但強制存取控制並不能從根本上避免攻擊的問題,但可以有從較高安全性級別程序向較低安全性級別程序進行信息傳遞。
方法三、審計日誌
審計是將用戶操作資料庫的所有記錄存儲在審計日誌(AuditLog)中,它對將來出現問題時可以方便調查和分析有重要的作用。對於系統出現問題,可以很快得找出非法存取數據的時間、內容以及相關的人。從軟體工程的角度上看,目前通過存取控制、數據加密的方式對數據進行保護是不夠的。因此,作為重要的補充手段,審計方式是安全的資料庫系統不可缺少的一部分,宴沖也是資料庫系統的最後一道重要的安全防線。
⑷ 如何提高mysql的安全性
一 作為最流行的開源資料庫引擎,MySQL本身是非常安全的。即便如此,你仍然需要添加額外的安全層來保護你的MySQL資料庫不受攻擊,畢竟任何經營網上
在線業務的人都不想冒資料庫受到損壞的風險。接下來,我們將介紹一些實用的辦法,你可以利用這些辦法來保護MySQL資料庫,以便加強網站的安全性。
二 保護操作系統
確保操作系統的安全是保護資料庫安全的前提,因為如果整個運行環境不安全,那麼網站上所有的東西都脆弱,很容易暴露於攻擊者。為了維護操作系統和MySQL伺服器,你可以使用以下方法:
2.1 主機資料庫伺服器和web伺服器分別在不同的物理機器上,如果可能,在一個單獨的伺服器上運行資料庫伺服器,以預防由其他應用程序或服務的漏洞造成的伺服器問滑世知題。
安裝殺毒軟體,防火牆以及所有推薦的補丁和更新,防火牆能有效地把流量過濾到MySQL伺服器。為了更好的提高安全性,你還可以實行入口封鎖。
禁用所有不必要的服務,而且這樣的服務越少越好。
2.2 保護所有帳戶和密碼
攻擊者侵入MySQL資料庫最常見的一種方法是竊取有安全隱患的賬戶信息。為了降低出現這種風險的可能性,你不妨試一試下面的方法:
2.2.1. 給所有MySQL賬戶設置信消密碼
客戶程序並不是每次都能識別用戶,因此,如果用戶知道資料庫名但是沒有這個用戶名的密碼,那他可以指定任何其他用戶名連接到MySQL資料庫。讓每個MySQL用戶名都設置密碼,這樣一來,要想利用匿名賬戶建立連接將會變得很困難。
2.2.2. 不要使用根用戶運行MySQL伺服器
在安裝MySQL的時候,默認情況下創建了一個命名為「root」的管理用戶。每個人都知道這一點,所以攻擊者通常試圖侵入這個「root」用戶來獲取訪問許可權。為了保障這個重要帳戶的安全,你需要給它重新命名,然後更改一個長並且復雜的密碼。
2.2.3你可以在MySQL控制台使用mysql> RENAME USER root TO new_username;
指令給根用戶重命名,使用mysql> SET PASSWORD FOR 'username'@'%hostname' =
PASSWORD('newpassword');//這是很重要的一條命令
指令來修改密碼。
三. 減少管理員賬戶
管理員賬戶越多,風險越大,所以你應該保返世持盡可能最少的帳戶數量,只有為那些真正需要它的人創建賬戶。此外,記得要刪除未使用的和匿名的賬戶。如果你有很多管理員賬戶,那你需要定期檢查並清理那些不必要的賬戶。
四. 加強所有的密碼
除了管理員帳戶,你還需要加強所有其他用戶的密碼。你可以檢查所有的用戶名和密碼,必要的時候你還可以重置安全強度低的賬戶密碼。雖說這樣做會有點費時,但卻是有必要的。
五 限制資料庫許可權
每個用戶都應該被授予適當的許可權以便資料庫能夠正常運行,但這樣一來也加大了資料庫的安全隱患。就資料庫許可權而言,我們有以下幾點建議:
5.1. 不要授予非管理員用戶文件/高級/程序許可權
文件,高級和程序許可權都不應該被濫用。文件許可權讓用戶可以在文件系統中的任何一個地方編寫文件,而程序許可權讓用戶在任何時候都能夠查看伺服器活動,終止客戶端連接甚至更改伺服器操作。為了你的資料庫安全,這些許可權只能授予給管理員賬戶。
5.2. 限制或禁用顯示資料庫許可權
顯示資料庫特權可以用於收集資料庫信息,所以攻擊者通常利用它來竊取數據並准備進一步攻擊。你應該把這個許可權授予那些真正需要的人,或者直接禁用這個權
限,你只需要把skip-show-database添加到MySQL資料庫中的/etc/my.cnf配置文件中。對於Windows操作系統來說,則
需要添加到my.ini文件中。
5.3. 限制管理員和所有其他用戶的許可權
即使是管理員,也不要在同一賬戶中授予所有許可權。因此我們建議你最好降低管理員賬戶訪問數據的許可權。至於其他的用戶,你最好檢查所有他們擁有的許可權,以確保一切都是合適的。
六 刪除風險組件
MySQL資料庫的默認配置有一些不必要的組件,你可以考慮以下建議:
6.1. 禁用LOAD DATA LOCAL INFILE指令
這個命令允許用戶讀取本地文件甚至訪問其他操作系統上的文件,這可能幫助攻擊者收集重要的信息並利用應用程序的漏洞侵入你的資料庫。你需要做的是把set-variable=local-infile=0插入到MySQL資料庫的my.cnf文件中,來禁用這個指令。
6.2. 刪除測試資料庫
有一個默認的「測試」資料庫用於測試目的。由於這個資料庫有安全風險,匿名用戶也可以訪問,你應該使用mysql> DROP database test;指令盡快把它清除掉。
6.3. 刪除歷史文件
MySQL伺服器有一個歷史文件,它可以幫助你在安裝出錯的時候找到問題所在。歷史文件包含敏感信息,比如說密碼,如果這些信息被攻擊者獲得,那麼將會給
你的資料庫帶來巨大的安全隱患。在安裝成功後,歷史文件並沒有什麼用,因此你可以使用cat /dev/null >
~/.mysql_history指令來刪除文件當中的內容。
七 限制遠程訪問MySQL伺服器
對於大多數用戶來說,不需要通過不安全的開放網路來訪問MySQL伺服器。你可以通過配置防火牆或硬體,或者迫使MySQL只聽從localhost來限制主機。此外,需要SSH隧道才能進行遠程訪問。
八 如果你想僅僅從本地主機來限制用戶建立連接,你需要在在配置文件中添加bind-address=127.0.0.1。
8.1利用日誌記錄
啟用日誌記錄讓你可以檢測伺服器上的活動,這樣你就可以分析失敗的登錄嘗試和敏感文件的訪問記錄,以便了解是否存在向你的伺服器和資料庫發起的惡意活動。
你只需要把log =/var/log/mylogfile指令添加到MySQL配置文件中,就可以手動啟用日誌記錄功能。
8.2至於日誌記錄,需要注意以下兩點:
8.2.1日誌記錄僅適用於查詢數量有限的資料庫伺服器。對於信息量大的伺服器,這可能會導致高過載。
8.2.2由於「hostname.err」文件包含敏感數據表名和密碼,只有「root」和「mysql」才有訪問和記錄這個文件的許可權。
⑸ 如何確保數據安全
1.數據脫敏
數據脫敏是保證數據安全的最基本的手段,脫敏方法有很多,最常用的就是使用可逆加密演算法,對入倉每一個敏感欄位都需要加密。比如手機號,郵箱,身份證號,銀行卡號等信息
2.數據許可權控制
需要開發一套完善的數據許可權控制體系,最好是能做到欄位級別,有些表無關人員是不需要查詢的,所以不需要任何許可權,有些表部分人需要查詢,除數據工程師外,其他人均需要通過OA流程進行許可權審批,需要查看哪些表的哪些欄位,為什麼需要這個許可權等信息都需要審批存檔。
3.程序檢查
有些欄位明顯是敏感數據,比如身份證號,手機號等信息,但是業務庫並沒有加密,而且從欄位名來看,也很難看出是敏感信息,所以抽取到數據倉庫後需要使用程序去統一檢測是否有敏感數據,然後根據檢測結果讓對應負責人去確認是否真的是敏感欄位,是否需要加密等。
4.流程化操作
流程化主要是體現在公司內部取數或者外部項目數據同步,取數的時候如果數據量很大或者包含了敏感信息,是需要提OA 審批流程的,讓大家知道誰要取這些數據,取這些數據的意義在哪,出了問題可以回溯,快速定位到責任人。開發外部項目的時候,不同公司之間的數據同步,是需要由甲方出具同意書的,否則的話風險太大。
5.敏感SQL實時審查及操作日誌分析
及時發現敏感sql的執行並詢問責任人,事後分析操作日誌,查出有問題的操作。
6.部門重視數據安全
把數據安全當做一項KPI去考核,讓大家積極的參與到數據安全管理當中去。