Я написал сценарий для синхронизации (воссоздания с нуля) производственной базы данных с базой данных разработки, и мне нужно было понять потенциальные недостатки / проблемы безопасности, сценарий размещен ниже. На сервере отключен удаленный доступ в целях безопасности, а проверка подлинности ssh осуществляется с использованием проверки подлинности с открытым ключом.
#!/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 remoteuser@remote.server.amazonaws.com << 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 remoteuser@remote.server.amazonaws.com:$dump_file_name $dump_file_name
echo Cleaning up the remote file
ssh -t remoteuser@remote.server.amazonaws.com << 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
На первый взгляд я вижу четыре проблемы:
Вы храните пароль в виде открытого текста.
Ужасный грех, даже непростительный. Есть и другие способы справиться с этим, но у каждого из них есть свои проблемы с безопасностью.
Если вы абсолютно должен сохраните это здесь, убедитесь, что сценарий не доступен для чтения никому, у кого не должно быть пароля ...
Вы храните дамп БД в облаке в незашифрованном виде.
Вы действительно доверять безопасности Amazon? Вы не должны.
Вы можете запускать этот сценарий более одного раза (и запускать 2 одновременно).
Это не проблема "безопасности", но может нанести вред вашей БД. Сценарий должен заблокировать себя, чтобы его нельзя было запускать более одного раза.
pg_dump gets
неэффективен в больших базах данных
Это тоже не проблема "безопасности", но проверьте Документация Postgres по резервному копированию и восстановлению Чтобы получить больше информации.
Также подумайте о том, чтобы спросить о резервных копиях на нашем сайте DBA.