阿里云數(shù)據(jù)庫RDS MySQL的數(shù)據(jù)安全預(yù)防與恢復(fù)

來源: 簡書
作者:阿里云數(shù)據(jù)庫
時(shí)間:2021-07-22
17434
數(shù)據(jù)庫往往是企業(yè)最為核心的數(shù)據(jù)保護(hù)對象,對數(shù)據(jù)庫系統(tǒng)安全的保護(hù),對數(shù)據(jù)庫服務(wù)器和數(shù)據(jù)庫中的數(shù)據(jù)、應(yīng)用、存儲的安全保護(hù)對企業(yè)來說至關(guān)重要,盡管我們用了很多技術(shù)手段,也很可能因?yàn)楣芾砩系氖д`導(dǎo)致嚴(yán)重后果,我們需要用技術(shù)和管理組合手段,在數(shù)據(jù)庫進(jìn)行使用之前,就需要對敏感權(quán)限進(jìn)行管控,確定使用環(huán)境的安全,并做好全面的預(yù)防措施;在數(shù)據(jù)庫的使用過程中,更是需要謹(jǐn)慎操作,假設(shè)真的出了問題,還可以進(jìn)行數(shù)據(jù)的恢復(fù),以防止數(shù)據(jù)庫系統(tǒng)及其數(shù)據(jù)遭到泄露、篡改或破壞。

前言

數(shù)據(jù)庫往往是企業(yè)最為核心的數(shù)據(jù)保護(hù)對象,對數(shù)據(jù)庫系統(tǒng)安全的保護(hù),對數(shù)據(jù)庫服務(wù)器和數(shù)據(jù)庫中的數(shù)據(jù)、應(yīng)用、存儲的安全保護(hù)對企業(yè)來說至關(guān)重要,盡管我們用了很多技術(shù)手段,也很可能因?yàn)楣芾砩系氖д`導(dǎo)致嚴(yán)重后果,我們需要用技術(shù)和管理組合手段,在數(shù)據(jù)庫進(jìn)行使用之前,就需要對敏感權(quán)限進(jìn)行管控,確定使用環(huán)境的安全,并做好全面的預(yù)防措施;在數(shù)據(jù)庫的使用過程中,更是需要謹(jǐn)慎操作,假設(shè)真的出了問題,還可以進(jìn)行數(shù)據(jù)的恢復(fù),以防止數(shù)據(jù)庫系統(tǒng)及其數(shù)據(jù)遭到泄露、篡改或破壞。

事前預(yù)防

事前預(yù)防大于事后處理,對數(shù)據(jù)庫的管理來說,更是要防患于未然。您可以通過以下方式進(jìn)行數(shù)據(jù)安全的事前預(yù)防:
?  權(quán)限隔離
?  環(huán)境隔離
?  內(nèi)核回收站
?  設(shè)置實(shí)例備份規(guī)則
?  使用數(shù)據(jù)庫管理DMS
?  使用備份服務(wù)DBS

權(quán)限隔離

您可以通過設(shè)置高權(quán)限賬號和普通賬號進(jìn)行數(shù)據(jù)權(quán)限隔離。包括讀寫權(quán)限,DML權(quán)限,DDL權(quán)限,創(chuàng)建表,修改表,等,除了只讀權(quán)限之外都需要進(jìn)行管理和關(guān)注。權(quán)限說明見下圖:

可在數(shù)據(jù)庫管理界面配置不同的權(quán)限。

更多信息請參見創(chuàng)建數(shù)據(jù)庫賬號和授權(quán)服務(wù)賬號幫助文檔:https://help.aliyun.com/document_detail/87038.html

環(huán)境隔離

對環(huán)境的隔離也是同樣重要,測試環(huán)境、開發(fā)環(huán)境、生產(chǎn)環(huán)境要分開,不要共用一套數(shù)據(jù)庫。

內(nèi)核回收站

第三個(gè)預(yù)防的重點(diǎn)是內(nèi)核上面的回收站,當(dāng)執(zhí)行drop時(shí),與表無關(guān)的對象會做保留,防止誤刪。

MySQL 8.0的回收機(jī)制
執(zhí)行DROP TABLE/DATABASE語句時(shí),只保留相關(guān)的表對象,并移動到專門的recycle bin目錄中。其它對象的刪除策略如下:

  • 如果是與表無關(guān)的對象,根據(jù)操作語句決定是否保留,不做回收。

  • 如果是表的附屬對象,可能會修改表數(shù)據(jù)的,做刪除處理,例如Trigger和Foreign key。但Column statistics不做清理,隨表進(jìn)入回收站。

MySQL 8.0的清理機(jī)制
回收站會啟動一個(gè)后臺線程,來異步清理超過recycle_bin_retention時(shí)間的表對象。在清理回收站表的時(shí)候,如果遇到大表,會再啟動一個(gè)后臺線程異步刪除大表。

設(shè)置實(shí)例備份規(guī)則

還可以對數(shù)據(jù)進(jìn)行備份來預(yù)防潛在的風(fēng)險(xiǎn)。實(shí)例備份規(guī)則為默認(rèn)按照整實(shí)例進(jìn)行備份和可以按照表進(jìn)行備份。如下圖所示:

具體操作,參見幫助文檔:https://help.aliyun.com/document_detail/130152.html

使用數(shù)據(jù)庫管理DMS進(jìn)行安全預(yù)防

在事前預(yù)防中,阿里云提供強(qiáng)大的數(shù)據(jù)庫管理DMS服務(wù)和備份恢復(fù)DBS服務(wù)。DMS是一款強(qiáng)大的數(shù)據(jù)庫管理和設(shè)計(jì)工具,直觀的GUI開發(fā)環(huán)境讓用戶簡單管理多達(dá)25種數(shù)據(jù)庫,包括表結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)操作、數(shù)據(jù)開發(fā)及性能診斷優(yōu)化等操作。DMS通過研發(fā)規(guī)范、研發(fā)流程、權(quán)限控制(可控制到列級別、行級別)、操作攔截、數(shù)據(jù)脫敏、流程審批、安全審計(jì)及變更回滾等功能有效保障數(shù)據(jù)安全。

DMS是一種新的工作模式:
?  多種角色參與整個(gè)研發(fā)流程,包括管理員、DBA、安全管理員及開發(fā)、測試、產(chǎn)品、運(yùn)營、財(cái)務(wù)等。
?  可消除集中管控的人員瓶頸、減少溝通成本、規(guī)范化管理減少故障誤操作、變更周期可控、業(yè)務(wù)迭代速度快、提升研發(fā)效率。

對接企業(yè)賬號系統(tǒng),數(shù)據(jù)安全解決方案-從“審計(jì)”到“攔截”。

可控的SQL操作包含:全局權(quán)限管控、風(fēng)險(xiǎn)識別、數(shù)據(jù)脫敏、操作審計(jì)、安全規(guī)則引擎。

可進(jìn)行靈活的安全規(guī)則設(shè)置:

變更穩(wěn)定-覆蓋數(shù)據(jù)變更、結(jié)構(gòu)變更、代碼發(fā)布的全流程把控。尤其是對于大批量的數(shù)據(jù)變更,大表結(jié)構(gòu)變更等,會有針對性的流程把控和精細(xì)化的管理,在不影響業(yè)務(wù)的情況下,提升整體的安全性。

使用阿里云備份服務(wù)DBS

備份服務(wù)DBS為數(shù)據(jù)庫提供連續(xù)數(shù)據(jù)保護(hù)、低成本的備份服務(wù)。它可以為多種環(huán)境的數(shù)據(jù)提供強(qiáng)有力的保護(hù),包括企業(yè)數(shù)據(jù)中心、其他云廠商、混合云及公共云。RDS備份的數(shù)據(jù)是可見的,如果有數(shù)據(jù)分析的需求還可以用云原生數(shù)據(jù)湖進(jìn)行支持,整個(gè)產(chǎn)品生態(tài)是打通和健全的。

產(chǎn)品功能:
?  可恢復(fù)任1秒數(shù)據(jù)
實(shí)例、單庫、多表、單表,備份及恢復(fù)粒度自由選擇,RTO大幅降低,備份有效性實(shí)時(shí)驗(yàn)證。
?  安全加密
無論傳輸,還是存儲使用最嚴(yán)苛的加密技術(shù),保護(hù)用戶數(shù)據(jù)安全。
?  低成本,免運(yùn)維
低成本異地備份,讓企業(yè)快速滿足三級等保要求,無需為災(zāi)備提供前期成本,配置到運(yùn)行只需幾分鐘。
?  多環(huán)境支持
支持自建IDC、云上自建數(shù)據(jù)庫、其他云環(huán)境的數(shù)據(jù)庫備份。

備份服務(wù)DBS與RDS自帶備份的區(qū)別:
?  針對RDS數(shù)據(jù)庫,DBS提供轉(zhuǎn)儲備份和邏輯備份,滿足RDS客戶的異地備份和靈活備份訴求。
?  針對RDS數(shù)據(jù)庫,RDS提供物理備份,滿足RDS客戶的本地備份和快速恢復(fù)訴求。

DBS控制臺入口:

詳細(xì)內(nèi)容請參見幫助文檔:https://www.aliyun.com/product/dbs
和用戶指南:https://help.aliyun.com/document_detail/69077.html

事中謹(jǐn)慎

即使非常謹(jǐn)慎,數(shù)據(jù)庫在現(xiàn)場運(yùn)行時(shí)是不可能不對數(shù)據(jù)進(jìn)行查詢、修改和刪除的,我們不能因噎廢食,仍然要進(jìn)行這些看似有風(fēng)險(xiǎn)的操作,但是我們可以采取以下措施,讓整個(gè)數(shù)據(jù)庫的使用過程更加安全。
?  使用內(nèi)核回收站
?  操作隔離
?  操作備份

使用內(nèi)核回收站

如果要使用DROP語句,可以在操作之前可以先打開回收站,回收站是可以進(jìn)行清理和查詢的?;厥照緯衖d與原表相對應(yīng),并會對過程進(jìn)行記錄。
以下示例是操作以MySQL 8.0為例進(jìn)行說明:
SET SESSION RECYCLE_BIN=ON;--------------------打開會話級回收站CALL DBMS_RECYCLE.SHOW_TABLES();--------------看回收站里的表DROP TABLE tablename;--------------------------------------------------刪除表CALL DBMS_RECYCLE.PURGE_TABLE (‘<TABLE>’);-----清理回收站里的表
表示例:
mysql> call dbms_recycle.show_tables();+-----------------+---------------+---------------+--------------+---------------------+---------------------+| SCHEMA | TABLE | ORIGIN_SCHEMA | ORIGIN_TABLE | RECYCLED_TIME | PURGE_TIME |+-----------------+---------------+---------------+--------------+---------------------+---------------------+| recycle_bin | __innodb_1063 | product_db | t1 | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 || recycle_bin | __innodb_1064 | product_db | t2 | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 || recycle_bin | __innodb_1065 | product_db | parent | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 || recycle_bin | __innodb_1066 | product_db | child | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 |+-----------------+---------------+---------------+--------------+---------------------+---------------------+4 rows in set (0.00 sec)

更多信息請參見幫助文檔:https://help.aliyun.com/document_detail/130152.html

操作隔離

如果我們要執(zhí)行DML類的操作,在執(zhí)行變更的時(shí)候最好走一下變更的流程。如果缺少這樣流程,大批量的操作語句最好有多人review。

注意:
1、業(yè)務(wù)相關(guān)的操作:一定帶WHERE條件語句,把執(zhí)行變更的范圍變到最小。
2、運(yùn)維/后臺相關(guān)操作
?  注意讀寫分離
針對數(shù)據(jù)統(tǒng)計(jì)分析類/定時(shí)任務(wù)類/大批量操作類
?  盡量避免業(yè)務(wù)高峰
?  多人Review保證正確性

操作備份

最好在每次操作執(zhí)行之前,都把數(shù)據(jù)備份一遍,這樣即使真正出現(xiàn)問題,也可以執(zhí)行回滾。

備份方法
每次執(zhí)行DML/DDL之前,導(dǎo)出執(zhí)行前的SQL,作為回滾腳本。

運(yùn)維/后臺相關(guān)操作
?  立即執(zhí)行
默認(rèn)開啟為“是”,提交即刻執(zhí)行;可按需指定在業(yè)務(wù)特定時(shí)間執(zhí)行。
?  事務(wù)控制
默認(rèn)不開啟為“否”,逐條提交,遇到失敗則終止但不回滾;開啟該功能遇到失敗則全部回滾(僅限D(zhuǎn)ML,DDL不在此范圍內(nèi))。
?  備份數(shù)據(jù)
默認(rèn)開啟為“是”,針對update、delete操作進(jìn)行將要影響數(shù)據(jù)的全記錄行,insert腳本生成附件。

幫助文檔:https://help.aliyun.com/document_detail/98818.html

事后恢復(fù)

即使我們非常謹(jǐn)慎,也不能百分百避免問題的發(fā)生,如果真的發(fā)生問題了,我們可以通過以下操作來進(jìn)行事后恢復(fù)。
?  DMS工單操作歷史。
?  DMS數(shù)據(jù)追蹤。
?  內(nèi)核回收站。
?  RDS克隆實(shí)例。
?  RDS庫/表恢復(fù)。
?  DBS恢復(fù)。

DMS工單操作歷史

如果您使用了阿里云數(shù)據(jù)管理DMS平臺,可以使用DMS查看工單操作歷史。

使用場景

?  MySQL 5.5/5.6/5.7/8.0
?  DELETE/UPDATE/INSERT
?  需要管控的數(shù)據(jù)庫實(shí)例開通了DMS安全協(xié)同管控模式

恢復(fù)方法

?  對于變更執(zhí)行后出現(xiàn)異常不符合訴求需要回滾的,可以直接在工單頁面內(nèi),選擇右側(cè)>工單操作歷史>查看備份,找到備份文件。
?  下載備份腳本下載,做相應(yīng)處理。
?  確認(rèn)數(shù)據(jù)滿足需求后,重新提交變更工單。
更多內(nèi)容請參見幫助文檔:https://help.aliyun.com/document_detail/63780.html

DMS數(shù)據(jù)追蹤

如果您不是通過DMS進(jìn)行的變更,也可以通過DMS進(jìn)行數(shù)據(jù)的追蹤,逆向解析Binlog,本地Binlog和本地清理后到OSS上的Binlog都可以追蹤。(前提在binlog仍然存在,一般云數(shù)據(jù)庫Binlog保留周期為7天,如需更長時(shí)間可在RDS控制臺按需調(diào)整)

使用場景

?  MySQL 5.5/5.6/5.7/8.0
?  DELETE/UPDATE/INSERT
?  少量

功能

?  在線搜索日志內(nèi)容,無需手工下載Binlog。
?  支持?jǐn)?shù)據(jù)的插入/更新/刪除日志搜索,無需手工解析Binlog。
?  支持逐條數(shù)據(jù)恢復(fù),無需手工生成回滾語句。

支持的Binlog

?  OSS Binlog(RDS會定時(shí)將Binlog備份到OSS上)。
?  本地?zé)酈inlog(數(shù)據(jù)庫服務(wù)器上Binlog)。

操作示例如下圖所示:

示例—少量數(shù)據(jù)追蹤

操作示例如下圖所示:

更多內(nèi)容請參見幫助文檔:https://help.aliyun.com/document_detail/126449.html

從回收站恢復(fù)

內(nèi)核支持從回收站進(jìn)行恢復(fù),我們只需要確認(rèn)回收站中有我們想要的表。

使用場景

?  MySQL 8.0
?  DROP TABLE/SCHEMA
?  其它對象的刪除
策略是:

  1. 與表無關(guān)的對象,比如 procedure,根據(jù)操作語句決定是否保留,不做回收。

  2. 表的附屬對象,比如 trigger,F(xiàn)oreign key,column statistics等,只要存在可能修改表數(shù)據(jù)的,做刪除,比如 trigger,F(xiàn)oreign key。但columns statistics不做清理,隨表進(jìn)入回收站。

找回方法

  • 查看回收站表

CALL DBMS_RECYCLE.SHOW_TABLES();--------------看回收站里的表。

  • 找回

CREATE TABLE SRC_SCHEMA.SRC_TABLE LIKE SCHEMA.TABLE;-------------------- 加粗部分是要替換的內(nèi)容。INSERT INTO SRC_SCHEMA.SRC_TABLE SELECT * FROM SCHEMA.TABLE; ----- 加粗部分是要替換的內(nèi)容。

示例—從回收站恢復(fù)T1的數(shù)據(jù)

mysql> call dbms_recycle.show_tables();+-----------------+---------------+---------------+--------------+---------------------+---------------------+| SCHEMA | TABLE | ORIGIN_SCHEMA | ORIGIN_TABLE | RECYCLED_TIME | PURGE_TIME |+-----------------+---------------+---------------+--------------+---------------------+---------------------+| recycle_bin | __innodb_1063 | product_db | t1 | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 || recycle_bin | __innodb_1064 | product_db | t2 | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 || recycle_bin | __innodb_1065 | product_db | parent | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 || recycle_bin | __innodb_1066 | product_db | child | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 |+-----------------+---------------+---------------+--------------+---------------------+---------------------+4 rows in set (0.00 sec)mysql>create table product_db.t1 like recycle_bin. __innodb_1063;mysql>insert into product_db.t1 select * from recycle_bin. __innodb_1063;

克隆實(shí)例

如果您還沒有使用DMS,也可以用控制臺上實(shí)例的備份來恢復(fù),克隆示例支持按照時(shí)間點(diǎn)或備份集恢復(fù),最安全的方式建議恢復(fù)到一個(gè)新實(shí)例,不在原實(shí)例原地恢復(fù)。

使用場景

  • 通過備份克隆出整個(gè)實(shí)例。

  • 所有誤操作(DDL/DML)。

還原方式

  • 指定時(shí)間點(diǎn)。

  • 指定備份集。

操作步驟

  1. 恢復(fù)到一個(gè)新實(shí)例。

  2. 驗(yàn)證數(shù)據(jù)準(zhǔn)確性。

  3. 將數(shù)據(jù)遷回原實(shí)例。

操作示例如下圖所示:

更多內(nèi)容請參見幫助文檔:https://help.aliyun.com/document_detail/96147.html

庫/表級別恢復(fù)

如果您之前設(shè)置了庫/表級別備份的話,您的誤操作如果只是一個(gè)庫或者表,那么您可以進(jìn)行庫/表級別恢復(fù),但是庫/表級別恢復(fù)有很多限制。

使用場景

  • 通過備份指定恢復(fù)誤刪的數(shù)據(jù)庫或表。

  • 所有誤操作(DDL/DML)。

操作示例如下圖所示:

限制事項(xiàng)

  • 必須打開庫/表級別備份。

  • 每次最多選擇50個(gè)庫/表。

  • 運(yùn)行中且沒有被鎖定。

  • 如果要按時(shí)間點(diǎn)進(jìn)行恢復(fù),需要確保日志備份已開啟。

  • 若要按備份集恢復(fù),則原實(shí)例必須至少有一個(gè)備份集。

更多內(nèi)容請參見幫助文檔:https://help.aliyun.com/document_detail/103175.html

從DBS恢復(fù)

如果您之前選擇了DBS備份,您就可以通過DBS進(jìn)行事后恢復(fù)。

使用場景

  • 支持整個(gè)實(shí)例、多個(gè)數(shù)據(jù)庫、單個(gè)數(shù)據(jù)庫、多張表或一張表恢復(fù)。

  • 支持秒級任意時(shí)間點(diǎn)恢復(fù),并且用戶可以靈活選擇恢復(fù)對象。

操作示例如下圖所示:

可以進(jìn)行選擇恢復(fù)操作的時(shí)間點(diǎn)等操作配置,操作示例如下圖所示:



立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于簡書,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對觀點(diǎn)贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
阿里云助力《誅仙世界》端游正式開服!
阿里云助力《誅仙世界》端游正式開服!
近?,完美世界游戲歷時(shí)多年打造的新國?仙俠MMORPG端游《誅仙世界》在阿?云上正式開服。
阿里云
云服務(wù)
2024-12-292024-12-29
一文詳解阿里云AI大基建
一文詳解阿里云AI大基建
面向AI時(shí)代,阿里云基礎(chǔ)設(shè)施是如何創(chuàng)新與發(fā)展的?計(jì)算、網(wǎng)絡(luò)、存儲、服務(wù)器、集群、可觀測等,阿里云全新升級的AI Infra到底有哪些重磅更新?
阿里云
云服務(wù)
2024-11-022024-11-02
AI時(shí)代云安全新范式,阿里云安全能力全線升級!
AI時(shí)代云安全新范式,阿里云安全能力全線升級!
AI時(shí)代,云安全面臨著新的挑戰(zhàn),不僅要持續(xù)面對以往的傳統(tǒng)問題,更需要全新理念落地于產(chǎn)品設(shè)計(jì)、技術(shù)演進(jìn)、架構(gòu)設(shè)計(jì),才能實(shí)現(xiàn)效果、性能、和成本的最優(yōu)解。
AI
阿里云
云服務(wù)
2024-09-272024-09-27
連續(xù)四年!阿里云領(lǐng)跑中國公有云大數(shù)據(jù)平臺
連續(xù)四年!阿里云領(lǐng)跑中國公有云大數(shù)據(jù)平臺
近日,國際數(shù)據(jù)公司(IDC)發(fā)布《中國大數(shù)據(jù)平臺市場份額,2023:數(shù)智融合時(shí)代的真正到來》報(bào)告——2023年中國大數(shù)據(jù)平臺公有云服務(wù)市場規(guī)模達(dá)72.2億元人民幣,其中阿里巴巴市場份額保持領(lǐng)先,占比達(dá)40.2%,連續(xù)四年排名第一。
阿里云
云服務(wù)
2024-09-182024-09-18
優(yōu)質(zhì)服務(wù)商推薦
更多