管理 ES 叢集:管叢集身份認證與使用者鑑權

CrazyZard發表於2020-02-16
  • 5700 萬使用者資料洩漏
  • 1.08 億條投注資訊洩漏

    原因分析

  • ES 在預設安裝後,不提供任何形式的安全防護
  • 錯誤的配置資訊導致公網可以訪問 ES 叢集
    • elasticsearch.yml 檔案中, server.host被錯誤的配置為 0.0.0.0
  • 身份認證
    • 鑑定使用者是否合法
  • 使用者鑑權
    • 指定哪個使用者可以訪問哪個索引
  • 傳輸加密
  • 日誌審計
  • 認證體系的幾種型別
    • 提供使用者名稱和密碼
    • 提供祕鑰或 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 協議》,轉載必須註明作者和本文連結

快樂就是解決一個又一個的問題!

相關文章