Security
AWS,NodeJS - 將應用程序連接到另一個 EC2 實例上的 Mongodb
我正在嘗試將在一個 EC2 實例上執行的應用程序連接到在另一個 EC2 實例上執行的 MongoDB。我很確定問題出在安全設置中,但我不太確定如何處理。
首先,我的應用程序實例位於 ELB 後面的自動縮放組中。實例和 ELB 的入站安全設置允許從任何地方訪問埠 80,以及來自其自己的安全組的所有流量。
如果該實例的安全組接受來自任何地方的所有入站流量,則執行 Mongo 的 EC2 實例能夠建立連接。我嘗試過的任何其他配置都會導致應用程序說它無法與遠端地址建立連接。我已設置規則以接受來自我擁有的所有安全組的入站流量,但它似乎只有在我允許來自任何地方的所有流量時才有效。
此外,我的數據庫實例設置有彈性 ip。我也應該在 ELB 後面有這個實例嗎?
所以我的問題是:
- 如何安全地連接到執行 mongo 的 EC2 實例?
2)在架構方面,以這種方式執行我的數據庫是否有意義,或者我也應該在負載均衡器後面使用它?
這個問題比我想像的要多得多,所以任何幫助都將不勝感激。
筆記
我也設置
bind_ip=0.0.0.0
了/etc/mongo.conf
您的問題是您正在使用公共彈性 IP 從其他伺服器連接到您的數據庫伺服器。這意味著連接將連接到 Internet 並返回到您的 VPC,這會帶來以下問題:
- 由於數據傳輸未包含在您的 VPC 中而導致的安全問題
- 網路延遲問題
- 您的數據庫伺服器的安全組無法辨識入站連接的安全組
擺脫 MongoDB 伺服器上的彈性 IP,除非您計劃從 VPC 外部連接到它,否則不需要它。修改您的伺服器以在創建與數據庫伺服器的連接時使用分配給您的數據庫伺服器的私有內部 IP 地址。最後,將您的安全組重新鎖定,以僅允許從其他安全組訪問數據庫。
可選:在 Route53 中創建一個私有託管區域,其中一條 A 記錄指向您的數據庫伺服器的私有 IP 地址,然後使用該主機名而不是內部 IP 地址。