加密 mysql 資料庫的好方法是什麼?

加密 mysql 資料庫的好方法是什麼?

我知道我可以加密資料庫的特定字段,但我對加密資料庫的每個字段感興趣。我想確保任何有權存取 mysql shell 但無權存取解密金鑰的人都無法從資料庫中讀取任何內容。

我還想確保如果有人獲得了機器的 root 存取權限,但沒有解密金鑰,他們就無法讀取資料。

我該怎麼做?這樣做有意義嗎?我擔心如果有人有權利存取 mysql 資料庫,他們不可避免地會存取密鑰,所以這是沒有意義的。我錯過了什麼嗎?

答案1

可以使用最小的現場級 AES 和 DES 加密:https://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html#function_encrypt

如果沒有為每個查詢指定鍵(或不將其新增至觸發器/流程),任何人都無法讀取資料。

例子:

插入:

INSERT INTO users (username, password) VALUES ('root', AES_ENCRYPT('somepassword', 'key12346123'));

並選擇:

SELECT AES_DECRYPT(password, 'key12346123') FROM users WHERE username = 'root';

還有,這個需要與資料庫的 SSL 連線。

在較低層級 - 您也可以加密檔案系統。

答案2

答案3

第一:您將密鑰儲存在應用程式中,並在應用程式層處理所有加密。

接下來:確保 MySQL 實例和應用程式 [伺服器] 位於不同的電腦上,以便 MySQL 伺服器上的 root 攻擊不允許攻擊者從應用程式來源讀取金鑰。

這種做法似乎有些過分了。正確處理敏感資料(密碼、信用卡等),但對所有內容進行加密就有點矯枉過正了。 (並且在主鍵世界中可能會適得其反)

相關內容