推荐答案
在 Elasticsearch 中配置用户认证可以通过以下步骤实现:
启用安全功能:在
elasticsearch.yml
配置文件中,设置xpack.security.enabled
为true
。xpack.security.enabled: true
配置内置用户:Elasticsearch 提供了内置用户,如
elastic
用户,可以通过以下命令设置密码:bin/elasticsearch-setup-passwords interactive
配置角色和权限:在
roles.yml
文件中定义角色及其权限,例如:my_role: cluster: ["monitor"] indices: - names: ["my_index"] privileges: ["read"]
配置用户和角色映射:在
users
和users_roles
文件中定义用户及其角色映射,例如:# users my_user: password: "my_password" roles: ["my_role"] # users_roles my_role: - "my_user"
重启 Elasticsearch:完成配置后,重启 Elasticsearch 以使更改生效。
本题详细解读
1. 启用安全功能
Elasticsearch 默认情况下是未启用安全功能的,这意味着任何人都可以访问集群。为了启用安全功能,需要在 elasticsearch.yml
配置文件中设置 xpack.security.enabled
为 true
。这个设置会启用 Elasticsearch 的安全模块,包括用户认证、角色管理、加密通信等功能。
2. 配置内置用户
Elasticsearch 提供了一些内置用户,如 elastic
用户,这些用户具有管理员权限。为了确保这些用户的安全性,需要通过 elasticsearch-setup-passwords
命令为这些用户设置密码。这个命令会提示你为每个内置用户设置密码,确保只有知道密码的用户才能访问集群。
3. 配置角色和权限
在 Elasticsearch 中,角色用于定义用户可以执行的操作。通过在 roles.yml
文件中定义角色及其权限,可以精细地控制用户对集群和索引的访问权限。例如,可以定义一个角色 my_role
,该角色只能监控集群状态,并且只能读取特定的索引 my_index
。
4. 配置用户和角色映射
在 users
文件中定义用户及其密码,在 users_roles
文件中定义用户与角色的映射关系。通过这种方式,可以将用户与角色关联起来,确保用户只能执行其角色所允许的操作。例如,可以定义一个用户 my_user
,并将其映射到 my_role
角色,这样 my_user
就只能执行 my_role
所允许的操作。
5. 重启 Elasticsearch
完成上述配置后,需要重启 Elasticsearch 以使更改生效。重启后,Elasticsearch 将启用安全功能,并且只有经过认证的用户才能访问集群。