Parece sorprendente que aún no haya una mejor práctica aceptada por la industria para este problema (o tal vez solo una que no conozca):
¿Cuál es la forma más segura para un script por lotes, un programa que necesita conectarse a un recurso (por ejemplo, la base de datos) a través de una interacción no impulsada por el usuario para autenticarse? Las respuestas agnósticas tecnológicas son mejores, pero si hay una gran diferencia en función del sistema operativo (Windows, Unix, Mainframe, etc.), la base de datos o el lenguaje del programa, también es útil saberlo.
Sería bueno si pudiera explicar por qué la solución (u opciones en orden de preferencia) es segura (por ejemplo, protege contra usuarios internos malintencionados, atacantes externos, malware de estas maneras). También por qué tiene un bajo impacto operativo (cambio, mantenimiento, etc.).
Por ejemplo, mi lista:
Mejor preferencia de IMO (más segura) a menos:
- Autenticación basada en certificados donde el certificado se almacena en un HSM
- Autentificación basada en certificados donde el certificado se almacena en un módulo criptográfico de software
- Autentificación basada en certificados donde el certificado es el almacén de certificados del sistema operativo, generalmente necesita root para obtener acceso, por lo que el juego está activo si esto ocurre
- Autenticación externalizada basada en un LDAP
- Contraseña basada en donde la contraseña se cifra y almacena en un servidor diferente o en el almacén de contraseñas. Solo la cuenta de servicio está autorizada para conectar, descifrar y recuperar la contraseña a través de un transporte seguro (básicamente, cómo TDE funciona con Oracle Wallet)
- Contraseña basada donde la contraseña se cifra y almacena en el servidor. La cuenta de servicio solo puede descifrar.
- La contraseña se basa donde la contraseña se almacena en el servidor pero está protegida por los permisos del sistema operativo y se excluye de la copia de seguridad (copia de seguridad manual en el almacén de contraseñas).
El certificado es el mejor con diferencia y el método de facto para algo como Amazon EC2, Github, etc.
Por favor, cierre y redirija si esto ya está respondido. No pude encontrarlo cuando busqué.