Bloc
Joan Galtés i Moreno

Com el mòdul Key pot ajudar-te a millorar la seguretat del teu Drupal

Millora la seguretat del teu Drupal amb el mòdul Key
Drupal és un gestor de continguts dels més segurs que existeixen, però no és perfecte i de vegades cal filar prim amb segons quines dades sensibles. En aquest article et mostrem com emmagatzemar de manera segura dades sensibles del teu lloc web.

La seguretat és una característica fonamental de qualsevol CMS modern. Drupal té un sistema d'autenticació i control d'accés basat en rols (RBAC) ben definit que limita l'abast de les accions que els usuaris poden realitzar. Ben aviat fins i tot tindrem el control d'accés basat en polítiques (PBAC) al nucli de Drupal.

Però, què passa amb la seguretat d'altres elements com ara els tokens d'API, els certificats SSL o les claus que s'utilitzen per autenticar-se amb serveis externs que possibiliten funcionalitats que requereixen autorització?

Per defecte, totes les dades de configuració es desa en fitxers de configuració a Drupal. Drupal no és conscient per defecte de quins valors són sensibles o segurs per naturalesa; això significa que amb mòduls addicionals que recopilen claus d'API o autorització, aquests valors podrien acabar en la teva configuració/base de dades i repositori de codi, la qual cosa planteja un risc de seguretat en cas de filtracions. La teva seguretat és tan forta com el teu punt més feble, però afortunadament a Drupal això es pot resoldre fàcilment amb el mòdul Key.

↑ Tornar a dalt

El mòdul Key 

El mòdul Key per a Drupal ajuda als desenvolupadors a emmagatzemar els seus tokens d'API i claus sensibles d'una manera més segura que emmagatzemar-ho en les metadades de configuració per defecte de Drupal. També ofereix una interfície d'usuari senzilla per crear i editar definicions de claus a l'administrador, cosa que facilita l'auditoria o els canvis sense haver de tocar el codi d'implementació.

Alguns exemples d'on es podria trobar això són:

  • Certificats segurs per a proveïdors de SSO (inici de sessió únic)
  • Tokens d'API per a integració amb serveis externs
  • Credencials per a servidors de correu SMTP
  • Certificats segurs que poden ser necessaris en sol·licituds d'API amb un client HTTP
  • Serveis propietaris interns que requereixen autorització per utilitzar-los

Inclús si la clau o el token no és inherentment segur, per exemple, si s'utilitza a JavaScript del costat del client, el mòdul Key encara és una excel·lent manera de gestionar aquesta informació.

El mòdul Key compleix fàcilment aquestes necessitats i ofereix quatre maneres diferents de fer referència a secrets:

  • Configuració: el mètode per defecte, que exporta valors purs a la configuració. Les claus es segueixen, però no són segures. En l'absència de res més, aquest mètode no es recomana, però encara existeix perquè puguis gestionar les teves claus a l'administrador.
  • Fitxer: aquest mètode et permet emmagatzemar un secret en un fitxer situat al servidor web fora de la ruta web on no es pot accedir públicament. L'única cosa que emmagatzema la clau és la ruta del fitxer, i el mòdul Key és responsable de recuperar el valor entre bastidors quan el necessitis.
  • Variable d'entorn: aquest mètode et permet assignar una variable d'entorn com a valor secret. Com el mètode del fitxer, el mòdul Key és responsable de recuperar el valor entre bastidors quan el necessitis.
  • Extern: aquest mètode et permet fer referència a secrets en proveïdors externs mitjançant una API. Aquest mètode es considera el més segur, degut als nivells de seguretat que aquests serveis de emmagatzematge proporcionen.
↑ Tornar a dalt

Ús del mòdul Key 

L'ús del mòdul Key és senzill. En habilitar el mòdul, s'afegeix una nova secció a la secció d'administració on pots crear noves claus.

La majoria de les necessitats bàsiques per als tipus de claus estan cobertes per defecte. Aquestes cobreixen la majoria dels casos d'ús comuns per als tipus de claus, però en cas que necessitis alguna cosa diferent, pots estendre el mòdul Key i crear el teu propi tipus de proveïdor per presentar opcions addicionals.

Per exemple, es pot fert servir el directori amagat nobackup disponible a l'allotjament d'Acquia. Altres proveïdors podrien oferir alguna cosa similar. Aquesta ubicació no és llegible ni descoberta mitjançant mitjans públics. El fitxer anterior conté el valor pur que el mòdul Key recupera quan s'utilitza.

Un cop s'ha creat una clau, es pot fer referència en mòduls que tenen integració amb el mòdul Key. I es que integrar el teu codi personal amb el mòdul Key és fàcil. Potser tens codi que recull un token d'API com un camp de text, per exemple. El mòdul Key proporciona un tipus d'element de formulari 'key_select' que gestiona molts detalls repetitius i que és fàcil d'utilitzar:

$form['example_key'] = [ 
  '#title' => $this->t('Stripe Development Account Key'), 
  '#description' => $this->t('The account key to use for Stripe calls on the development instance.'), 
  '#type' => 'key_select', 
  '#key_filters' => ['type_group' => 'authentication'], 
  '#empty_option' => $this->t('- Select -'), 
  '#required' => TRUE, 
]; 

L'element de formulari 'key_select' estableix automàticament una llista desplegable amb un text sobre on crear una nova clau si no hi ha cap a la llista. A més, podem utilitzar el paràmetre 'key_filters' per limitar quins tipus de claus es poden seleccionar aquí per a més seguretat addicional. En aquest exemple, només es permeten claus de tipus 'autenticació' per limitar les opcions i evitar errors, com ara que algú seleccioni accidentalment un tipus de certificat SSL.

Això crea un patró realment senzill per reutilitzar en tot el codi personal per aprofitar tot el que ofereix el mòdul Key.

Si tens un secret que no encaixa en cap dels exemples predefinits, hi ha molts complements per ampliar el mòdul Key i donar-los suport. Per exemple, els mòduls Key AWS i Asymmetric Key afegeixen maneres de emmagatzemar credencials d'AWS o parelles de claus públiques/privades, respectivament. Com aquests mòduls, pots crear el teu propi proveïdor per capturar les dades i requisits que necessites.

↑ Tornar a dalt

Conclusió

La seguretat és un panorama difícil i canviant constantment. Afortunadament, el mòdul Key pot ajudar a alleujar algunes d'aquestes preocupacions i evitar que secrets i tokens es multipliquin al llarg d'un codi i es filtin accidentalment, causant una violació de seguretat. 

↑ Tornar a dalt

Sobre l'autor/a

Joan Galtés i Moreno

Desenvolupador full-stack, especialitzat en Drupal des de 2008. M'agrada concebre i desenvolupar tant el back-end com el front-end en tots els meus projectes. Entusiasta de les noves tecnologies, amb un bon domini de PHP, MySQL, Git, Javascript, HTML 5, SASS i CSS 3, posant molt d'èmfasi en la usabilitat i l'accessibilitat de tot allò que desenvolupo.

Comparteix

Deixa el teu comentari