A partire dalla versione 5.2.10 (solo nel tarball dei sorgenti in 5.2.10), MariaDB include il plugin di autenticazione PAM. PAM è l'acronimo di Pluggable Authentication Modules e si tratta di un framework di autenticazione per Linux, FreeBSD, Solaris e altri sistemi operativi.

Nota: Windows non usa PAM, perciò il plugin non funzionerà su tale sistema. Tuttavia, un client Windows può connettersi a un server MariaDB che gira su Linux o Solaris, per esempio che utilizza PAM.

Casi d'uso

PAM rende possibile l'implementazione di diversi scenari di autenticazione, di diversa complessità. Per esempio:

  • Autenticazione usando le password di /etc/shadow (questo è ciò che solitamente PAM fa per i normali login da shell, per pop3, imap e per molti altri servizi);
  • Autentitazione tramite LDAP;
  • Autenticazione tramite le passphrase di SSH;
  • Autenticazione tramite una password che funziona una sola volta (anche con un SMS di conferma!);
  • Combinare diversi moduli di autenticazione, dove il login ha successo se uno o se tutti passano il controllo;
  • Scadenza delle passsword;
  • Mappare i nomi utente;
  • Limitare l'accesso per ora, data, giorno della settimana, etc.
  • Log dei tentativi di accesso;
  • E così via, questo elenco non è esaustivo.

Installazione

Il plugin non viene caricato per default; è possibile installarlo così:

MariaDB [test]> INSTALL PLUGIN pam SONAME 'auth_pam.so';

oppure aggiungendo --plugin-load=auth_pam.so alla riga di comando del server, o alla sezione [mysqld] nel file my.cnf.

Similmente a tutti gli altri Plugin di Autenticazione, per creare un utente MariaDB che si autentichi con PAM, si usi il comando:

CREATE USER nome_utente@nome_hostIDENTIFIED VIA pam

oppure, ad esempio:

GRANT SELECT ON db.* TO serg IDENTIFIED VIA pam

Opzionalmente, è possibile specificare un nome di servizio PAM service name, ad esempio:

CREATE USER test_pam IDENTIFIED VIA pam USING 'mariadb_mtr';

Questa riga (copiata testualmente dalla test suite) crea un utente che dovrà autenticarsi via PAM, utilizzando il servizio mariadb_mtr.

Se il nome del servizio non è specificato, verrà usato "mysql" come servizio di default per PAM.

Configurazione di PAM

Il plugin PAM dice a MariaDB di delegare l'autenticazione al sottosistema PAM. Come venga eseguita esattamente l'autenticazione, dipende dalla configurazione di PAM. Solitamente, tale configurazione si trova in /etc/pam.d/ o in /etc/pam.conf. La sintassi di questi file di configurazione è spiegata nei manuali del sistema operativo, per esempio in man pam.d. Ecco un esempio minimo, che utilizziamo per la nostra test suite:

auth            required        pam_mariadb_mtr.so pam_test
account         required        pam_mariadb_mtr.so

Queste righe devono essere inserite in /etc/pam.d/mariadb_mtr — il nome del file deve corrispondere a quello del servizio PAM. Questo semplice file di configurazione dice al sottosistema PAM che per l'autenticazione (auth) è richiesto (required) che il modulo pam_mariadb_mtr.so (il nostro modulo di prova) restituisca un ok. Perchè un account sia valido, è richiesto che il modulo pam_mariadb_mtr.so restituisca un ok. Altri esempi sono reperibili nella directory /etc/pam.d/.

Nota: se si configura PAM perché utilizzi pam_unix.so e si nota che MariaDB ha bisogno di essere eseguita come root per accedere a /etc/shadow — si provi ad aggiornare PAM. Le nuove versioni non richiedono che pam_unix.so sia eseguito come root.

L'autenticazione PAM utilizza il plugin client dialog per comunicare con l'utente. Questo permette a MariaDB di supportare configurazioni PAM arbitrarie con password regolari o valide una sola volta, risposte multiple, domande multiple, o qualsiasi altra cosa. Non c'è bisogno di installare o abilitare alcunchè - il plugin dialog viene caricato dalla libreria client in modo completamente automatico e trasparente all'applicazione.

Mapping dei nomi utenti

Sebbene i moduli PAM di solito non lo facciamo, PAM può modificare il nome utente durante il processo di autenticazione. Per esempio, secondo le specifiche PAM, è possibile iniziare l'autenticazion come John ed essere autenticato come Jim.

Il plugin di autenticazione PAM di MariaDB supporta pienamente questa possibilità - il nome utente originale è restituito dalla funzione SQL USER(), mentre l'utente autenticato (eventualmente modificato) è restituito dalla funzione CURRENT_USER(), ed è quest'ultima a determinare quali privilegi siano disponibili per la sesisone.

Commenti

Sto caricando i commenti......