martes, 10 de septiembre de 2019

Como encriptar contraseñas en WSO2 con Cipher tool y Secure Vault

Hoy vamos a hablar de como configurar y utilizar Cipher Tool y Secure Vault en un producto de WSO2. Con estas herramientas podremos encriptar y utilizar claves sin necesidad de ponerlas a fuego en nuestro código. Además pensando en proyectos a desplegar en múltiples entornos, podremos referirnos a estas contraseñas a través de alias sin necesidad de cambiar el código por cada entorno. 

En este post no nos centraremos en como configurar o personalizar la herramienta, simplemente en como activarla y poder usarla manualmente.
  • Cipher tool
Si el uso que vamos a hacer de Cipher Tool es el de encriptar contraseñas. Podemos hacer las encriptaciones manualmente (tal y como veremos mas adelante) o a través del fichero cipher-text.properties. Asociandolas en dicho fichero a un alias. Ejemplo:

WSO2CarbonDB.password=admin

Independientemente de si hemos incluido o no alguna contraseña en el fichero cipher-text.properties, deberemos habilitar la herramienta de encriptación para poder trabajar con la misma.  Y esto lo conseguimos dirigiéndonos a la carpeta bin de nuestro producto y ejecutando el siguiente comando.

./ciphertool.sh -Dconfigure

La primera vez que lo ejecutemos nos pedirá la contraseña de nuestro contenedor de claves. Recordemos que la contraseña por defecto es wso2carbon. Y ademas encriptará las contraseñas que tengamos en el fichero cipher-text.properties.

 Si queremos utilizar estas contraseñas en los ficheros de configuración deberemos cambiar donde antes estaba el valor de la contraseñas por el alias que hemos creado. Ejemplo del fichero master-datasources.xml.

<url>jdbc:h2:./repository/database/WSO2CARBON_DB</url>
<username>wso2carbon</username>
<password>secretAlias:WSO2CarbonDB.password</password>
<driverClassName>org.h2.Driver</driverClassName>

Una vez configurada la herramienta podemos volver a ejecutarla para que nos encripte otras contraseñas. De forma individual y sin necesidad de utilizar el fichero cipher-text.properties. Para ello debemos ejecutar el comando ciphertool, el cual tras pedirnos una contraseña, nos devolverá el valor de la misma, ya encriptada.
  • Secure Vault
Ahora veremos como podemos usar Secure Vault para generar contraseñas a través de la consola de administración de WSO2 y como utilizarlas en nuestras integraciones. El primer paso sera arrancar nuestro producto WSO2, teniendo en cuenta que tras haber habilitado antes cipher tool, ahora se nos requerirá la contraseña del contenedor de claves cada vez que lo arranquemos.

Una vez arrancado podemos seguir creando alias/contraseñas a traves de la opción de menu 'Manage -> Secure Vault Tool > Add new password to encrypt and store'. Estas contraseñas se almacenaran en el registry.

Estos nuevos alias generados podrán ser utilizado tanto en el código de nuestras integraciones como en los ficheros de configuración de synapse. De la siguiente forma:
  • En un template, sequence, api o proxy podríamos obtener el valor asociado a un alias de la siguiente forma:
<property name="password" expression="wso2:vault-lookup('alias.to.use')"/>
  • En un fichero de configuracion lo podriamos utilizar asi:
{wso2:vault-lookup('alias.to.use')}

Y para terminar un ultimo truco. Es posible que al intentar crear una nueva contraseña nos diga que no es segura y que no permite almacenarla. Si queremos cambiar la expresión regular que determina la validación de las contraseñas del Secure Vault, debemos modificar la propiedad org.wso2.SecureVaultPasswordRegEx del fichero carbon.properties.

No hay comentarios:

Publicar un comentario