¿Cuál es la mejor manera de hacer esto?
Como siempre, depende. La forma más segura de hacer esto es utilizar una herramienta especializada que maneje el cifrado de la contraseña, la almacene en una bóveda de contraseñas y que también permita que esta contraseña se cambie automáticamente en un horario mediante la bóveda de contraseñas independientemente de su script. . Si no tiene una herramienta de bóveda de contraseñas disponible, este puede ser un proyecto más grande del que necesita ahora. El mecanismo real utilizado por estas herramientas para realizar el cifrado y manejar la clave es utilizar una clave aleatoria e incorporar cierta información de hardware en la clave. Además, la bóveda generalmente también permite un bloqueo por dirección IP, de modo que solo el servidor puede recuperar la contraseña.
Quiero decir, si simplemente codifico la contraseña, cualquiera puede simplemente mirar el código fuente para obtenerlos.
Sí, y hay otros problemas con este enfoque también. ¿Se confirmará este script en un repositorio de código fuente? Si es así, entonces la contraseña está ahí también. También puede ser una molestia actualizar este script cada vez que se necesita cambiar la contraseña.
¿Debo almacenarlo en una base de datos?
Esto no es mucho mejor que mantenerlo en el script, excepto que ahora al menos no irá al repositorio de código fuente. Podría confiar en el cifrado a nivel de la base de datos para evitar preocuparse por las claves de cifrado, pero los DBA aún tendrían acceso.
¿O debería cifrarlo y luego usar una contraseña maestra para desbloquearlo (no preferido)?
Esto no es diferente a solo pedir la contraseña real en tiempo de ejecución, excepto que sería mucho menos trabajo.