1. 程式人生 > 實用技巧 >基於x-pack的使用者管理(一)

基於x-pack的使用者管理(一)

基於x-pack的使用者管理(一)

“域”(realms)

Elasticsearch安全管理外掛通過使用者認證、使用者授權、加密通訊、審計日誌、IP過濾等多種手段來保證叢集的安全。x-pack的安全外掛可以通過使用者名稱密碼、證書、令牌和其他多種方法實現使用者認證。Elasticsearch支援通過多種服務實現使用者鑑定,這些方式通稱為“域”(realms)。

常見的realms有:

  • native
  • ldap
  • active_directory
  • file
  • pki
  • file
  • saml
  • oidc

支援安全管理的ES版本

Elasticsearch 從6.8.0/7.1.0後xpack 開源,基礎版不需要授權免費使用,支援使用者認證、授權、監控等功能

Elasticsearch 5.X的版本無法免費使用xpack提供的安全功能

內建使用者和系統使用者

Elasticsearch在開啟安全配置後,會有系統自帶的管理帳號,稱為內建使用者。同時也有自帶的系統使用者。
系統使用者和內建使用者的區別是:內建使用者可以用來登陸,系統使用者是es叢集內部通訊使用的,不能用來登陸,但是可以在審計日誌中看到這些使用者產生的事件。

  • 內建使用者
    • elastic
    • kibana
    • beats_system
    • apm_system
    • remote_monitoring_user
  • 系統使用者
    • _system
    • _xpack
    • _xpack_security

使用者資料的儲存

當使用Elasticsearch預設的native服務做使用者認證授權時,使用者資料儲存在.security-7 所引中,索引資料可檢視、修改、刪除

curl -X GET -i 'http://localhost:9200/.security-7/_search'

{
  "took": 3,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 5,
      "relation": "eq"
    },
    "max_score": 1.0,
    "hits": [{
      "_index": ".security-7",
      "_type": "_doc",
      "_id": "reserved-user-kibana",
      "_score": 1.0,
      "_source": {
        "password": "$2a$10$EthtJnnPL9BXDnG2iH8LVedy5s4tOIPrvpZyRSJALw2IIR1ge/jl.",
        "enabled": true,
        "type": "reserved-user"
      }
    },...
    }]
  }
}

如何開啟使用者認證和授權功能

  • 第一步,開啟安全開關

    修改 ES_HOME/config/elasticsearch.yml,新增 xpack.security.enabled: true

  • 第二步,初始化內建使用者的密碼

    執行 ES_HOME/bin/elasticsearch-set-passwords.sh interactive,通過互動的方式依次設定內建使用者的密碼

  • 第三步,登陸

    curl -XGET "http://localhost:9200" -u elastic:6789@jkl
    
    {
      "name" : "node-1",
      "cluster_name" : "my-application",
      "cluster_uuid" : "gZRcq4pUTFOdZSRy-JHrFQ",
      "version" : {
        "number" : "7.2.0",
        "build_flavor" : "default",
        "build_type" : "tar",
        "build_hash" : "508c38a",
        "build_date" : "2019-06-20T15:54:18.811730Z",
        "build_snapshot" : false,
        "lucene_version" : "8.0.0",
        "minimum_wire_compatibility_version" : "6.8.0",
        "minimum_index_compatibility_version" : "6.0.0-beta1"
      },
      "tagline" : "You Know, for Search"
    }