Il plugin di autenticazione PAM

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......
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.