從 Elasticsearch 6.8.0 和 7.1.0 開始,Elastic 將基本的安全功能(如用戶身份驗證和角色管理)包含在免費基礎(chǔ)版(Basic license)中党瓮。
在這之前的版本中 X-Pack 安全功能在基礎(chǔ)版中不可用愕贡,需要付費許可證疏虫。你可以申請一個 30 天的試用許可證來體驗這些功能。
測試版本 Elasticsearch 6.8.6
配置用戶名密碼
啟用 X-Pack 安全功能
在 elasticsearch.yml 配置文件中特石,添加以下配置來啟用基本安全功能:
xpack.security.enabled: true
啟動 Elasticsearch
啟動或重啟 Elasticsearch:
bin/elasticsearch
如果你使用系統(tǒng)服務(wù):
sudo systemctl restart elasticsearch
設(shè)置內(nèi)置用戶的密碼
運行以下命令來設(shè)置內(nèi)置用戶的密碼:
bin/elasticsearch-setup-passwords interactive
該命令會提示你設(shè)置幾個內(nèi)置用戶(如 elastic骇笔、kibana迈着、logstash_system 等)的密碼久免。
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]
驗證配置
完成后,你可以使用設(shè)置的用戶名和密碼來連接 Elasticsearch 以驗證配置谢揪。例如:
curl -u elastic:yourpassword http://localhost:9200
這將使用用戶名 elastic 和你設(shè)置的密碼來進行身份驗證蕉陋。
啟用SSL
當(dāng)設(shè)置了 network.host: 0.0.0.0
之后,es會無法啟動拨扶,要求你配置SSL
使用 elasticsearch-certutil 工具生成自簽名證書以及相關(guān)配置如下:
生成 CA 證書
CA 證書是用來簽署其他證書的凳鬓。它被用作信任的根證書,能簽發(fā)節(jié)點證書患民、客戶端證書等缩举。
它的主要作用是建立一個信任鏈,確保被簽名的證書是可信的。
運行 elasticsearch-certutil ca 命令:
bin/elasticsearch-certutil ca
你將被提示輸入證書相關(guān)的信息仅孩。一般情況下托猩,可以直接按 Enter 使用默認值。
選擇輸出格式:
你會看到如下提示:
Please enter the desired output file [elastic-stack-ca.p12]:
輸入文件名或按 Enter 使用默認文件名 elastic-stack-ca.p12辽慕。
接下來你會看到:
Enter password for elastic-stack-ca.p12 :
輸入一個密碼并記住它京腥,你將在稍后使用。
最終溅蛉,你會看到如下信息:
CA certificate written to /path/to/elasticsearch/bin/elastic-stack-ca.p12
生成節(jié)點證書
節(jié)點證書是由 CA 簽署的證書公浪,用于標(biāo)識和加密特定節(jié)點(如服務(wù)器、客戶端)
它包括節(jié)點的公鑰和其他身份信息船侧,并由 CA 證書簽名欠气,證明其真實性。
運行 elasticsearch-certutil cert 命令并指定 CA 證書:
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
你將被提示輸入 CA 證書的密碼(之前設(shè)置的密碼)镜撩。
選擇輸出格式:
你會看到如下提示:
Please enter the desired output file [elastic-certificates.p12]:
輸入文件名或按 Enter 使用默認文件名 elastic-certificates.p12晃琳。
接下來你會看到:
Enter password for elastic-certificates.p12 :
輸入一個密碼并記住它,你將在配置 Elasticsearch 時使用它琐鲁。
最終卫旱,你會看到如下信息:
Certificate written to /path/to/elasticsearch/bin/elastic-certificates.p12
配置 Elasticsearch 使用生成的證書
將證書文件移動到配置目錄
將生成的證書文件 elastic-certificates.p12 移動到 Elasticsearch 配置目錄(如 /etc/elasticsearch 或 config 目錄)。
編輯 elasticsearch.yml 文件
在 elasticsearch.yml 文件中添加或修改以下配置項
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /path/to/your/config/elastic-certificates.p12
xpack.security.transport.ssl.keystore.password: your-password
xpack.security.transport.ssl.truststore.path: /path/to/your/config/elastic-certificates.p12
xpack.security.transport.ssl.truststore.password: your-password
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: /path/to/your/config/elastic-certificates.p12
xpack.security.http.ssl.keystore.password: your-password
xpack.security.http.ssl.truststore.path: /path/to/your/config/elastic-certificates.p12
xpack.security.http.ssl.truststore.password: your-password
其中 /path/to/your/config/elastic-certificates.p12 替換為你的證書文件路徑围段,your-password 替換為你在生成證書時設(shè)置的密碼顾翼。
重啟并訪問
修改配置文件后,重啟 Elasticsearch 服務(wù)以使更改生效奈泪。
然后使用https訪問适贸,如:
https://127.0.0.1:9200/
然后在瀏覽器中信任這個證書
會彈出用戶名密碼輸入框,用戶可以用elastic涝桅,密碼就是上面設(shè)置的
會提示不安全“您的連接不是私密連接”拜姿,點高級,選擇繼續(xù)前往
可以查看證書相關(guān)信息冯遂,CN是instance蕊肥,有效期是3年
其他
設(shè)置密碼時提示需要License
設(shè)置密碼 報錯了:“Please check if you have installed a license that allows access to X-Pack Security feature.”
你的版本太老了,許可證不支持 X-Pack 安全功能
查看許可證
curl -X GET "http://localhost:9200/_xpack/license"
如:
{
license: {
status: "active",
uid: "ae895865-22d6-42e5-aaa0-66b78a65d885",
type: "basic",
issue_date: "2023-09-11T09:15:37.704Z",
issue_date_in_millis: 1694423737704,
max_nodes: 1000,
issued_to: "elasticsearch",
issuer: "elasticsearch",
start_date_in_millis: -1
}
}
啟動時報錯
ERROR: [1] bootstrap checks failed
[1]: Transport SSL must be enabled if security is enabled on a [basic] license. Please set [xpack.security.transport.ssl.enabled] to [true] or disable security by setting [xpack.security.enabled] to [false]
當(dāng)設(shè)置了綁定主機時蛤肌,需要配置ssl
network.host: 0.0.0.0