mylogin

L'utility mysql_config_editor di MySQL consente di evitare l'utilizzo di username e password in chiaro. mysql_config_editor genera un file crittografato nella home directory dell'utente con tutte le stringhe di connessione necessarie.

Riassumendo con una battuta: mai piu' password in chiaro con MySQL!

Introduzione

La classica modalita' di connessione a MySQL permette di specificare l'utenza e la password in chiaro:

$ mysql -uroot -pMypass

In questo modo con un ps o accedendo all'history dell'utente si disporra' della password di accesso al DB.
Interattivamente e' possibile non inviare la password e farla richiedere al prompt, ma se utilizzano script di gestione o di backup la password sara' sempre in chiaro...

Utilizzando il file .mylogin.cnf il comando di connessione sara':

$ mysql --login-path=bck

Quindi la password non e' visibile ed anche nel file viene crittografata!

mysql_config_editor

Il comando mysql_config_editor consente di impostare (set), stampare (print) e rimuovere (remove) le stringhe di connessione user/password/host al database MySQL. I parametri di connessione hanno la sintassi classica di MySQL: -h o --host, ...
mysql_config_editor genera il file crittografato .mylogin.cnf nella home directory dell'utente. Il file .mylogin.cnf e' strutturato a sezioni e puo' mantenere diversi path di connessione.

$ mysql_config_editor set --login-path=bck --host=localhost --user=bck --password $ mysql_config_editor set --login-path=part --socket=/var/lib/mysql/mysql.sock --user=oper --password $ mysql_config_editor print --all [bck] user = bck password = ***** host = localhost [part] user = oper password = ***** socket = /var/lib/mysql/mysql.sock $ cat .mylogin.cnf # -- Mai fidarsi: sara' davvero non in chiaro? ????F?-!٠??r?]???,???rCM{ ?? M???od??ʈ???????F??6? ?%[??z???d?B?Q? %????ac_^????_%?W`??*α?Ǣ?E;3)???F?

Una volta definiti i login-path possono essere utilizzati nei normali comandi mysql, mysqldump, ... utilizzando il parametro login-path:

$ mysql --login-path=bck -Bse 'show databases'

Il vantaggio maggiore e' che le password non sono piu' visibili con un ps -efa da parte di un qualsiasi utente presente sul sistema. Inoltre non e' piu' necessario lasciare password in chiaro negli script.

Nel file .mylogin.cnf e' possibile impostare le stringhe di connessione anche per DB presenti su altri host.

Sicurezza

Evitare password in chiaro e' sicuramente molto importante ma la sicurezza del file .mylogin.cnf NON e' elevata.

Il file .mylogin.cnf deve essere adeguatamente protetto e non deve essere leggibile da utenti differenti.
Il contenuto e' solo offuscato ovvero e' crittografato con un tecnica ed un chiave nota [NdA chiave iniziale a 0 e crittografia AES-128 ECB] anche perche' i tool MySQL debbono essere poi in grado di ottenere la stringa di connessione da utilizzare.
Un utente esperto e' quindi in grado di ottenere le password in chiaro, un utente un po' meno esperto puo' semplicemente copiare il file, solo gli utenti meno preparati non riuscirebbero ad ottenere le password [NdA a meno di non vedere il Source].

Varie ed eventuali

Sul sito MySQL si trova tutta la documentazione ufficiale.

mysql_config_editor e' stato introdotto nella versione MySQL 5.6. Nelle versioni precedenti era possibile utilizzare altri file di configurazione (eg. my.cnf) ma le password erano memorizzate in chiaro nei file. Le differenti versioni di MySQL sono riportate in questo documento.


Titolo: mylogin
Livello: Medio (2/5)
Data: 14 Febbraio 2018
Versione: 1.0.0 - 14 Febbraio 2018 ❤️ San Valentino
Autore: mail [AT] meo.bogliolo.name