GaussDB技術解讀系列:高安全之密態等值

MySQL成长之路發表於2024-10-28

本篇為大家分享GaussDB高安全的關鍵特性,名字叫密態等值,是一個關於全密態的關鍵能力。

資料成為生產要素,合規要求趨於嚴格
大家應該都有切身的體會,近些年資料的重要性越來越高,特別是國家已經把資料明確定義為了生產要素。生產要素是什麼?就好像過去的石油,從工業革命時期開始,每一家工業企業幾乎都要用到,是生產過程中必不可少的東西。現在,國家把資料定義為生產要素,意味著資料在各個領域也將要廣泛地使用到。正因為這樣,資料也上升成為了國家的“戰略資源”。基於此,國家近些年釋出了《中華人民共和國資料安全法》、《中華人民共和國個人資訊保護法》等一系列法律,對資料安全的保護標準和使用規範越來越明確、越來越嚴格,這是我們切身體會到的一個大的趨勢。

資料庫安全面臨更大的威脅和挑戰
在這種新形勢下,資料庫的安全也面臨很大的威脅。我們做了一個梳理,從裡到外,資料庫的安全問題一共有以下幾個方面:

首先,資料安全傳輸從網路層面容易受到攻擊。大概20年前,安全人員在網路上部署一臺嗅探器,就可以獲取到許多的敏感資訊。而之後陸續出現相關的標準和技術,經過一段時間的演進逐步成熟,演變成穩定的安全協議或安全架構,被廣泛使用起來。例如HTTPS、TLS等,透過這種安全協議上的消解,我們發現,現在很難透過網路攻擊,直接獲取到敏感的東西。

隨後我們發現,SQL隱碼攻擊,以及網頁跨站等問題開始越來越明顯,資料展示層的攻擊雖然和資料庫不直接相關,而是從資料庫把資料拿出來之後放到業務層,在業務層引入的風險,但這些風險也可以透過資料庫提供的能力進行消減,因此也納入資料庫威脅範圍內。同樣也是隨著技術的發展,一些穩定的安全框架、安全編碼規範形成之後,這部分的風險逐漸消減了。

其次是儲存。各類安全規範裡經常會提及到儲存安全保護,因為資料一旦存在磁碟裡,有可能永遠都在磁碟裡,直到磁碟銷燬的那一天。如果裡面存放了敏感資料,理論上每一天都有被偷走的可能,所以儲存安全非常的重要。關於這一點,相關的技術也在逐步成熟,像磁碟加密、透明加密等,而且各家機構企業也都非常重視對於物理硬體的保護,管理手段非常嚴格,所以磁碟被偷走的情況也很少出現。

最近幾年,經常看到各種各樣的嚴重安全事件,主要在兩個維度,一個是維護,一個是管理。維護就是後臺作業系統的人員做一些資料庫的維護操作,管理就是DBA透過資料庫標準通道做一些管理操作。這也不一定是內部人員有問題,也有可能是這些內部人員的賬號被洩露,近幾年世界知名的一些大型資料安全事件,大部分是在這兩個方面出了問題,都洩露了很多的資料,這是新形勢下最大的安全威脅。

GaussDB以資料為中心
構築起3+1安全架構
面對這些挑戰,GaussDB構築起了3+1的安全架構。

這個架構的最外層,是基於智慧化能力做一些風險、異常行為的感知,先感知有沒有惡意攻擊,阻擋一遍攻擊。中層是訪問控制能力,加上口令、身份認證等,進一步控制使用者訪問風險。裡層是資料加密、脫敏,直接在資料上做文章,因而攻擊者即使將外層全部攻破,拿走的也全部是密文狀態下的資料。

最後在這三層之外是審計,GaussDB做了很多細粒度的審計能力,還有防篡改。我們的審計日誌是改不了的,即使篡改了,也能看出來哪裡被改了。所以,即使攻擊者做了很多操作,把資料庫也攻破了,但所有操作是跑不了的。

而今天分享的就是全密態裡面的等值查詢。

GaussDB全密態等值查詢
實現資料全流程保護
全密態技術的原理很簡單。比如在使用的時候輸入一個SQL語句,加密驅動會找到哪個欄位需要加密,然後用一個金鑰把它自動加密,這樣加密完後整個流程都是密文的,整個資料庫跑的資料、以及跑完之後的結果都是密文資料,不論什麼時候把資料拿走,拿走的也都是密文的,因為在整個資料庫裡面沒有任何解密的過程。我們對查詢回來的密文結果在客戶端再進行解密,將明文資料返回給業務進行處理,從而能夠做到無感知的使用和業務遷移。

我們當前支援密態等值等查詢,很快還會支援密態範圍查詢和模糊查詢,都是基於密碼學的演算法。對於大規模資料,我們還可以基於密文資料進行索引和快速查詢,並且支援JDBC、GO、Libpq等多種客戶端驅動。

客戶端金鑰管理,保障服務可信
對加密來說,金鑰是最關鍵的,所以全密態最主要的是金鑰的分配。我們的全密態金鑰是在客戶端管理,一般屬於業務管理人員負責,業務管理人員拿到金鑰後把資料加密再交給資料庫。邏輯很簡單,我們在驅動層做了一個加密驅動,裡面做了自動加解密和自動解析,能夠自動識別哪個欄位需要哪個金鑰,再自動找到金鑰、自動加密。這樣只要業務不把金鑰許可權分配給DBA和運維,他們就不能解密這部分資料,但是能夠正常運維,如果有極特殊的情況需要看到明文敏感資料才能做管理運維,也可以把金鑰賦權給相關人員。

全流程加密,資料庫內部全流程零解密
第二層是加密,資料庫裡的整個流程是沒有解密過程的,這是GaussDB實現的最主要的能力,包括傳輸、查詢、儲存等操作都有對應的方式,不需要解密再處理。但是,如果不單是在客戶端需要資料匯出,假如後端也需要直接匯出資料,我們也可以在某些特殊場景下把金鑰授權給下游做臨時解密。這是加密方面的情況介紹。

客戶端輕量化解析
業務層加密透明無感
另外,如何做到透明無感知?解析器是資料庫裡的關鍵元件,我們在客戶端裡面做了一個輕量化解析器,對使用者輸入進去的SQL語句做自動的語法解析,找到哪個欄位需要加密,而對於返回過來的語法也進行對應的解析。做完這個解析,客戶端可以獲取到需要加密的資料以及該資料在原始語句中的位置,然後重新構造一個新的SQL語句,資料庫實際收到的就是加密之後的資料。

經過客戶端的自動語法解析,自動金鑰管理和自動加密後,就可以繼承標準的SQL語法,實現業務的透明無感知。對於業務遷移,也只需要修改一下建表語句,配置資料加密的表和加密欄位即可,在實際增刪改查過程中,所有操作語句都是與明文一樣的。

全密態等值和傳統加密有什麼區別?我做了一個總結。

應用案例
自己生產的降落傘自己先跳,GaussDB的全密態能力已經在華為的MetaERP系統商用了。不久前,華為宣佈實現自主創新的MetaERP研發,完成對舊ERP系統的替換,目前已覆蓋了華為公司100%的業務場景和80%的業務量。ERP作為華為企業經營最核心的系統,伴隨著華為20多年的快速發展,支撐了每年數千億產值的業務以及全球170+國家業務高效經營。

我們分析過一個業務,其中有270多個絕密欄位,任何一個環節發生資料洩露都是重大事故。而之前的傳統方案,是強制在應用層加密,加密完成後存到資料庫,用資料的時候,先把資料查詢出來之後做解密再使用,資料庫做不了任何事情,這種方案加密時間長,效能損耗大,金鑰需要自管,所以上了全密態。

剛開始做自己的ERP系統的時候,資料庫的容量、效能,特別是對批次資料的查詢和處理,都是空前挑戰。因為ERP業務實際是不看TPCC等基準測試指標的,他們只看實際業務場景的效能,比如批次插入、批次查詢等,這給我們提供了一個良好的訓練場,我們對批次處理效能等多種場景的實際應用都進行很大的最佳化,確保MetaERP在全密態下能滿足業務對效能的要求。

另外,ERP應用的時候有一個特點,交易查詢完之後,下游還有一個分析庫處理,我們有一個金鑰授權能力,在業務負責人將金鑰許可權授權下游處理節點後 ,資料庫就把密文資料解密後託管給下游處理,這樣後臺資料就可以不經過客戶端,不同的應用只需要使用同一個KMS(金鑰管理)就可以操作同一部分資料。另外,只要業務負責人不把金鑰授權給其他任何人,就沒有人能處理這個資料,包括管理和運維人員。

最後是獲得的一些成績,GaussDB是國內首個透過國際CC EAL4+認證的資料庫,也是國內首批透過信通院全密態資料庫評測、國內首家透過信通院防篡改資料庫評測的資料庫產品。

今天的分享就到這裡,歡迎小夥伴們一起交流。

​https://support.huaweicloud.com/intl/zh-cn/gaussdb/index.html

相關文章