Elasticsearch是一個快速和分散式的搜索和分析引擎,它可以完成實時的數據查詢和分析。但在使用過程中,經常會遇到無許可權訪問的問題。這篇文章將講解elasticsearch無許可權訪問問題的原因以及解決方法。我們將從如下幾個方面詳細闡述。
一、檢查elasticsearch的基本設置
在使用elasticsearch時,第一個需要檢查的是elasticsearch的基本設置。請確保以下列出的elasticsearch的配置項與您當前環境的配置項匹配。
1. 檢查elasticsearch’s IP地址
請確保elasticsearch的IP地址與您當前環境的IP地址匹配。為此,請打開elasticsearch.yml文件並檢查network.host配置項。
network.host: 192.168.0.1
如果好比你的IP地址為192.168.0.2,那麼你必須在這裡定義你的IP地址,否則你將無法連接elasticsearch實例。
2. 檢查elasticsearch’s hostname
如果沒有定義主機名,那麼elasticsearch將不正確地解析它的地址。為此,請檢查以下配置項。
node.name: mynode network.host: 192.168.0.1
請注意,上面的配置中是確保節點有一個my node的主機名已分配,並且elasticsearch實例的IP地址被設置為192.168.0.1。現在,您已經準備好開始使用elasticsearch。
二、確保您有正確的用戶驗證信息
默認情況下,elasticsearch沒有密碼,這是因為當elasticsearch使用於內部用途時,身份驗證選項是可選的。但是,當你使用一個在外網可訪問的elasticsearch實例時,最好使用密碼進行身份驗證。在這種情況下,您需要使用基本身份驗證來確保安全連接。以下是一些基本身份驗證選項可供選擇。
1. 角色-Based 全新的形式
這種形式的身份驗證要求用戶退出elasticsearch並重新進入,以使用新的認證信息。這種身份驗證形式主要需要使用的是Elasticsearch自帶的用戶角色,可授權各種操作許可權。
2. OpenID身份驗證
這是一種使用外部身份驗證伺服器的身份驗證形式。它可以讓用戶使用各種其它服務上的身份驗證信息來登錄elasticsearch。
3. LDAP 認證
LDAP身份驗證是一種使用Elasticsearch 身份驗證模塊的身份驗證形式。當用戶登錄時,通過檢查LDAP伺服器來驗證用戶或組。
當您在elasticsearch中使用安全身份驗證時,許多客戶端將指定一個證書文件來判斷是否允許登錄。如果是這種情況,請確保您已經將證書放在正確的位置並配置了適當的許可權。
三、創建和分離角色
Elasticsearch還支持角色的創建和分配。例如,您可以創建一個名為admin的角色,並允許它訪問所有的數據並進行用戶管理。此外,您可以創建一個名為guest的用戶角色,並允許它只讀您的全部數據。
1. 創建一個角色並指定訪問許可權
要創建一個角色,請使用以下API來定義所需的許可權。
PUT _security/role/admin_role { "cluster": ["manage"], "indices": [ { "names": ["*"], "privileges": ["all"] } ] }
上面的代碼創建了一個名為admin_role的角色,並為此角色分配了所有的集群管理許可權以及對所有索引的讀取和寫入的所有權。現在您可以為新用戶分配此角色。
2. 將一個角色分配給一個用戶
在創建用戶時,您可以在指定密碼的情況下,將角色分配給該用戶。
PUT _security/user/new_user { "password" : "mypassword", "roles" : [ "admin_role", "user_role" ], "full_name" : "Mary Major", "email" : "mary.major@test.com", "metadata" : { "intelligence" : 7 } }
以上代碼創建了用戶名為new_user的用戶,並將「admin_role」 和 「user_role」 角色分配給它,以及指定了用戶的其他附加信息。現在,您已經準備好在elasticsearch中使用基於角色的身份驗證。
四、啟用SSL加密以保護訪問數據
在elasticsearch中,您可以啟用SSL/TLS功能以加密傳輸數據。啟用此功能後,您的數據在傳輸時將不會被其他人閱讀或更改,從而保護您的數據免遭黑客攻擊。以下是如何在elasticsearch中啟用SSL/TLS的步驟。
1. 定義證書和安全配置
要啟用SSL/TLS,您需要為elasticsearch生成證書。使用openSSL等工具創建新證書後,您可以將其上傳到elasticsearch伺服器。
curl --cert client.crt --key client.key -XPOST https://localhost:9200/_search
指定證書文件後,您還需要更新elasticsearch.yml文件以啟用SSL/TLS。請注意,從elasticsearch 6.8版開始,推薦使用Https。
xpack.security.transport.ssl.enabled:true xpack.security.http.ssl.enabled:true xpack.security.http.ssl.keystore.path: elastic-certificates.p12
在指定elasticsearch SSL/TLS的配置時,您還需要注意埠設置。如果您正在使用非默認埠,您可能需要更新elasticsearch配置文件中的直接埠信息。
五、使用HTTPS進行身份驗證
另一個安全防護措施是在elasticsearch中使用HTTPS進行身份驗證以獲得更高級別的加密和數據安全。與基本身份驗證相比,HTTPS是更加安全和更加優秀的安全選擇。以下是如何在elasticsearch中啟用HTTPS的步驟。
1. 定義證書和安全配置
與啟用SSL/TLS一樣,您需要為elasticsearch生成證書。接下來,修改elasticsearch的配置文件,更新文件的一些屬性以啟用HTTPS。
xpack.security.http.ssl.enabled:true xpack.security.http.ssl.keystore.path: elastic-certificates.p12
在配置完elasticsearch的HTTPS後,您可以使用elasticsearch的API或CLI命令測試HTTPs的連接:
curl https://user:password@localhost:9200/
如果您無法使用curl curl命令,則可以使用瀏覽器產品測試HTTPS。
經過上述的步驟,您應該可以在您的elasticsearch環境中啟用數據安全和身份驗證措施,使您的信息更加的安全可靠。
六、小結
本篇文章介紹了如何通過基本設置、身份驗證、角色創建和分配以及啟用SSL/TLS和HTTPS等技術來保護和安全訪問您的elasticsearch伺服器。如果您遵循了上述建議,並在您的elasticsearch環境中實現了安全性,那麼您的信息將更加安全可靠,不易受到黑客攻擊。同時,我們也希望您可以參考本文提供的示例代碼來進行您的集群設置。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/240174.html