脚本postgres同步 – 这是安全的?

我已经编写了一个脚本来同步(从头重新创build)一个生产数据库和一个开发数据库,​​并且我想了解潜在的安全缺陷/问题,这个脚本如下所示。 服务器出于安全目的禁用了远程访问,并且使用公钥authentication来pipe理sshauthentication。

#!/bin/bash #this is pretty seriously sketchy script... current_time=`date +%s` dump_file_name=/tmp/temporary_dump_$current_time.dump echo SSHing and dumping to $dump_file_name ssh -t [email protected] << EOT pg_dump -U postgres -Fc dbName > $dump_file_name PASSWORD #password in plain text exit EOT echo SCPing the file locally to: `pwd`$dump_file_name scp [email protected]:$dump_file_name $dump_file_name echo Cleaning up the remote file ssh -t [email protected] << EOT rm $dump_file_name exit EOT ssh -t development@development-testing << EOT pg_restore --clean --dbname=dbName -Fc --username=postgres -W $dump_file_name PASSWORD #password in plain text exit EOT echo Cleaning up the local file rm $dump_file_name exit 0 

乍一看,我看到四个问题:

  1. 您正在以明文forms存储密码。
    可怕的罪恶,甚至是不可原谅的。 还有其他方法可以解决这个问题,尽pipe每个方法都有自己的安全问题。
    如果你绝对必须在这里存储这个确保脚本是不可读的任何人不应该有密码…

  2. 您正在将数据库转储存储在云中,未encryption。
    真的相信亚马逊的安全吗? 你不应该。

  3. 你可以不止一次地运行这个脚本(并且同时运行2个脚本)。
    这不是一个“安全”问题,但它可能会滥用你的数据库。 该脚本应该locking自己,以便它不能运行多次。

  4. pg_dump gets在大型数据库上效率低下
    这也不是一个“安全”问题,但请查看有关备份和恢复的Postgres文档以获取更多信息。
    另外考虑在我们的DBA网站上询问备份。