如果您身在技術圈,很可能在某個時刻已經正面遭遇過“服務器入侵”。即使您身處圈外,也可能會對致使私密個人數據最終落入不法之手的服務器/數據入侵和安全漏洞有所耳聞。此類數據可能包括信用信息、社會安全號碼,以及其他您想要保密且不希望落入暗網的信息。
所有軟件都必須應對可能出現的入侵或攻擊。Elasticsearch,這個由 Elastic 開發的開源軟件項目也不例外。未在 Elasticsearch 中安全存儲的數據也曾發生過泄露、丟失或被盜的情況。
#如何預防 Elasticsearch 服務器入侵事件的發生
本文將帶您瞭解數據入侵的發生途徑,以及用戶如何在 Elasticsearch 環境中周全地保護數據。我們將由淺入深,先從一些基礎知識開始講解。
Elasticsearch 簡介
Elasticsearch 是一個開源搜索和分析引擎,同時也是一個數據存儲庫,而且它的下載量數以億計,受歡迎程度由此可見一斑。我們雖然對它的速度、規模和搜索相關性不惜溢美之詞,但它的廣泛採用在很大程度上得益於其以下特點:易於使用;能夠處理任何類型的數據(文本、數字、地理空間等);擁有一系列強大的功能;並且任何人都可以提交 bug 修復或改進建議(因爲它是開源的)。
說得直白一點,它就像一個包含數十億行的電子表格,儘管體量龐大,但您仍然能夠在瞬間找到或計算其中的任何內容。Elasticsearch 就是如此,其功能非常出色,所以衆多組織使用 Elasticsearch 來執行各種事務 — 例如,支持其電子商務網站上的搜索、分析來自火星探測器的數據,或確保拼車準時到達。
Elastic 是誰?另外,你們有我的數據嗎?
Elastic 是一家開發 Elasticsearch 以及 Elastic Stack 其他系列產品(Kibana、Beats 和 Logstash 等)的公司,而 Elasticsearch 是包括搜索、可觀測性、安全性等在內的各種解決方案的基礎。
對於您提的問題,簡短回答是“沒有”。我們開發了 Elasticsearch,然後其他公司可以在本地或雲基礎設施中運行。
稍長點的回答是“可能有”。這是因爲一些公司會使用 Elastic Cloud,這是我們託管的 Elasticsearch 產品。我們負責維護客戶存儲在 Elastic Cloud 中的任何數據,包括確保數據安全。因此,我們所有的 Elasticsearch Service 部署本身都是安全的。
#Elasticsearch 將數據保存在何處?
由於 Elasticsearch 是開源軟件,任何人都可以免費下載和安裝,因此它幾乎可以安裝在任何地方。有些公司下載後會將其安裝在自己的內部服務器上,而有些公司下載後會將其安裝在自選的提供商的雲中。此外,也有一些雲服務公司提供託管版本的 Elasticsearch,也就是爲客戶託管和管理我們所說的 Elasticsearch 集羣。
事實上,Elastic 在 Elastic Cloud 上也提供了我們自己託管的 Elasticsearch Service。我們提供了全面的管理服務(包括默認的安全服務),並支持您從幾個不同的雲服務提供商中選擇基礎設施。
入侵 Elasticsearch 服務器的方式有哪些?
數據存儲庫被入侵的方式多種多樣,從密碼被盜到黑客攻入,再到心懷不滿的員工惡意報復等不一而足。對於 Elasticsearch,最常見的入侵類型是由於某個集羣在互聯網上不夠安全所致,也就是說,任何人都可以在不需要用戶名或密碼的情況下連接並訪問數據。這些開放集羣通常是由安全研究人員發現的,隨後他們會公佈這些發現,這樣全世界都會發現遺留在互聯網上的這些數據。
如果保護得當,Elasticsearch 集羣受到入侵的風險並不會比任何其他數據庫高。鑑於此,我們免費默認提供了保護 Elasticsearch 集羣所需要的功能,只要下載並使用 Elastic Stack 即可實現安全。爲此,讓我們來看看 Elasticsearch 用戶可以做些什麼,以確保他們用到這些功能並保證集羣安全。
如何保護 Elasticsearch?
我們在免費、默認的(基本層)發行版中納入了 Elasticsearch 安全功能,這就是說,任何人都可以爲其 Elasticsearch 集羣配置安全性並防止意外數據泄露。不過,在研究如何使用這些功能之前,我們先來看看如何判斷您的集羣是否安全。
如何知道我有不安全的 Elasticsearch 集羣?
如果您是 Elasticsearch 的用戶或管理員,則可以通過幾個簡單的步驟來檢查安全功能是否已啓用且運行正常。
確定這一點的最佳方法是查詢設置 API。發出以下查詢:
GET _xpack/usage?filter_path=security
如果安全功能禁用,就會看到類似以下的結果:
{
"security" : {
"available" : true,
"enabled" : false, // 安全功能關閉時,此設置爲“false”
"ssl" : {
"http" : {
"enabled" : false
},
"transport" : {
"enabled" : false
}
}
}
}
或者,如果安全功能按預期工作,則會顯示如下信息
{
"security" : {
"available" : true,
"enabled" : true, // 安全功能開啓時,此設置爲“true”
"realms" : { ... },
"roles" : { ... },
"role_mapping" : { ... },
"ssl" : {
"http" : {
"enabled" : true
},
"transport" : {
"enabled" : true
}
},
"token_service" : { ... },
"api_key_service" : { ... },
"audit" : { ... },
"ipfilter" : { ... },
"anonymous" : { ... }
}
}
您可以看到,結果大相徑庭。根據您部署的版本和許可級別,結果也會略有不同。
#如何確保我的 Elasticsearch 集羣安全?
要確保外人無法訪問您的 Elasticsearch 集羣,最簡單的兩個方法是:
啓用身份驗證 ,不登錄 Elasticsearch 就無法訪問。
啓用 TLS ,防止他人竊取通過網絡傳輸的 Elasticsearch 數據。
我們提供了很多非常棒的資源來解釋如何確保 Elasticsearch 的安全,包括如何輕鬆實施上面的兩個建議。但是,要想獲得安全,最快捷方法莫過於查看我們的 Elasticsearch 安全入門(TLS 和 RBAC)博客。
在 Elastic Cloud 的 Elasticsearch Service 中,我們還爲所有這些設置了快捷鍵。在使用我們的 Elasticsearch Service 時,您可以肯定的是,它爲每個集羣都自動配置了安全功能。
安全離不開團隊合作
如果您有任何問題,可以隨時聯繫我們。我們提供了多種加入 Elastic 社區的途徑,比如論壇、本地活動和大量文檔。我們也一直在努力讓保護 Elasticsearch 的安全比以前更加容易。請務必關注我們的博客,瞭解未來動態,以及我們當前正在做些什麼。如果您酷愛蜘蛛俠,一定很熟悉這句話:“能力越大,責任越大”,對於 Elastic 和任何使用 Elasticsearch 來存儲數據的人來說都是如此。