En aquest tema, aprendrem com configurar i gestionar l'autenticació i l'autorització d'usuaris a Elasticsearch. Aquestes funcionalitats són essencials per assegurar que només els usuaris autoritzats puguin accedir i modificar les dades emmagatzemades.
- Introducció a la Seguretat a Elasticsearch
Elasticsearch ofereix diverses funcionalitats de seguretat per protegir les dades, incloent-hi:
- Autenticació: Verifica la identitat dels usuaris.
- Autorització: Controla els permisos dels usuaris autenticats.
- Xifratge: Protegeix les dades en trànsit i en repòs.
- Auditoria: Registra les accions dels usuaris per a la supervisió i el compliment.
- Configurant l'Autenticació
2.1. Mètodes d'Autenticació
Elasticsearch suporta diversos mètodes d'autenticació, incloent:
- Autenticació bàsica: Utilitza noms d'usuari i contrasenyes.
- LDAP: Integra amb serveis d'autenticació LDAP.
- SAML: Utilitza el protocol SAML per a l'autenticació única (SSO).
- Kerberos: Suporta l'autenticació basada en Kerberos.
2.2. Configuració de l'Autenticació Bàsica
Per configurar l'autenticació bàsica, primer hem d'habilitar la seguretat a Elasticsearch. Això es fa editant el fitxer elasticsearch.yml
.
Després, hem de crear usuaris i assignar-los contrasenyes. Això es pot fer utilitzant l'eina elasticsearch-users
.
2.3. Exemple Pràctic
Creem un usuari anomenat admin
amb la contrasenya admin123
i el rol superuser
.
- Configurant l'Autorització
3.1. Rols i Permisos
Els rols defineixen els permisos que tenen els usuaris. Un rol pot incloure permisos per a:
- Índexs: Lectura, escriptura, esborrat, etc.
- Clúster: Administració del clúster, gestió de nodes, etc.
3.2. Creació de Rols
Els rols es defineixen en un fitxer JSON o mitjançant l'API REST d'Elasticsearch.
Exemple de Rol en JSON
{ "logstash_writer": { "cluster": ["manage_index_templates", "monitor"], "indices": [ { "names": ["logstash-*"], "privileges": ["write", "delete", "create_index"] } ] } }
3.3. Assignació de Rols a Usuaris
Els rols es poden assignar a usuaris mitjançant l'API REST.
Exemple d'Assignació de Rol
curl -X POST "localhost:9200/_security/role/logstash_writer" -H "Content-Type: application/json" -d' { "cluster": ["manage_index_templates", "monitor"], "indices": [ { "names": ["logstash-*"], "privileges": ["write", "delete", "create_index"] } ] }'
Després, assignem el rol a un usuari.
curl -X POST "localhost:9200/_security/user/logstash_user" -H "Content-Type: application/json" -d' { "password" : "logstash123", "roles" : [ "logstash_writer" ], "full_name" : "Logstash User", "email" : "[email protected]" }'
- Exercicis Pràctics
Exercici 1: Crear un Usuari i Assignar-li un Rol
- Habilita la seguretat a Elasticsearch editant el fitxer
elasticsearch.yml
. - Crea un usuari anomenat
data_analyst
amb la contrasenyaanalyst123
. - Defineix un rol anomenat
data_reader
que tingui permisos de lectura sobre tots els índexs. - Assigna el rol
data_reader
a l'usuaridata_analyst
.
Solució
-
Edita
elasticsearch.yml
:xpack.security.enabled: true
-
Crea l'usuari:
bin/elasticsearch-users useradd data_analyst -p analyst123 -r data_reader
-
Defineix el rol:
curl -X POST "localhost:9200/_security/role/data_reader" -H "Content-Type: application/json" -d' { "cluster": ["monitor"], "indices": [ { "names": ["*"], "privileges": ["read"] } ] }'
-
Assigna el rol a l'usuari:
curl -X POST "localhost:9200/_security/user/data_analyst" -H "Content-Type: application/json" -d' { "password" : "analyst123", "roles" : [ "data_reader" ], "full_name" : "Data Analyst", "email" : "[email protected]" }'
- Resum
En aquesta secció, hem après com configurar l'autenticació i l'autorització d'usuaris a Elasticsearch. Hem vist com crear usuaris, definir rols i assignar aquests rols als usuaris. Aquestes funcionalitats són essencials per assegurar que només els usuaris autoritzats puguin accedir i modificar les dades emmagatzemades a Elasticsearch.
Curs d'Elasticsearch
Mòdul 1: Introducció a Elasticsearch
- Què és Elasticsearch?
- Instal·lant Elasticsearch
- Conceptes Bàsics: Nodes, Clústers i Índexs
- Arquitectura d'Elasticsearch
Mòdul 2: Començant amb Elasticsearch
Mòdul 3: Tècniques Avançades de Cerca
Mòdul 4: Modelatge de Dades i Gestió d'Índexs
Mòdul 5: Rendiment i Escalabilitat
- Optimitzant el Rendiment de la Cerca
- Escalant Elasticsearch
- Monitorització i Manteniment
- Còpia de Seguretat i Restauració
Mòdul 6: Seguretat i Control d'Accés
- Assegurant Elasticsearch
- Autenticació i Autorització d'Usuaris
- Control d'Accés Basat en Rols
- Auditoria i Compliment
Mòdul 7: Integracions i Ecosistema
- Elasticsearch amb Logstash
- Elasticsearch amb Kibana
- Elasticsearch amb Beats
- Elasticsearch amb Altres Eines