Назад | Перейти на главную страницу

Синхронизация сценариев postgres - это безопасно?

Я написал сценарий для синхронизации (воссоздания с нуля) производственной базы данных с базой данных разработки, и мне нужно было понять потенциальные недостатки / проблемы безопасности, сценарий размещен ниже. На сервере отключен удаленный доступ в целях безопасности, а проверка подлинности 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

На первый взгляд я вижу четыре проблемы:

  1. Вы храните пароль в виде открытого текста.
    Ужасный грех, даже непростительный. Есть и другие способы справиться с этим, но у каждого из них есть свои проблемы с безопасностью.
    Если вы абсолютно должен сохраните это здесь, убедитесь, что сценарий не доступен для чтения никому, у кого не должно быть пароля ...

  2. Вы храните дамп БД в облаке в незашифрованном виде.
    Вы действительно доверять безопасности Amazon? Вы не должны.

  3. Вы можете запускать этот сценарий более одного раза (и запускать 2 одновременно).
    Это не проблема "безопасности", но может нанести вред вашей БД. Сценарий должен заблокировать себя, чтобы его нельзя было запускать более одного раза.

  4. pg_dump gets неэффективен в больших базах данных
    Это тоже не проблема "безопасности", но проверьте Документация Postgres по резервному копированию и восстановлению Чтобы получить больше информации.
    Также подумайте о том, чтобы спросить о резервных копиях на нашем сайте DBA.