教程 elasticsearch tutorial

用户与角色

在启用 X-Pack 安全功能的 Elasticsearch 中,用户与角色是访问控制的核心。通过角色授予权限,用户继承角色,实现灵活的权限管理体系。

1. 启用用户认证

确保在 elasticsearch.yml 中启用安全功能(默认 7.1+ 开启):

yaml
xpack.security.enabled: true

`

启动后,将强制所有请求进行身份认证。

2. 内置用户与角色

Elasticsearch 提供多个内置用户和角色,常见如:

用户名 说明
elastic 超级管理员(初始默认密码)
kibana Kibana 服务账户
logstash_system Logstash 服务账户

内置角色如:

角色名 权限说明
superuser 拥有所有权限
kibana_user 可使用 Kibana 的基本功能
monitoring_user 只读权限查看监控信息

3. 创建用户与角色

创建角色(使用 API)

json
PUT /_security/role/data_reader
{
  "cluster": ["monitor"],
  "indices": [
    {
      "names": [ "logs-*" ],
      "privileges": [ "read", "view_index_metadata" ]
    }
  ]
}

创建用户并绑定角色

json
POST /_security/user/alice
{
  "password" : "password123",
  "roles" : [ "data_reader" ],
  "full_name" : "Alice",
  "email" : "[email protected]"
}

4. Kibana 界面管理用户与角色(推荐)

在 Kibana 中访问:

Stack Management → Security → Users / Roles

提供图形界面创建用户、设置密码、分配角色。

5. 权限粒度

角色支持以下粒度权限控制:

  • 集群级权限:如 monitor, manage, manage_security
  • 索引级权限:如 read, write, create_index, view_index_metadata
  • 字段级安全:限制用户访问文档字段(需商业授权)
  • 文档级安全:基于查询条件限制访问特定文档(需商业授权)

6. 常用命令示例

列出所有用户:

bash
GET /_security/user

列出所有角色:

bash
GET /_security/role

删除用户:

bash
DELETE /_security/user/alice

7. 安全建议

  • 修改默认内置账户密码并禁用不必要账户
  • 使用 API Key 或服务账户代替明文密码传输
  • 为不同功能组件(Kibana、Beats、Logstash)设置独立角色权限
  • 定期审查用户列表和权限分配

通过合理配置用户与角色,可构建安全、可控、最小权限原则的 Elasticsearch 权限体系。