10.3. ACL & TLS¶
Contenuti
10.3.1. Introduzione¶
I processi/servizi di Sanet (sanetd/poller/entables/ecc.) utilizzano REDIS come:
servizio Broker IPC (InterProcess Communication)
servizio di caching
Il servizio di Broker viene usato per far comunicare sia servizi locali (sul server centrale di Sanet) sia agenti remoti (sulla porta 6379)
E' possibile configurare Redis per limitare l'accesso al servizio IPC attraverso ACL (username/password).
E' anche possibile rendere la comunicazione sicura usanto TLS.
Quando si usano ACL/TLS bisogna intervenire sul Redis "centrale" e configuare Sanet e agenti remoti per collegarsi.
|
SERVER CENTRALE | SERVER REMOTO
|
+----------+ | --- IPC
| REDIS | | *** cache
[ACL] >>>>>> | (broker) | |
| (cache ) | |
+----------+ |
^ ^ :6379 |
* | |
* | |
+------*----+--------+--------------------|------------------------+
| * | | |
********************** | | |
* | * | | |
* | * | | |
[ sanetd ] [ poller ] | [ remote poller ]
| *
| *
| v :6379
| +---------+
| | REDIS |
| | (cache) |
| +---------+
|
Note
Gli agenti remoti usano il Redis centrale come IPC, ma un redis "locale" come sistema di cache. Il server redis degli agenti remoti e' locale e non richiede di essere configurato con ACL e/o TLS.
10.3.2. Configurazione BROKER (server centrale)¶
10.3.2.1. Configurazione ACL utenti¶
Modificare il file:
/usr/local/redis/user.acl
Definire le ACL per almeno due utenti
default
sanet
La configurazione piu' semplice per una utenza prevede di:
dare accesso a tutti i comandi
dare accesso a tutti i dati (chiavi)
resettare qualunque password gia' esistente
impostare una password
Per ottenere questa configurazione bisogna che il file contenga queste due righe:
user default on allcommands allkeys resetpass >...password... user sanet on allcommands allkeys resetpass >...password...
Esempio:
user default on allcommands allkeys resetpass >9T58GsKD01 user sanet on allcommands allkeys resetpass >sanet
Warning
Questo esempio usa password in chiaro. Si possono specificare password anche in formato HASH.
Per i dettagli su come specificare le ACL si rimanda alla documentazione ufficiale di REDIS
10.3.2.2. Configurazione accesso SSL¶
Bisogna intervenire nel file:
/etc/redis/redis.conf
Se si vuole configuarre l'uso di TLS bisogna specificare la seguente configurazione:
# Impedire connessioni non TLS su qualunque porta e riutilizzare la porta 6379 per TLS port 0 tls-port 6379 # Specificare i certificati/chiavi del server tls-cert-file /etc/redis/ssl/ssl-cert-snakeoil.pem tls-key-file /etc/redis/ssl/ssl-cert-snakeoil.key # Non e' richiesto il certificato a client tls-auth-clients no
10.3.3. Configurazione Sanet¶
10.3.3.1. Configurazione Broker (redis)¶
La configurazione avviene nel file settings.py di Sanet:
{{SANET_INSTALL_DIR}}/conf/settings.py
Bisogna specifare indirizzo/porta e credenziali di accesso
BROKER_ADDRESS = ('localhost', 6379) BROKER_AUTH = ( 'sanet', 'sanet')
10.3.3.1.1. Accesso con TLS¶
BROKER_ADDRESS = ('localhost', 6379) BROKER_AUTH = ('sanet', 'sanet') BROKER_SETTINGS.update({ "ssl": 1 })
10.3.3.2. Configurazione Cache (redis)¶
CACHE_HANDLER_PARAMS.update({ "host" : "localhost", "port" : 6379 "username": "sanet", "password": "sanet", })
10.3.3.2.1. Accesso con TLS¶
CACHE_HANDLER_PARAMS.update({ "host" : "localhost", "port" : 6379 "username": "sanet", "password": "sanet", })
10.3.3.3. Configurazione Entables (redis)¶
Di default i paremetri di configurazione di entables vengono allineati alla configurazione del broker IPC (settings.BROKER_*).
10.3.3.3.1. Configurazione puntuale¶
Se si vuole configurare puntualmente la configurazione di entables bisogna intervenire sui seguenti parametri:
ENTABLESD_SETTINGS["broker"].update({ "address" : ('127.0.0.1', 3679), "username" : 'sanet', "password" : 'sanet', "ssl" : False })ENTABLESD_SETTINGS["listeners"] = [ ('entables.listeners.qpid', { "qpid_queue_name": "entables-alarms", "brokerip" : '127.0.0.1', "port" : 3679, "username" : 'sanet', "password" : 'sanet', "ssl" : True }) ]
10.3.4. Configurazione Agenti remoti¶
Bisogna modificare il file di configurazione di ogni singolo agente remoto che deve collegarsi al server centrale.
10.3.4.1. Connessione al server centrale (broker)¶
server_host = <hostname o ip del server di Sanet> server_port = 6379 server_user = sanet server_password = sanet
10.3.4.1.1. Uso di TLS¶
server_host = <hostname o ip del server di Sanet> server_port = 6379 server_user = sanet server_password = sanet use_ssl = 1
10.3.4.2. Configurazioni particolari: agenti remoti sul server centrale¶
Se fosse necessario usare agenti remoti sul server centrale bisogna ricordarsi di configurarli per accedere correttamente al REDIS anche come servizio di cache, intervenendo sul aprametro "cache_config":
cache_config = { "host": "127.0.0.1", "port": 6379, "username": "sanet", "password": "sanet", "ssl": 0 }
Se si vuole usare TLS:
cache_config = { "host": "127.0.0.1", "port": 6379, "username": "sanet", "password": "sanet", "ssl": 1 }