En mi trabajo gestiono varias identidades digitales cada día: La corporativa, con el correo y herramientas internas de la empresa; la del cliente, con otro correo, sistema de gestión y herramientas internas; e incluso la “personal”, no accedo a nada realmente personal desde el equipo de trabajo pero uso esta categoría de identidades para el spotify (hay que mantenerse en el top 1% mundial de oyentes de Genesis) y el feed RSS con el que leo noticias para seguir la pista a todo lo que se mueve en la industria. Así que aún siendo una sóla persona delante del puesto, gestiono unas cuantas cuentas.

Si bien menciono identidades web, en este post no hablaré exclusivamente sobre ellas. Son una introducción a un use case en el cual tenemos que gestionar varias identidades digitales en un único usuario del sistema operativo. Detallaré mi caso concreto y cómo lo he solucionado, cada uno es un mundo pero espero que pueda darte pistas para adaptarlas al tuyo si lo necesitas. En lugar de estar switcheando, compartiendo identidades o haciendo login y logout, he intentado buscar una forma de trabajar compartimentada y en la que el cambio de identidades sea lo más transparente posible.

Identidades web: Containers para el navegador

No, no hablo de computación en contenedores, pese a ser un blog de SRE. Hablo de poder compartimentalizar la información de sesiones que el navegador guarda como si fueran diferentes perfiles. Así, al separarla puedo tener un container “Cliente” dónde tengo las sesiones del cliente (no los credenciales guardados, no soy amigo de dejar al navegador recordar credenciales) y otro “Empresa” dónde tengo las tabs con las sesiones en webs corporativas de mi empresa. Esto me es especialmente útil porque resulta que ambos, cliente y empresa, utilizar Office 365 como suite de ofimática/correo y también ambas Confluence/Jira. También tengo un tercer contenedor para mis sesiones de web personales. Realmente sólo para música y noticias, como dije. Bueno también para cuando toca agendar algún training o certificación.

Yo utilizo Firefox y aprovecho el plugin Multi-Account Containers que permite preconfigurar contenedores para cada “perfil” e incluso da la opción “Abrir siempre esta dirección en este perfil”. Sé que hay opciones similares al menos para Chrome.

De esta manera, consigo tener las diferentes sesiones en el mismo navegador y cambiar sin problemas entre ellas, según la pestaña que tenga activa. Puedo tener los varias sesionesd e Outlook web abiertas, dos Confluence y entrar a otras páginas con una identidad u otra según lo necesite. Bastante más conveniente, para mí, que tener que andar cambiando de navegador.

Hay otras soluciones creativas para esto: algunos compañeros tienen el equipo personal y el de trabajo conectados a un switch KVM y saltan de uno a otro si lo necesitan, otros tienen un navegador para cada “perfil”. La primera opción no la planteo porque pierdo el copy & paste entre tabs de diferentes identidades y eso no es vida. La segunda no la hago porque tener más de un navegador en uso, en lugar de uno sólo que te convenza, se me hace raro. Quizás es por mi sesgo de sistemas y esa vocecita de mi monólogo interno: “¿Dos programas a la vez para lo mismo, regalan la memoria o qué?”

Identidades digitales: Repositorios GIT

Trabajo con repositorios tipo GIT tanto del cliente como de la empresa (dónde tenemos nuestra herramienta in-house y otros repos para prácticas de talleres internos). En ambos casos autentico con certificado digital por SSH en lugar de usuario/contraseña. De nuevo no quiero estar eligiendo identidad sino poder saltar en consola de repo a repo y no tener que preocuparme de nada cuando haga pull o push. La solución más cómoda ha sido aprovechar el archivo de configuración para SSH ~/.ssh/config y agregar entradas basadas en el host que definen una u otra identidad (certificado).

 Host ssh.dev.azure.com
 HostkeyAlgorithms +ssh-rsa
 PubKeyAcceptedKeyTypes=ssh-rsa
 IdentityFile ~/.ssh/myCorporateKey
 IdentitiesOnly yes 

 Host *
 HostkeyAlgorithms +ssh-rsa
 PubkeyAcceptedAlgorithms +ssh-rsa
 IdentityFile ~/.ssh/myOtherKey
 IdentitiesOnly yes 

En el ejemplo de arriba, defino una identidad para utilizar en los repositorios de Azure DevOps y otra para el resto. Es sólo cuestión de definir tantos entries de Hosts como sea necesario. Por ahora tengo la suerte de que no coincide un mismo servicio de GIT repo con dos identidades a gestionar. Al final, al definir una vez las diferentes identidades a utilizar según host, no tengo que preocuparme de nada para el cambio de un repositorio a otro.

Por cierto, si hablamos de gestionar diferentes certificados SSH para conectar a máquinas no tiene ningún misterio. En el momento de conectar podemos elegir la identity (aquí usamos la clave privada, la pública debe estar ya en el servidor de destino) con ssh -i ~/.ssh/corporateIdentity x.x.x.x

¿Y credenciales? Gestor de contraseñas

Como no me gusta ni que los navegadores recuerden las contraseñas ni utilizar la misma para todo, por razones obvias, en esta parte me apoyo en un gestor de contraseñas propio. Una obviedad, lo sé, pero aún me asombra la cantidad de profesionales que no lo utilizan. En esa base de datos encriptada guardo todos los credenciales de cliente y empresa. Duplico también los personales que uso en el trabajo para facilidad de acceso. La DB encriptada tiene backup. En el trabajo utilizo macPass que es una aplicacion open-source compatible con KeePass.

Conclusiones

No hay ninguna gran hazaña técnica en aprovechar estas pequeñas soluciones, pero son mejoras de Quality of Life que me ahorran bastantes minutos al día y me despejan la mente de estas consideraciones, para tenerla más centrada en lo que realmente importa: Resolver problemas y sacar adelante el trabajo.