ESP Elasticsearchエージェント(PHP Swoole)


Elasticsearch Proxy (ESP)
概要
  • Elasticsearchは権限管理機能(公式shieldは有料)を提供していないため、このProxyを開発し、Elasticsearch Restの経路に権限を設定することができ、信頼IPを指定することができ、ユーザーをサポートすることができ、グループ授権
  • 現行バージョン0.01試用版.
  • フレームワークはPHP-Swoole拡張に基づいて開発され、fast-routeライブラリでhttp route処理を行う.

  • インストール運転
    環境:linux 2.6+、php5.5+、mysql5.5+、swoole1.7.20+ダウンロード:https://github.com/xtjsxtj/esp
    tar zxvf esp.zip  
    cd esp  
    ./bin/esp start  
    
        server    :
    ./bin/esp status

    プロファイル
    システムレベルのプロファイル、グローバル有効、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    
            'worker_num' => 1,            //     
            '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のアクセス権構成では、worker_を変更するだけです.confプロファイルでいいです.
    プロファイルが表示されると、次のことがわかります.
  • es_url,バックエンドElasticsearch httpアドレス
  • trust_ip,信頼できるIPリスト,権限制限なし
  • groups,ユーザグループリスト,グループの下に複数のユーザを含めることができ,ユーザはusers構成に存在する必要がある
  • users,ユーザリスト,ユーザ名=>パスワード
  • auths,アクセス詳細restパス権限設定
      method restpath users
  • methodサポート配列方式["GET","POST"]
  • restpathはElasticsearchの特定のパスにアクセスし、正規表現をサポートします.詳細は、次のを参照してください.https://github.com/nikic/FastRoute
  • userアクセス許可ユーザー
  • 複数のユーザは「,」で区切られ、ユーザグループは@で始まる.例えばjfy,@cpyfは、ユーザjfyとユーザグループcpyfのすべてのユーザが
  • にアクセスできることを示す.
  • "*"は、すべてのユーザーがアクセスできることを示します
  • ユーザリストにユーザまたはグループが指定されている場合、httpヘッダにはBasic Authユーザとパスワード情報が含まれている必要があります:
    Authorization: Basic amZ5OjttMzQ1Ng==