選擇:成本和安全?我都要!

來(lái)源:騰訊云數(shù)據(jù)庫(kù)
作者:騰訊云數(shù)據(jù)庫(kù)
時(shí)間:2022-05-10
2059
數(shù)據(jù)庫(kù)安全,是指以保護(hù)數(shù)據(jù)庫(kù)系統(tǒng)、數(shù)據(jù)庫(kù)服務(wù)器和數(shù)據(jù)庫(kù)中的數(shù)據(jù)、應(yīng)用、存儲(chǔ),以及相關(guān)網(wǎng)絡(luò)連接為目的,防止數(shù)據(jù)庫(kù)系統(tǒng)及其數(shù)據(jù)遭到泄露、篡改或破壞的安全技術(shù)。

數(shù)據(jù)庫(kù)安全,是指以保護(hù)數(shù)據(jù)庫(kù)系統(tǒng)、數(shù)據(jù)庫(kù)服務(wù)器和數(shù)據(jù)庫(kù)中的數(shù)據(jù)、應(yīng)用、存儲(chǔ),以及相關(guān)網(wǎng)絡(luò)連接為目的,防止數(shù)據(jù)庫(kù)系統(tǒng)及其數(shù)據(jù)遭到泄露、篡改或破壞的安全技術(shù)。

數(shù)據(jù)庫(kù)是企業(yè)最為核心的數(shù)據(jù)保護(hù)對(duì)象。與傳統(tǒng)的網(wǎng)絡(luò)安全防護(hù)體系不同,數(shù)據(jù)庫(kù)安全技術(shù)更加注重從客戶內(nèi)部的角度出發(fā)做安全,其安全要求包括了保密性、完整性和可用性,即CIA(Confidentiality, Integrity, Availability)的三個(gè)方面。

但對(duì)于傳統(tǒng)數(shù)據(jù)庫(kù)服務(wù)而言,要保證達(dá)到這些安全要求是復(fù)雜且困難的,需要從前端(業(yè)務(wù))到后端(數(shù)據(jù)庫(kù)以及服務(wù)器)各方面的整改和體系化的建設(shè)才能符合高標(biāo)準(zhǔn)的安全需求,例如等保三級(jí)等合規(guī)性要求。這同時(shí)也意味著對(duì)客戶而言,要投入巨大的人力、物力、財(cái)力。

如果在云端就能擁有這些安全能力,客戶就無(wú)需為以上安全建設(shè)成本擔(dān)憂。騰訊云數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)庫(kù)安全技術(shù)進(jìn)行統(tǒng)一支持后,所有客戶均可復(fù)用,從而減少客戶的數(shù)據(jù)庫(kù)安全成本投入。而騰訊云數(shù)據(jù)庫(kù)PostgreSQL到底提供哪些數(shù)據(jù)庫(kù)安全能力呢?本文將主要從數(shù)據(jù)安全,實(shí)例安全兩方面進(jìn)行詳細(xì)介紹。

數(shù)據(jù)安全

TDE數(shù)據(jù)加密

透明數(shù)據(jù)加密(Transparent Data Encryption,以下簡(jiǎn)稱 TDE)提供文件級(jí)別的加密,可以做到對(duì)數(shù)據(jù)庫(kù)上層的應(yīng)用透明,而存儲(chǔ)在硬盤上的數(shù)據(jù)是加密的,對(duì)磁盤數(shù)據(jù)讀取和寫入時(shí)透明地進(jìn)行加解密,且這個(gè)過(guò)程中用戶無(wú)需自行修改業(yè)務(wù)代碼。

透明數(shù)據(jù)加密常用于解決一些安全合規(guī)問題,如PCI DSS、等級(jí)安全保護(hù)等要求靜態(tài)數(shù)據(jù)需要被保護(hù)的場(chǎng)景。

騰訊云數(shù)據(jù)庫(kù) PostgreSQL 通過(guò)向用戶申請(qǐng)使用 KMS(Key Management Service)服務(wù)中保存的主密鑰,生成 DEK(Data Encryption Key)密文與 DEK 明文對(duì)云產(chǎn)品加密所使用的密鑰進(jìn)行數(shù)據(jù)加密和解密。

640.png

圖:信封加密流程圖

此類加密方案被稱為信封加密(Envelope Encryption),即用另一個(gè)密鑰對(duì)密鑰進(jìn)行加密。信封加密是一種應(yīng)對(duì)海量數(shù)據(jù)的高性能加解密方案。其可通過(guò)生成 DEK 來(lái)對(duì)本地?cái)?shù)據(jù)進(jìn)行加解密,保證了業(yè)務(wù)加密性能的要求,同時(shí)也由 KMS 確保了數(shù)據(jù)密鑰的隨機(jī)性和安全性。

所有的加密解密操作均由數(shù)據(jù)庫(kù)在內(nèi)存中進(jìn)行,每一次數(shù)據(jù)庫(kù)重啟以及存在關(guān)閉內(nèi)存的操作時(shí),均會(huì)重新從 KMS 獲取密鑰材料。本地存儲(chǔ)中不保存任何可用于解密的密鑰材料。

目前PostgreSQL社區(qū)版本并不提供數(shù)據(jù)透明加密的功能,而騰訊云數(shù)據(jù)庫(kù)PostgreSQL在內(nèi)核中實(shí)現(xiàn)了透明加密的能力,并且通過(guò)密鑰托管于用戶的KMS服務(wù)中,進(jìn)一步降低了數(shù)據(jù)被破解的風(fēng)險(xiǎn),確保數(shù)據(jù)安全。

字段加密

數(shù)據(jù)加密是針對(duì)整體實(shí)例級(jí)別的加密功能,加密范圍大,則覆蓋范圍廣。雖然有部分業(yè)務(wù)也無(wú)需將整體實(shí)例進(jìn)行加密,但需要重點(diǎn)針對(duì)一些特殊數(shù)據(jù)進(jìn)行加密存儲(chǔ)。騰訊云數(shù)據(jù)庫(kù)PostgreSQL支持基于pgcrypto 插件針對(duì)字段進(jìn)行加密的功能。

PostgreSQL中,pgcrypto是contrib下的一個(gè)插件,它提供了一些加密解密函數(shù),可以實(shí)現(xiàn)服務(wù)器端的數(shù)據(jù)加密解密。用戶可以在SQL語(yǔ)句中調(diào)用這些函數(shù)來(lái)完成數(shù)據(jù)的加密和解密。

在使用pgcrypto中的加密函數(shù)過(guò)程中,可以加密比較重要的字段,提高數(shù)據(jù)的安全性。

pgcrypto模塊提供的加密函數(shù)有以下幾類:通用Hash函數(shù),Password Hash函數(shù),PGP加密函數(shù),Raw加密函數(shù),隨機(jī)數(shù)據(jù)函數(shù)。

整體來(lái)看,字段加密可以有效地防止重點(diǎn)敏感數(shù)據(jù)泄露,適用于密碼、關(guān)鍵數(shù)據(jù)等加密場(chǎng)景。

數(shù)據(jù)脫敏

有些情況下,有些表的特定列含有敏感數(shù)據(jù)(如用戶信息表中的用戶手機(jī)號(hào))。毫無(wú)疑問,只有指定用戶才有權(quán)限看到這些敏感數(shù)據(jù),其他用戶則只能看到脫敏后的數(shù)據(jù)。如果此時(shí)采用數(shù)據(jù)列級(jí)加密,則需要客戶端也介入進(jìn)來(lái)進(jìn)行實(shí)現(xiàn),否則加密和解密實(shí)現(xiàn)比較繁瑣。

為減少客戶業(yè)務(wù)代碼工作的參與,對(duì)于此類場(chǎng)景騰訊云數(shù)據(jù)庫(kù)PostgreSQL支持客戶直接在PostgreSQL中進(jìn)行配置實(shí)現(xiàn)。

第一種方式:通過(guò)視圖脫敏的方案進(jìn)行操作,如通過(guò)查詢語(yǔ)句,將指定字段進(jìn)行字符串處理。代碼如下:

hehe => SELECT id,name,SUBSTRING(phone_number, 1,3) ||'****'||SUBSTRING(phone_number, 7,4) as phone_number    FROM t;

 id |   name   | phone_number 

----+----------+--------------

  1 | zhangsan | 180****2321

  1 | lisi     | 136****2321

  1 |          | 177****2423

  1 | wangwu   | 177****2423

(4 rows)

第二種方式:通過(guò)postgresql_anonymizer插件能力實(shí)現(xiàn),實(shí)現(xiàn)對(duì)數(shù)據(jù)脫敏的需求。

行級(jí)安全策略

RLS(ROW Level Security) 是PostgreSQL 9.5版本之后的新增特性,提供了基于行的安全策略,限制數(shù)據(jù)庫(kù)用戶的查看表數(shù)據(jù)權(quán)限。在其他數(shù)據(jù)庫(kù)中,對(duì)用戶的權(quán)限管控均在表級(jí)別,例如:限制某個(gè)用戶只能查詢某個(gè)表。而采用RLS后,不同的用戶訪問一個(gè)表可以看到不同的數(shù)據(jù)。

默認(rèn)情況下,表沒有任何安全策略限制。這樣用戶根據(jù) SQL 特權(quán)系統(tǒng)具有對(duì)表的訪問特權(quán),對(duì)于查詢或更新來(lái)說(shuō)其中所有的行都是平等的。當(dāng)在一個(gè)表上啟用行安全性時(shí),所有對(duì)該表選擇行或者修改行的普通訪問都必須被一條行安全性策略所允許(不過(guò),表的擁有者通常不服從行安全性策略。如果表上不存在安全策略,如果沒有配置安全策略,所有的數(shù)據(jù)查詢和更新都會(huì)禁止,但是對(duì)全表進(jìn)行操作的命令,比如 TRUNCATE 和 REFERENCES 不受影響。

行安全性策略可以針對(duì)特定的命令、角色或者兩者。一條策略可以被指定為適用于ALL命令,或者查詢(SELECT)、 插入(INSERT)、更新(UPDATE)或者刪除(DELETE)。同一個(gè)策略可分配多個(gè)角色,并且通常的角色成員關(guān)系和繼承規(guī)則也適用。

行級(jí)安全策略可適用于在針對(duì)多個(gè)數(shù)據(jù)混合存儲(chǔ)于同一張表內(nèi),又需要根據(jù)用戶類型進(jìn)行查看或者讀寫權(quán)限進(jìn)行分類限制的場(chǎng)景。騰訊云數(shù)據(jù)庫(kù)PostgreSQL通過(guò)行級(jí)安全策略則可以有效避免數(shù)據(jù)被意外篡改和操作,最大程度上保護(hù)數(shù)據(jù)安全。

實(shí)例安全

安全組訪問策略

安全組是一種有狀態(tài)的包含過(guò)濾功能的虛擬防火墻,用于設(shè)置單臺(tái)或多臺(tái)云數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)訪問控制,是騰訊云數(shù)據(jù)庫(kù)提供的重要網(wǎng)絡(luò)安全隔離手段。安全組是一個(gè)邏輯上的分組,客戶可以將同一地域內(nèi)具有相同網(wǎng)絡(luò)安全隔離需求的云數(shù)據(jù)庫(kù)實(shí)例加到同一個(gè)安全組內(nèi)。

安全組訪問策略可以有效的控制訪問數(shù)據(jù)庫(kù)的來(lái)源IP地址,設(shè)置黑白名單,允許指定的網(wǎng)絡(luò)段、IP地址訪問,拒絕風(fēng)險(xiǎn)地址的訪問。

角色權(quán)限訪問控制

在大企業(yè)中,數(shù)據(jù)庫(kù)資源面向不同的業(yè)務(wù)提供服務(wù),而不同的業(yè)務(wù)隸屬于不同的小組或者部門,此時(shí)如何在統(tǒng)一的賬號(hào)下管理不同的業(yè)務(wù)資源就成為了安全權(quán)限管理的一大難題。

騰訊云數(shù)據(jù)庫(kù)PostgreSQL訪問管理 CAM 則可以用于幫助客戶安全管理騰訊云賬戶下資源的訪問權(quán)限。通過(guò) CAM,客戶可以創(chuàng)建、管理和銷毀用戶(組),并通過(guò)身份管理和策略管理控制指定用戶可以使用的騰訊云資源,進(jìn)而達(dá)到權(quán)限分離的目的。這種權(quán)限管理方式是典型的PBAC(基于策略的訪問控制),可以實(shí)現(xiàn)資源級(jí)粒度的控制。

客戶可以通過(guò)子帳號(hào)實(shí)現(xiàn)不同的賬號(hào)管理不同的服務(wù)來(lái)規(guī)避以上的問題。默認(rèn)情況下,子帳號(hào)沒有使用云服務(wù)的權(quán)利或者相關(guān)資源的權(quán)限。因此,騰訊云數(shù)據(jù)庫(kù)PostgreSQL支持創(chuàng)建策略來(lái)允許子帳號(hào)使用他們所需要的資源或權(quán)限。針對(duì)某一個(gè)用戶、某一個(gè)資源、某一個(gè)操作均可以做到精細(xì)化的控制。進(jìn)而避免越權(quán)操作,讓所有的用戶僅可操作自己權(quán)限范圍內(nèi)的資源。

網(wǎng)絡(luò)隔離

云數(shù)據(jù)庫(kù) PostgreSQL 支持使用私有網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)更高程度的網(wǎng)絡(luò)隔離控制,搭配使用安全組和私有網(wǎng)絡(luò)將極大提升訪問 PostgreSQL實(shí)例的安全性。

私有網(wǎng)絡(luò)是用戶在騰訊云上建立的一塊邏輯隔離的網(wǎng)絡(luò)空間。在私有網(wǎng)絡(luò)內(nèi),用戶可以自由定義網(wǎng)段劃分、IP 地址和路由策略,進(jìn)而實(shí)現(xiàn)資源級(jí)的網(wǎng)絡(luò)隔離。

部署在私有網(wǎng)絡(luò)中的 PostgreSQL實(shí)例默認(rèn)只能被同一個(gè)私有網(wǎng)絡(luò)中的 CVM 訪問,若 CVM 與 PostgreSQL實(shí)例不在同一個(gè)私有網(wǎng)絡(luò),也可以通過(guò)申請(qǐng)外網(wǎng)的方式進(jìn)行訪問,考慮到網(wǎng)絡(luò)安全的問題,不建議采用外網(wǎng)的方式進(jìn)行數(shù)據(jù)庫(kù)訪問,若必須采用外網(wǎng)訪問 PostgreSQL實(shí)例,請(qǐng)配合安全組來(lái)實(shí)現(xiàn)客戶端的訪問控制。

VPC的網(wǎng)絡(luò)基礎(chǔ)設(shè)施還可以防止DDoS攻擊。當(dāng)用戶使用外網(wǎng)連接和訪問 PostgreSQL實(shí)例時(shí),可能會(huì)遭受 DDoS 攻擊。針對(duì)這一問題,騰訊云數(shù)據(jù)庫(kù)提供流量清洗和封堵處理功能,完全由系統(tǒng)自動(dòng)觸發(fā)和結(jié)束。當(dāng)騰訊云數(shù)據(jù)庫(kù)安全系統(tǒng)認(rèn)為用戶實(shí)例正在遭受 DDoS 攻擊時(shí),首先會(huì)啟動(dòng)流量清洗功能,如果流量清洗無(wú)法抵御攻擊或者攻擊達(dá)到封堵閾值,則會(huì)進(jìn)行封堵處理。

實(shí)例刪除防呆

“刪庫(kù)跑路” 是在數(shù)據(jù)庫(kù)行業(yè)中經(jīng)常被人拿出來(lái)調(diào)侃的一句話,其核心原因就是在于傳統(tǒng)數(shù)據(jù)庫(kù)的管理手段單一,很容易出現(xiàn)運(yùn)維人員對(duì)實(shí)例進(jìn)行刪除,導(dǎo)致實(shí)際業(yè)務(wù)受到巨大損失。

云上數(shù)據(jù)庫(kù)支持實(shí)例回收站能力,當(dāng)用戶出現(xiàn)了實(shí)例刪除,并不會(huì)直接將數(shù)據(jù)完全清理,而是會(huì)在回收站呆上幾天。這樣避免了誤操作或者惡意操作導(dǎo)致的實(shí)例無(wú)法回收情況。當(dāng)實(shí)例進(jìn)入回收站后,業(yè)務(wù)出現(xiàn)異常無(wú)法訪問,則可幫助客戶及時(shí)發(fā)現(xiàn)問題,進(jìn)而抓緊時(shí)間挽救。

同時(shí)騰訊云數(shù)據(jù)庫(kù)結(jié)合云安全訪問策略,使實(shí)例的隔離與下線接口掌握在不同權(quán)限的負(fù)責(zé)人手中。這樣做可對(duì)高危操作進(jìn)行管理隔離,避免單一人員風(fēng)險(xiǎn)導(dǎo)致的數(shù)據(jù)庫(kù)安全問題。

除了通過(guò)訪問控制策略之外,騰訊云數(shù)據(jù)庫(kù)還可以基于商業(yè)流程服務(wù)BPaaS 與云函數(shù)SCF的結(jié)合形式,在云上實(shí)現(xiàn)審批流服務(wù),使高危操作都受到審批流的管理。

整體來(lái)看,以上數(shù)據(jù)庫(kù)實(shí)例安全的防呆措施,可避免95%以上的實(shí)例意外風(fēng)險(xiǎn),充分保障數(shù)據(jù)庫(kù)的穩(wěn)定運(yùn)行。

總結(jié)

數(shù)據(jù)庫(kù)安全能力提升任重道遠(yuǎn),如何確保數(shù)據(jù)庫(kù)在正常對(duì)外提供服務(wù)的同時(shí),不斷提高安全防護(hù)能力也是騰訊云數(shù)據(jù)庫(kù)一直以來(lái)在創(chuàng)新突破的目標(biāo)。

如今,騰訊云數(shù)據(jù)庫(kù)豐富的安全策略組合,可幫助客戶有效降低在數(shù)據(jù)庫(kù)安全方面的投入成本,使得客戶輕松享用一系列安全能力。

立即登錄,閱讀全文
原文鏈接:點(diǎn)擊前往 >
文章來(lái)源:騰訊云數(shù)據(jù)庫(kù)
版權(quán)說(shuō)明:本文內(nèi)容來(lái)自于騰訊云數(shù)據(jù)庫(kù),本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家