ElasticSearch权限控制实战

1 简介

  当前直接使用ElasticSearch以及通过Kibana访问时,没有做任何限制,没有做用户和权限的控制,安全性上有一定风险,因此通过ES提供的X-PACK来实现这一需求。官网简介如下:X-Pack是一种Elastic Stack扩展,可将安全性,警报,监控,报告和图形功能捆绑到一个易于安装的软件包中。 通过X-Pack组件可以无缝协同工作,但您可以轻松地启用或禁用要使用的功能(6.3版本后默认集成,免费功能可直接使用)。

2 部署安装

2.1生成证书

借助elasticsearch-certutil命令生成证书:
bin/elasticsearch-certutil ca -out config/elastic-certificates.p12 -pass ""

● 执行成功后在config目录下会生成证书文件,如下所示:

 

2.2配置文件修改

cd elasticsearch/config

vi elasticsearch.yml

新增如下配置项:

xpack.security.enabled: true

xpack.security.transport.ssl.enabled: true

xpack.security.transport.ssl.verification_mode: certificate

xpack.security.transport.ssl.keystore.path: elastic-certificates.p12

xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

2.3设置密码

   执行设置用户名和密码的命令,这里需要为4个用户分别设置密码,elastic, kibana, logstash_system,beats_system
     执行  bin/elasticsearch-setup-passwords interactive   --手动配置每个用户密码模式

注意:在设置密码前需执行bin/elasticsearch -d 命令启动es

3 Index权限

● all : 最高权限,选择之后,无论其它的选不选.都具有所有权限

● manage: 集群数据增删改查所有权限。覆盖下面所有选项

● write : 增删改操作。覆盖下面所有选项

● read: 只读操作

● index: 插入和更新操作

● create: 插入操作

● delete: 删除操作

● delete_index: 删除索引

● create_index: 创建索引

4 权限管理Api

4.1角色管理

https://www.elastic.co/guide/en/elasticsearch/reference/6.0/security-api-roles.html

● GET /_xpack/security/role

● GET /_xpack/security/role/<name>

● POST /_xpack/security/role/<name>/_clear_cache

● POST /_xpack/security/role/<name>

● PUT /_xpack/security/role/<name>

4.2用户管理

https://www.elastic.co/guide/en/elasticsearch/reference/6.0/security-api-users.html

● GET /_xpack/security/user

● GET /_xpack/security/user/<username>

● DELETE /_xpack/security/user/<username>

● POST /_xpack/security/user/<username>

● PUT /_xpack/security/user/<username>

● PUT /_xpack/security/user/<username>/_disable

● PUT /_xpack/security/user/<username>/_enable

● PUT /_xpack/security/user/<username>/_password

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch 提供了一系列的安全功能,包括用户和权限控制。在 Elasticsearch 中,用户可以使用内置的用户管理功能进行创建、修改和删除。每个用户都可以分配一个或多个角色,而每个角色都可以授予一组权限。这样,在访问 Elasticsearch 时,系统会检查用户的身份、角色和权限,并根据这些信息来控制用户可以访问哪些数据和执行哪些操作。 以下是一些关于 Elasticsearch 用户和权限控制的常见问题和答案: 1. 如何创建一个新用户? 可以使用 Elasticsearch 的API来创建一个新用户。例如,可以使用以下命令来创建一个名为“myuser”的用户: ``` PUT _security/user/myuser { "password" : "mypassword", "roles" : [ "myrole" ] } ``` 该命令将创建一个名为“myuser”的用户,该用户的密码为“mypassword”,并分配了一个名为“myrole”的角色。 2. 如何创建一个新角色? 同样,可以使用 Elasticsearch 的 API 来创建一个新角色。例如,可以使用以下命令来创建一个名为“myrole”的角色: ``` PUT _security/role/myrole { "indices": [ { "names": [ "myindex" ], "privileges": [ "read" ] } ] } ``` 该命令将创建一个名为“myrole”的角色,该角色允许读取名为“myindex”的索引。 3. 如何授予一个用户特定的权限? 可以将一个或多个角色分配给用户,从而授予用户相应的权限。例如,可以使用以下命令将名为“myrole”的角色分配给名为“myuser”的用户: ``` POST _security/user/myuser/_update { "roles" : [ "myrole" ] } ``` 这将使名为“myuser”的用户具有名为“myrole”的角色所授予的所有权限。 4. 如何禁止用户访问某个索引? 可以在角色定义中指定哪些索引是允许访问的。例如,如果要禁止名为“myuser”的用户访问名为“myindex”的索引,可以在“myrole”角色定义中不包含该索引。例如: ``` PUT _security/role/myrole { "indices": [ { "names": [ "*" ], "privileges": [ "read" ] } ] } ``` 这将创建一个名为“myrole”的角色,该角色允许读取所有索引,但名为“myindex”的索引不在其中。 5. 如何确保 Elasticsearch 安全? 为了确保 Elasticsearch 的安全,建议采取以下措施: - 启用安全功能,包括用户和权限控制。 - 禁用不必要的插件和功能。 - 将 Elasticsearch 部署在受保护的网络中,并限制对 Elasticsearch 的访问。 - 使用 HTTPS 加密传输数据。 - 定期备份 Elasticsearch 数据,并存储在安全的位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值