ESPElasticsearch 代理
簡介
由于Elasticsearch沒有提供權(quán)限管理功能(官方shield又收費),特開發(fā)此Proxy,可以針對Elasticsearch Rest的路徑設(shè)置權(quán)限,可以指定信任IP,支持用戶,群組授權(quán)
當(dāng)前版本0.01試用版。
框架基于PHP-Swoole擴展開發(fā),用fast-route庫來做http route處理。
安裝運行
環(huán)境:linux2.6+、php5.5+、mysql5.5+、swoole1.7.20+
下載:https://github.com/xtjsxtj/esp
tar zxvf esp.zip cd esp ./bin/esp start 查看當(dāng)前server進程狀態(tài): ./bin/esp status
配置文件
系統(tǒng)級配置文件,全局生效,不能reload,只能restart
server_conf.php
<?php
class server_conf {
public static $config=array(
'server_name' => 'es_proxy', //server名稱
'log_level' => NOTICE, //跟蹤級別TRACE,DEBUG,INFO,NOTICE,WARNING,ERROR
'listen' => 9501, //listen監(jiān)聽端口
'worker_num' => 1, //工作進程數(shù)
'daemonize' => true, //是否以守護進程方式運行
'log_file' => '/home/jfy/testprog/esproxy/proxy/index.log', //log文件
);
}
工作進程配置文件,支持reload worker_conf.php
<?php
class worker_conf{
public static $config=array(
'log_level' => NOTICE,
'es_url' => 'http://localhost:9200',
'trust_ip' => [
'127.0.0.1'
],
'groups' => [
'cpyf' => 'jfy,zyw',
],
'users' => [
'jfy' => '123456',
'zyw' => '123456',
],
'auths' => [
['OPTIONS', '/{param:.+}', '*'],
['GET', '/{param:.+}', '*'],
['POST', '/{param1}/_search', '*'],
['POST', '/{param1}/{param2}/_search', '*'],
['PUT', '/kibana-int/{param:.+}', '*'],
['DELETE', '/kibana-int/{param:.+}', '@cpyf'],
],
);
}
針對Elasticsearch的訪問權(quán)限配置上,只需要修改worker_conf配置文件即可。
配置文件一看上去就應(yīng)該明白了:
es_url,后端Elasticsearch http地址
trust_ip,信任的IP列表,不做任何權(quán)限限制
groups,用戶組列表,組下可包含多個用戶,用戶必須存在于users配置中
users,用戶列表,用戶名 => 密碼
-
auths,訪問詳細rest路徑權(quán)限設(shè)置
method restpath users
多個用戶以","分隔,用戶組以@開頭,如:jfy,@cpyf表示用戶jfy和用戶組cpyf中的所有用戶都可以訪問
"*"表示所有用戶均可以訪問
-
當(dāng)用戶列表中指明用戶或組時,http header中必須包括Basic Auth用戶和密碼信息:
Authorization: Basic amZ5OjttMzQ1Ng==
method 支持數(shù)組方式 ["GET","POST"]
restpath 訪問Elasticsearch的具體路徑,支持正則表達式,詳情參見:https://github.com/nikic/FastRoute
user 授權(quán)訪問的用戶
