主题
用户与角色
在启用 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 权限体系。