¿Cómo defino el acceso de seguridad en Elasticsearch? Tengo el complemento elasticsearch-head pero su acceso no requiere ninguna seguridad.
76
¿Cómo defino el acceso de seguridad en Elasticsearch? Tengo el complemento elasticsearch-head pero su acceso no requiere ninguna seguridad.
El complemento mencionado en esta respuesta ya no se admite activamente.
No hay control de acceso integrado en elasticsearch. Por lo tanto, necesitaría configurar un proxy inverso (aquí hay una publicación de blog sobre cómo configurar nginx), use uno de los complementos de elasticsearch de terceros como https://github.com/Asquera/elasticsearch-http-basic o use el plugin de seguridad oficial Shield .
<shamelessPlug>
Lo siento, pero tengo serias dudas sobre todos estos complementos y proxies que solo intentan capturar consultas con expresiones regulares descuidadas a nivel HTTP.
¿Regex toda la sintaxis ES posible que pueda realizar una escritura? ¿Cómo se filtra por índice? ¿Qué hay de los alias de índice? ¿Consultas de índices múltiples?
Escribí un complemento con licencia del MIT ( readonly-rest-plugin ) que hace exactamente esto.
Puede hacer coincidir la solicitud mediante:
✔️ Nombre de host, IP e IP con máscara de red
✔️ Los índices (se admiten comodines) y los alias de índice se resuelven
✔️ Autenticación básica HTTP
También tiene soporte de primera clase para la autenticación Kibana :)
</shamelessPlug>
fuente
Elasticsearch ahora tiene un complemento de seguridad http://www.elasticsearch.org/blog/shield-know-security-coming-soon/
fuente
Actualización : esto funciona bastante bien y es (para la mayoría de las funciones) gratuito y de código abierto: https://github.com/floragunncom/search-guard
NOTA: El complemento mencionado en este artículo ya no se mantiene
Quizás esto ayude: https://github.com/salyh/elasticsearch-security-plugin
Este complemento agrega la funcionalidad de seguridad http / rest a Elasticsearch en una especie de módulos separados. En lugar de Netty, se utiliza un Tomcat 7 integrado para procesar solicitudes http / rest.
Actualmente, para la autenticación y autorización basadas en el usuario, Kerberos y NTLM son compatibles con waffle de bibliotecas de terceros (solo en servidores Windows). Para servidores UNIX, Kerberos es compatible a través de la biblioteca de terceros tomcatspnegoad (funciona con cualquier implementación de kerberos. Para la autorización, se admite Active Directory y LDAP genérico).
Puede usar este complemento también sin Kerberos / NTLM, pero solo está disponible la autenticación basada en host.
fuente
La única forma preferible de habilitar la seguridad en Elasticsearch es a través del complemento X-Pack.
https://www.elastic.co/guide/en/x-pack/current/xpack-introduction.html
Este es un complemento multipropósito y se ajustará bien a los fines de seguridad, ya que también puede usar el monitoreo y configurar las alertas y notificaciones según sus necesidades.
Como ya es muy reconocido, estoy seguro de que Elasticsearch continuará con esto para iniciar sesión.
fuente
Si desea utilizar la autenticación básica con Kibana3, aquí está mi solución:
https://github.com/fangli/kibana-authentication-proxy
Admite no solo el backend basicAuth ES, sino también GoogleOAuth y BasicAuth para el cliente. Por favor, dale una estrella si te funciona, gracias.
fuente
Prueba Shield . Tiene Autenticación y Autorización. Por ahora necesita una licencia. No pasará mucho tiempo antes de que la gente cree complementos de código abierto similares.
fuente
Soy muy novato en ElasticSearch, pero creo que el complemento X-Pack debería aparecer aquí como respuesta: https://www.elastic.co/guide/en/x-pack/current/index.html
Tengo entendido que X-Pack es ahora el estándar de facto para proteger ElasticSearch (y mucho más), incluida la autenticación.
fuente
Con respecto a una solución específica a este problema, encontré lo siguiente que es una implementación simple de un enfoque de proxy inverso como se menciona en otras respuestas:
https://gist.github.com/jpluscplusm/9227777
Como advertencia, parece que al menos algunos en Elasticsearch no consideran que nginx sea la solución óptima, pero creo que eso depende de las especificaciones de sus requisitos de autenticación (RBAC, recuento de usuarios, número de índices, frecuencia de modificaciones de la lista de acceso ). Para algunos usuarios (incluido yo mismo), el primer ejemplo es suficiente.
http://www.elasticsearch.org/blog/restricting-users-kibana-filtered-aliases/
Si encuentra que nginx no cumple con los requisitos específicos, algo como esto podría funcionar: https://github.com/lukas-vlcek/node.es
fuente
Como ElasticSearch es una especie de servicio de base de datos, probablemente no querrá que se exponga públicamente de todos modos.
No confío en que los complementos hagan eso por mí, así que lo hice con un proxy nginx.
Este tutorial es muy, muy útil:
http://www.minvolai.com/blog/2014/08/Setting-up-a-Secure-Single-Node-Elasticsearch-server-behind-Nginx/Setting-up-a-Secure-Single-Node-Elasticsearch- servidor detrás de Nginx /
fuente
A partir de la
Elastic
versión 6.8 , algunas funciones de seguridad se volvieron gratuitas (lea: https://www.elastic.co/blog/security-for-elasticsearch-is-now-free )Algunos pasos básicos para la autenticación básica
"xpack.security.enabled=true"
.Por ejemplo, si está utilizando un
docker-compose.yml
archivo, agregue la línea debajo deenvironment
:A continuación, tendrá que especificar
elasic
qué contraseña debe aceptar el usuario predeterminado (que se llama "elástica") para autenticarse. Lo haces conELASTIC_PASSWORD
la variable de entorno. En nuestro ejemplo:Ahora, estás listo para empezar. Cuando corres elástico:
docker run --rm --name elastic -p 9200:9200 -v ELASTIC_PASSWORD=123456 -v xpack.security.enabled=true elastic:6.8.0
Y haz:,
curl localhost:9200
obtendrás un error:Que es exactamente lo que quiere (sin nombre de usuario y contraseña, por lo que no se permite el acceso)
Muy importante tener en cuenta :
Cuando
Elastic
comienza, se preformaBootstrap checks
( https://www.elastic.co/guide/en/elasticsearch/reference/6.8/bootstrap-checks.html ).Hay una diferencia
Elastic
entre el modo de "desarrollo" y el de "producción" cuando se realizan esos controles.Si se
elastic
ejecuta enproduction
modo, esas configuraciones no son suficientes (la comprobación de Bootstrap fallará y la base de datos no funcionará). También debe agregar configuraciones de cifrado SSL entre nodos. Leer más: https://www.elastic.co/guide/en/elasticsearch/reference/6.8/security-settings.htmlfuente