MySQL數(shù)據(jù)克隆的用戶權(quán)限設(shè)計(jì)
最近完成了初版的數(shù)據(jù)邏輯備份恢復(fù)的功能,和業(yè)務(wù)方做了一些交流和演示,發(fā)現(xiàn)他們對(duì)于備份恢復(fù)側(cè)的一些東東還是不夠敏感,因?yàn)橐驗(yàn)橐恍┬g(shù)語(yǔ)的差異,他們不大理解所謂的備份恢復(fù)能干什么,所以我們做了一些討論,最后決定改為“數(shù)據(jù)克隆”。
1.產(chǎn)品定位:
數(shù)據(jù)克隆是高效,安全的從通過(guò)從線上指定數(shù)據(jù)庫(kù)/表克隆數(shù)據(jù),從而快速構(gòu)建虛擬環(huán)境,提供更高效的數(shù)據(jù)交付服務(wù)。從效率上可以支持業(yè)務(wù)自助提取數(shù)據(jù),分鐘級(jí)快速構(gòu)建環(huán)境,可以通過(guò)workbench等工具訪問(wèn)數(shù)據(jù),整個(gè)過(guò)程基本不需要DBA手工操作介入。從安全上,支持?jǐn)?shù)據(jù)操作日志審計(jì),提供庫(kù)/表訪問(wèn)過(guò)濾,隨機(jī)虛擬環(huán)境和臨時(shí)密碼交付,此外會(huì)對(duì)虛擬環(huán)境使用時(shí)長(zhǎng)進(jìn)行限制,盡可能保證數(shù)據(jù)的使用安全。
2.適用場(chǎng)景:
目前數(shù)據(jù)克隆功能支持如下的場(chǎng)景:
1)線上配置數(shù)據(jù)的快速查看
2)提取線上表結(jié)構(gòu)
3)日志數(shù)據(jù)查詢,線上大表
4)線上SQL異常,快速構(gòu)建虛擬環(huán)境進(jìn)行SQL優(yōu)化,壓測(cè)等
5)指定大表的變更和數(shù)據(jù)操作影響評(píng)估
6)數(shù)據(jù)補(bǔ)丁合并,基于業(yè)務(wù)邏輯的數(shù)據(jù)操作和數(shù)據(jù)補(bǔ)丁整理
整個(gè)實(shí)現(xiàn)的過(guò)程有很多考慮的細(xì)節(jié),不過(guò)還是在設(shè)計(jì)和實(shí)現(xiàn)中由同事和我一并解決了。
到了交付的時(shí)機(jī)了,我們想到還有一個(gè)關(guān)鍵的地方需要補(bǔ)充,那就是數(shù)據(jù)庫(kù)和用戶的權(quán)限關(guān)聯(lián),也就意味著每個(gè)人可以看到和使用的數(shù)據(jù)庫(kù)應(yīng)該是不大一樣的,因?yàn)樽鲆恍?quán)限隔離,所以接下來(lái)我會(huì)說(shuō)說(shuō)數(shù)據(jù)克隆方向的用戶權(quán)限設(shè)計(jì)。
數(shù)據(jù)克隆的用戶權(quán)限設(shè)計(jì)是面向業(yè)務(wù)使用的基礎(chǔ)功能,目前對(duì)于用戶權(quán)限的設(shè)計(jì)可以基于數(shù)據(jù)庫(kù)級(jí)別。
權(quán)限的實(shí)現(xiàn)可以分兩個(gè)階段來(lái)完成:
1)數(shù)據(jù)初始化階段,可以使用用戶組批量初始化的方式,部分?jǐn)?shù)據(jù)可以從工單歷史中獲取
2)定制化配置階段,根據(jù)業(yè)務(wù)需求變更和組織架構(gòu)調(diào)整進(jìn)行數(shù)據(jù)庫(kù)和用戶映射關(guān)系的微調(diào)
其中,
實(shí)例信息和庫(kù)信息可以基于數(shù)據(jù)庫(kù)基線表 mysql_db_baseline
用戶組信息和用戶信息可以基于用戶表 user_info
數(shù)據(jù)庫(kù)-用戶關(guān)系表需要新建,表名為:mysql_db_user_rel(id,ip_addr,db_port,db_name,user_id)
需要實(shí)現(xiàn)四個(gè)子功能:
1)數(shù)據(jù)庫(kù)-用戶關(guān)系映射,實(shí)現(xiàn)單一數(shù)據(jù)庫(kù)和單一用戶的關(guān)系,在關(guān)系表中為一條記錄
2)數(shù)據(jù)庫(kù)-用戶關(guān)系列表,通過(guò)數(shù)據(jù)庫(kù)維度(IP+端口+數(shù)據(jù)庫(kù)名)查看相關(guān)用戶列表信息
3)數(shù)據(jù)庫(kù)-用戶組關(guān)系映射,實(shí)現(xiàn)單一數(shù)據(jù)庫(kù)和單一用戶組的關(guān)系,具體邏輯為:
a) 輸入數(shù)據(jù)庫(kù)信息(IP+端口+數(shù)據(jù)庫(kù)名),UserID
b) 根據(jù)UserID關(guān)聯(lián)用戶組信息
c) 根據(jù)用戶組信息得到組內(nèi)的UserID列表
d) 循環(huán)用戶列表,根據(jù)數(shù)據(jù)庫(kù)-用戶關(guān)系建立映射,需要考慮重復(fù)記錄的過(guò)濾
4)實(shí)例列表信息,根據(jù)用戶UserID得到歸屬的實(shí)例列表,具體邏輯為:
a) 輸入U(xiǎn)serID
b) 根據(jù)UserID在數(shù)據(jù)庫(kù)-用戶關(guān)系表中得到相關(guān)的數(shù)據(jù)庫(kù)列表,進(jìn)一步過(guò)濾得到實(shí)例IP+端口信息
本文轉(zhuǎn)載自微信公眾號(hào)「楊建榮的學(xué)習(xí)筆記」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系楊建榮的學(xué)習(xí)筆記公眾號(hào)。