En este módulo, aprenderemos cómo asegurar Elasticsearch mediante la implementación de autenticación y autorización de usuarios. Estos conceptos son fundamentales para proteger los datos y garantizar que solo los usuarios autorizados puedan acceder y modificar la información.
Conceptos Clave
- Autenticación
La autenticación es el proceso de verificar la identidad de un usuario. En Elasticsearch, esto se puede lograr mediante varios métodos, como autenticación básica, autenticación basada en tokens, y autenticación mediante proveedores externos (LDAP, Active Directory, etc.).
- Autorización
La autorización es el proceso de determinar qué acciones puede realizar un usuario autenticado. Esto se gestiona mediante roles y permisos que definen qué operaciones están permitidas en qué recursos.
Configuración de Autenticación
Autenticación Básica
La autenticación básica utiliza nombres de usuario y contraseñas para verificar la identidad de los usuarios. Elasticsearch proporciona un mecanismo sencillo para configurar la autenticación básica.
Paso 1: Habilitar la Seguridad
Para habilitar la seguridad en Elasticsearch, debes modificar el archivo de configuración elasticsearch.yml:
Paso 2: Crear Usuarios
Puedes crear usuarios utilizando la herramienta de línea de comandos elasticsearch-users:
Por ejemplo, para crear un usuario llamado admin con la contraseña admin123 y el rol superuser:
Autenticación Basada en Tokens
La autenticación basada en tokens es más segura y escalable que la autenticación básica. Elasticsearch soporta tokens de acceso que pueden ser generados y utilizados para autenticar solicitudes.
Paso 1: Generar un Token de Acceso
Para generar un token de acceso, primero debes autenticarte con un usuario válido:
curl -u admin:admin123 -X POST "localhost:9200/_security/oauth2/token" -H "Content-Type: application/json" -d'
{
"grant_type": "password",
"username": "admin",
"password": "admin123"
}'Esto devolverá un token de acceso que puedes usar en futuras solicitudes.
Paso 2: Usar el Token de Acceso
Para usar el token de acceso en una solicitud, inclúyelo en el encabezado Authorization:
Configuración de Autorización
Roles y Permisos
Los roles en Elasticsearch definen un conjunto de permisos que pueden ser asignados a los usuarios. Puedes crear y gestionar roles mediante la API de seguridad.
Crear un Rol
Para crear un rol, utiliza la siguiente solicitud:
curl -X POST "localhost:9200/_security/role/<role_name>" -H "Content-Type: application/json" -d'
{
"cluster": ["all"],
"indices": [
{
"names": ["*"],
"privileges": ["read", "write"]
}
]
}'Por ejemplo, para crear un rol llamado data_analyst con permisos de lectura y escritura en todos los índices:
curl -X POST "localhost:9200/_security/role/data_analyst" -H "Content-Type: application/json" -d'
{
"cluster": ["all"],
"indices": [
{
"names": ["*"],
"privileges": ["read", "write"]
}
]
}'Asignar un Rol a un Usuario
Para asignar un rol a un usuario, utiliza la siguiente solicitud:
curl -X POST "localhost:9200/_security/user/<username>/_roles" -H "Content-Type: application/json" -d'
{
"roles": ["<role_name>"]
}'Por ejemplo, para asignar el rol data_analyst al usuario john:
curl -X POST "localhost:9200/_security/user/john/_roles" -H "Content-Type: application/json" -d'
{
"roles": ["data_analyst"]
}'Ejercicio Práctico
Ejercicio 1: Configurar Autenticación Básica
- Habilita la seguridad en Elasticsearch modificando el archivo
elasticsearch.yml. - Crea un usuario llamado
user1con la contraseñapassword1y el rolsuperuser. - Verifica que puedes autenticarte con el usuario
user1utilizando la autenticación básica.
Ejercicio 2: Crear y Asignar Roles
- Crea un rol llamado
read_onlycon permisos de lectura en todos los índices. - Crea un usuario llamado
user2con la contraseñapassword2y asigna el rolread_only. - Verifica que el usuario
user2puede leer datos pero no puede escribir datos en los índices.
Soluciones
Solución al Ejercicio 1
-
Modifica el archivo
elasticsearch.yml:xpack.security.enabled: true -
Crea el usuario
user1:bin/elasticsearch-users useradd user1 -p password1 -r superuser -
Verifica la autenticación:
curl -u user1:password1 -X GET "localhost:9200/_cluster/health"
Solución al Ejercicio 2
-
Crea el rol
read_only:curl -X POST "localhost:9200/_security/role/read_only" -H "Content-Type: application/json" -d' { "cluster": ["all"], "indices": [ { "names": ["*"], "privileges": ["read"] } ] }' -
Crea el usuario
user2y asigna el rolread_only:bin/elasticsearch-users useradd user2 -p password2 -r read_only -
Verifica los permisos:
curl -u user2:password2 -X GET "localhost:9200/_cluster/health" curl -u user2:password2 -X POST "localhost:9200/test/_doc/1" -H "Content-Type: application/json" -d' { "field": "value" }'
Conclusión
En esta sección, hemos aprendido cómo configurar la autenticación y autorización de usuarios en Elasticsearch. Estos mecanismos son esenciales para asegurar que solo los usuarios autorizados puedan acceder y modificar los datos. En el próximo módulo, exploraremos cómo implementar el control de acceso basado en roles para gestionar permisos de manera más granular.
Curso de Elasticsearch
Módulo 1: Introducción a Elasticsearch
- ¿Qué es Elasticsearch?
- Instalando Elasticsearch
- Conceptos Básicos: Nodos, Clústeres e Índices
- Arquitectura de Elasticsearch
Módulo 2: Empezando con Elasticsearch
Módulo 3: Técnicas Avanzadas de Búsqueda
Módulo 4: Modelado de Datos y Gestión de Índices
- Mapeo y Analizadores
- Plantillas de Índices
- Alias y Reindexación
- Gestión del Ciclo de Vida del Índice
Módulo 5: Rendimiento y Escalabilidad
- Optimizando el Rendimiento de Búsqueda
- Escalando Elasticsearch
- Monitoreo y Mantenimiento
- Respaldo y Restauración
Módulo 6: Seguridad y Control de Acceso
- Asegurando Elasticsearch
- Autenticación y Autorización de Usuarios
- Control de Acceso Basado en Roles
- Auditoría y Cumplimiento
Módulo 7: Integraciones y Ecosistema
- Elasticsearch con Logstash
- Elasticsearch con Kibana
- Elasticsearch con Beats
- Elasticsearch con Otras Herramientas
