我目前正在将现有的ELK应用程序从EC2迁移到Amazon Elasticsearch Service.首先,我决定保留现有的Kibana服务器,只将其切换为指向新的ES域.所以我已经改变了我现有的kibana配置,如本节所述:http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-managedomains.html#es-managedomains-kibana
然后,我开始遇到一些问题,其中大部分内容都在本文中解决:Kibana将不会连接到亚马逊Elasticsearch服务上的Elasticsearch ,但步骤4除外.Kibana仍然需要通过标头进行身份验证.由于我没有使用CLI或AWS SDK通过访问密钥进行身份验证,而是使用HTTP/S调用(即http:// search- [es-domain]:80在kibana配置文件中),它看起来像我无论如何都需要签署我的HTTP请求(如前一个链接中的步骤4所示)但是,我正在寻找其他选项来克服这个问题,以便拥有自己的Kibana服务器,集群,具有适当级别的访问控制来自外部互联网,同时仍然保护仅对某些IAM用户/角色访问Elasticsearch.
然后我决定尝试另一种选择:实现我自己的代理(在这种情况下使用我现有的Nginx服务器使其指向新的ES域.这种方法在Reinvent bdt209-launch-amazon-elasticsearch-的幻灯片56中提出.for-realtime-data-analytics slideshare.这样,我可以让Web服务器可以访问世界(通过端口443/80),当然还有基本的Web身份验证,同时使用非常严格的访问策略保护ES域只允许IP基于(以及IAM角色)访问Elasticsearch集群.
但是我仍然遇到了同样的问题.我收到这条消息作为回应:
"message": "'a2liYW5hYWRtaW46YWRtaW5AMTIz' not a valid key=value pair (missing equal-sign) in Authorization header: 'Basic a2liYW5hYWRtaW46YWRtaW5AMTIz'."
Run Code Online (Sandbox Code Playgroud)
这意味着我需要签署请求.我可以就如何克服这个问题提出一些建议吗?我是否真的需要以编程方式签署网络请求?或者是否有其他选项而不影响安全性和访问控制(意味着允许受限制的公共访问kibana,对ES集群的访问权限(角色和基于IP)非常有限)?
非常感谢.