- 5700 萬使用者資料洩漏
- 1.08 億條投注資訊洩漏
原因分析
- ES 在預設安裝後,不提供任何形式的安全防護
- 錯誤的配置資訊導致公網可以訪問 ES 叢集
- 在
elasticsearch.yml
檔案中, server.host
被錯誤的配置為 0.0.0.0
- 設定 Nginx 的反向代理
- 安裝免費的 Security 外掛
- X-Pack 的 Basic 版
- 認證體系的幾種型別
- 提供使用者名稱和密碼
- 提供祕鑰或 Kerberos 票據
- Realms : X-Pack 中的認證服務
- 內建 Realms (免費)
- File / Native (使用者名稱密碼儲存在 Elasticsearch)
- 外部 Realms (收費)
- LDAP / Active Directory / PKI / SAML / Kerberos
RBAC - 使用者鑑權
- 什麼是 RBAC:Role Based Access Control, 定義一個角色,並分配一組許可權。許可權包括索引 級,欄位級,叢集級的不同的操作。然後通過將角色分配給使用者,使得使用者擁有這些許可權
- User:The authenticated User
- Role:A named set of permissions
- Permission – A set of one or more privileges against a secured resource
- Privilege – A named group of 1 or more actions that user may execute against a secured resource
Privilege
- Cluster Privileges
- all / monitor / manager / manage_index / manage_index_template / manage_rollup
- Indices Privileges
- all / create / create_index / delete / delete_index / index / manage / read /writeview_index_metadata
- 內建的角色與使用者
使用者 |
角色 |
---|
elastic |
Supper User |
kibana |
The user that is used by Kibana to connect and communicate with Elasticsearch. |
logstash_system |
The user that is used by Logstash when storing monitoring information in Elasticsearch. |
beats_system |
The user that the different Beats use when storing monitoring information in Elasticsearch. |
apm_system |
The user that the APM server uses when storing monitoring information in Elasticsearch. |
Remote_monitoring_user |
The user that is used by Metricbeat when collecting and storing monitoring information in Elasticsearch. |
使用 Security API 建立使用者
POST /_security/user/lsk
{
"password": "password",
"roles": ["admin"],
"full_name": "Crazy Zard",
"email":"541306829@qq.com",
"metadata": {
"intelligence":7
}
}
開啟並配置 X-Pack 的認證與鑑權
- 修改配置檔案,開啟認證於授權
- bin/elasticsearch -E node.name=node0 -E cluster.name=geektime -E path.data=node0_data -E http.port=9200 -E xpack.security.enabled=true - E xpack.security.transport.ssl.enabled=true
- 建立預設的使用者和分組
- bin/elasticsearch-password interactive
- 使用docker時並進入到容器中 elasticsearch-setup-passwords interactive
- 當叢集開啟身份認證之後,配置 Kibana
- Demo
- 建立一個Role,配置為某個索引只讀許可權 、建立一個使用者,把使用者加入Role
配置 Kibana
- 修改 kibana.yml
- elasticsearch.username: “kibana”
- elasticsearch.password: “changeme”
建立 Role
建立使用者
本作品採用《CC 協議》,轉載必須註明作者和本文連結