Within Ruby on Rails applications database.yml is a plain text file that stores database credentials.
When I deploy my Rails applications I have an after deploy callback in my Capistrano recipe that creates a symbolic link within the application’s /config directory to the database.yml file. The file itself is stored in a separate directory that’s outside the standard Capistrano /releases directory structure. I chmod 400 the file so it’s only readable by the user who created it.
- Is this sufficient to lock it down? If not, what else do you do?
- Is anyone encrypting their database.yml files?
You’ll also want to make sure that your SSH system is well secured to prevent people from logging in as your Capistrano bot. I’d suggest restricting access to password-protected key pairs.
Encrypting the .yml file on the server is useless since you have to give the bot the key, which would be stored . . . on the same server. Encrypting it on your machine is probably a good idea. Capistrano can decrypt it before sending.