Security
使用 MySQL 複製在 DMZ 中啟用數據庫的只讀副本
我需要在 DMZ 中設置一個 MySQL 數據庫實例,該實例是安全網路中活動主伺服器的只讀副本。
MySQL 複製似乎對此很理想,除了它通過從屬從主“拉”變化來工作。這意味著 DMZ 中的從站必須能夠打開與主站的連接,這是安全人員不允許的。
我玩過從主伺服器設置 ssh 隧道,但從伺服器似乎保持連接打開(即使在呼叫“SLAVE STOP”之後),這意味著隧道始終是打開的(有點違反安全限制)。
除了停止 mysqld 之外,是否有某種方法可以強制 mysql 斷開連接?
是否有另一種方法可以實現我沒有想到的相同目標?
從主設備到從設備的更新需要接近實時(即幾分鐘的延遲是可以接受的,但不能超過)。
另一個想法,與您所描述的內容略有不同:
- 從主設備建立隧道
- 從master啟動slave(注意master的binlog位置)
- 執行slave直到滿足或超過master的binlog位置
- 停止奴隸
- 關閉隧道
- 每 x 分鐘重複一次
這裡的關鍵是隧道由主伺服器創建和銷毀,更新是定期執行的。
從站保持與主站的永久連接,但在您發出“STOP SLAVE”時會關閉它。
如果您的數據非常小並且您可以容忍幾分鐘的延遲,您可能會使用來自 Maatkit 的 mk-table-sync 工具編寫一些腳本來完成這項工作。它將校驗您的表格並找出應用它們的更改。您可以從主機執行它並定期連接到 DMZ 中的從機,從安全形度來看,這會更安全 - 即使攻擊者破壞了 DMZ 機器並完全用他們自己的軟體替換它,他們仍然會只獲得數據庫快照的訪問權限。