elasticsearch使用jetty进行简单的权限控制
插件参数
1.安装
改插件地址:https://github.com/sonian/elasticsearch-jetty
这个插件目前是支持0.20.2版本的es,新版本的es有些方法名变了,把源码下下来,把变了名的方法改过来从新编译打包就行。
打包完后把project home/target/release里面的压缩文件放到es的plugins目录解压,
修改es配置文件elasticsearch.yml,添加
http.type: com.sonian.elasticsearch.http.jetty.JettyHttpServerTransportModule
把项目根目录下的config文件夹里面的文件(除了elasticsearch.yml和logging.yml)复制到es的config目录下。
启动es。
2.验证插件是否安装成功
(1)
es控制台出现一下字样:
[2013-04-14 08:45:11,658][INFO ][org.eclipse.jetty.server.Server] [Songbird] jet
ty-8.1.4.v20120524
[2013-04-14 08:45:11,845][INFO ][org.eclipse.jetty.server.AbstractConnector] [So
ngbird] Started SelectChannelConnector@0.0.0.0:9200
(2)
随便发送一个请求,如$ curl -I "http://localhost:9200/"
查看响应头,如果包含Server: Jetty(8.1.4.v20120524)就表示安装成功。
HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Access-Control-Allow-Origin: *
Content-Length: 0
Server: Jetty(8.1.4.v20120524)
3.配置ssl使其支持https请求
配置在原有基础上加上
sonian.elasticsearch.http.jetty:
config: jetty.xml,jetty-ssl.xml
ssl_port: 9443
keystore_password: "OBF:1nc01vuz1w8f1w1c1rbu1rac1w261w9b1vub1ndq"
4.添加基本权限控制
修改es配置文件,添加jetty-hash-auth.xml,jetty-restrict-writes.xml两个文件到config中
http.type: com.sonian.elasticsearch.http.jetty.JettyHttpServerTransportModule
sonian.elasticsearch.http.jetty:
config: jetty.xml,jetty-hash-auth.xml,jetty-restrict-writes.xml
其中jetty-hash-auth.xml文件里面引用到realm.properties这个文件配置的权限信息。
格式如下:
username: password[,rolename ...]
即:用户名:密码[,角色1,角色2...]
可以看看例子:
superuser: Adm1n,admin,readwrite
user: Passw0rd,readwrite
例如第二个就是用户名为user,密码为Passw0rd,角色为readwrite,即有读写的权限。这个权限角色是在jetty-restrict-writes.xml里面设置的。
jetty-restrict-writes.xml这个文件对es集群的写操作进行了限制,即要通过鉴权才能进行写操作。具体设置可以查看这个文件。
这时重新启动es,对es进行写入或删除删除操作,如果发现报403错误,就表示配置成功。
这时就必须在请求头加上权限验证,格式如下:
参数名:Authorization
值:Basic + Base64(用户名:密码) 即对用户名和密码进行Base64加密
如加密后的值为:Basic dXNlcjpQYXNzdzByZA==
curl方式调用
curl -v --user username:password http://localhost:9200
5.日志记录请求
设置es,把http.type设置成FilterHttpServerTransportModule
http.type: com.sonian.elasticsearch.http.filter.FilterHttpServerTransportModule
添加详细设置,该插件可以自由控制不同请求url的日志级别,如一些不是很重要的的请求(如查询集群健康和节点状态),我们把它设置成trace状态,如果是搜索或统计这些重要的查询,我们可以设置记录它的请求的body信息,配置如下。
sonian.elasticsearch.http.filter:
http_filter_chain: ["logging"]
http_filter:
# Request logging filter
logging:
logger: request
format: text
type: com.sonian.elasticsearch.http.filter.logging.LoggingFilterHttpServerAdapter
level: INFO
log_body: false
loggers:
stats:
path: ["/_cluster/health", "/_cluster/nodes", "/_cluster/state", "/_cluster/nodes/{node}/stats"]
method: GET
level: TRACE
searches:
path: ["/_search", "/_search/scroll", "/_search/scroll/{scroll_id}", "/{index}/_search",
"/{index}/{type}/_search", "/{index}/{type}/{id}/_mlt"]
method: GET, POST
log_body: true
count:
path: ["/_count", "/{index}/_count", "/{index}/{type}/_count"]
method: GET, POST
log_body: true
这样设置的话日志都是写进一个文件里,如果想每天对文件进行拆分,可以修改config里面的logging.yml文件,添加如下内容:
logger:
........
request: INFO, request_log_file
additivity:
request: false
appender:
.........
request_log_file:
type: dailyRollingFile
file: ${path.logs}/${cluster.name}_requests.log
datePattern: "'.'yyyy-MM-dd"
layout:
type: pattern
conversionPattern: "[%d{ABSOLUTE}] %m%n"
6.开启GZip压缩响应信息
只需把jetty-gzip.xml加到config参数就行。
转载于:https://www.cnblogs.com/huangpeng1990/p/4364346.html
elasticsearch使用jetty进行简单的权限控制相关推荐
- 实现sessionfilter_session应用--采用filter和session实现简单用户权限控制
前面有讲到一些session的基础知识点,这里那我们就将session和filter做结合,实现一个简单地应用处理用于一般后端管理程序的权限控制! ①我们先建立一个filter的实现类Security ...
- hook监控限制_**CodeIgniter通过hook的方式实现简单的权限控制
根据自己的实际情况,需要两个文件,一个是权限控制类,Acl,另外一个是权限配置的文件acl.php放在了config这个目录下. Acl这个类放在了application/hook/acl.php.通 ...
- tp3.2.3权限控制二之后台管理部分,及菜单栏目显示问题
上篇记录了一下权限控制部分的实现过程,以及实现的代码.但那些只是实现了简单的权限控制,具体的后台当然要有用户的管理,用户组的管理,规则管理等.这篇主要是写后台部分,和上篇凑成一个完整的环. 第一篇文章 ...
- tp3.2.3权限控制一之详解及demo
一.首先需明确TP3.2.3的权限控制是怎么实现的 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有多个角色, ...
- React+DvaJS 之 hook 路由权限控制
博客 学院 下载 GitChat TinyMind 论坛 APP 问答 商城 VIP 活动 招聘 ITeye 写博客 发Chat 登录注册 原 React+DvaJS 之 hook 路由权限控制 20 ...
- Elasticsearch 权限控制
随着ES的广泛使用,其安全问题也备受关注,虽然ES集群一般部署于公司内网,但多个业务部门使用同一套ES集群的情况非常多,如何做好数据共享.访问隔离,防止用户误操作.数据泄露等,这需要一套良好的权限控制 ...
- 给Elasticsearch 和Kibana添加基于角色的访问权限控制
给ELK 添加Shield权限控制 背景 这两天整个项目(电商SAAS系统)上线后,由于系统变得很大,每天产生的业务日志.访问日志.数据库慢查询.php等语言日志,都分布在不同的机器上,所以需要统一收 ...
- 自己动手实现简单权限控制
最近接手一小型私活,用户量封顶上千,工期预期的也相对宽松,权限控制当然是必不可少. web 权限控制,很多项目会引入 shiro/spring-security. shiro/spring-secur ...
- Keycloak简单几步实现对Spring Boot应用的权限控制
我们在上一篇初步尝试了keycloak,手动建立了一个名为felord.cn的realm并在该realm下建了一个名为felord的用户.今天就来尝试一下对应的Spring Boot Adapter, ...
最新文章
- xmanager破解待验证
- JS函数浅析之constructor、prototype属性
- 【Android 安全】DEX 加密 ( 常用 Android 反编译工具 | apktool | dex2jar | enjarify | jd-gui | jadx )
- EasyMock 使用方法与原理剖析
- C#中全角与半角的转换
- 如何卸载pip 重新安装mysql_pip install cymysql失败的解决办法 | 厘米天空
- iPhone Xs发布会其实是苹果计算机视觉技术发布会!
- python的编程方式模块化_我的Python笔记·模块化编程(一)
- android 10闪退如何解决,安卓Activity启动在10.0下闪退
- JPush极光推送Java服务器端API
- C# WPF 高级教程
- php输出excel乱码,如何解决php导出excel乱码的问题
- deepface:最先进轻量级人脸识别和人脸属性分析框架讲解
- 如何彻底删除电脑上的软件
- 【Winform-右下角弹窗】实现右下角弹窗,提示信息
- 全球及中国生物农药行业投资状况与十四五运行态势研究报告2022版
- 中药材经营需要哪些证件
- 赛事解读|中国工程机器人大赛暨国际公开赛——飞思实验室空中机器人项目-仿真与自主任务赛项
- 这是一份用心整理的Android面试总结,面试真题解析
- 提高计算机存储性能的技术,提高电脑存储速度的方法
热门文章
- python在excel中的应用-Python利用pandas处理Excel数据的应用详解
- python可以做什么项目-适合Python 新手的5大练手项目,你练了么?
- python推荐系统-基于Python的推荐系统的设计与实现
- python stm32-实现Python与STM32通信方式
- python输出print到txt-pycharm实现print输出保存到txt文件
- 西安python工资怎么样-在西安为什么对Python编程需求这么大?工资这么高?
- r语言和python-r语言和python学哪个?
- python编程爱心-Python使用turtle库画一个爱心构成的爱心
- python画五角星-python画五角星和六角星程序 | 学步园
- 用python画太阳花-Python画太阳花