Pergunta

Dentro de Ruby on Rails aplicações de banco de dados.yml é um ficheiro de texto simples que armazena credenciais de banco de dados.

Quando implementar o meu aplicações Rails, eu tenho um após o implante de retorno de chamada no meu Capistrano a receita que se cria um link simbólico dentro do aplicativo /config para o banco de dados.yml arquivo.O arquivo é armazenado em um diretório separado que está fora do padrão de Capistrano /releases estrutura de diretório.Eu chmod 400 o arquivo de forma que ele só pode ser lido pelo usuário que a criou.

  • Isso é suficiente para encerrar o assunto?Se não, o que mais você faz?
  • É alguém a criptografia de seus dados.yml arquivos?
Foi útil?

Solução

Você também vai querer certificar-se de que o seu SSH sistema é bem protegido para impedir as pessoas de registo em como seu Capistrano bot.Eu sugiro restringir o acesso protegido por palavra-passe pares de chaves.

Encriptando .yml arquivo no servidor é inútil, pois você tem que dar o bot a chave, que seria armazenado ...no mesmo servidor.Criptografia-lo em sua máquina, é provavelmente uma boa idéia.Capistrano pode descriptografá-lo antes de enviar.

Outras dicas

A maneira de eu ter abordado esse é para colocar a senha de banco de dados em um arquivo com permissões de leitura apenas para o usuário que executar meu aplicativo como.Em seguida, no banco de dados.yml eu uso ERB para ler o arquivo:

production:
  adapter: mysql
  database: my_db
  username: db_user
  password: <%= begin IO.read("/home/my_deploy_user/.db") rescue "" end %>

Funciona um tratamento.

Dê uma olhada neste github solução: https://github.com/NUBIC/bcdatabase.bcdatabase fornece um armazenamento criptografado, onde as senhas podem ser mantidas separadas dos arquivos yaml.

bcdatabase

bcdatabase é uma biblioteca e utilitário que fornece configuração do banco de dados parâmetro de gestão para Ruby on Rails aplicativos.Ele fornece uma simples o mecanismo de separação de banco de dados atributos de configuração de código-fonte da aplicação, de modo a que não há a tentação de seleção as senhas para o controle de versão do sistema.E centraliza a parâmetros para um único servidor de forma que eles podem ser facilmente compartilhados entre vários aplicativos e fácil atualizado por um único administrador.

Mesmo se você proteger o banco de dados.yml arquivo, pode-se ainda escrever que usa as mesmas credenciais, se pode alterar o código de seu aplicativo.

Uma outra maneira de olhar para isto é:o aplicativo web para ter acesso ao banco de dados.Se verdadeiro inferior a permissões.Dar apenas o suficiente permissões para o aplicativo.Dessa forma, um invasor pode apenas fazer o que o aplicativo da web seria capaz de fazer.

Se você está muito preocupado com a segurança do yml arquivo, eu tenho que perguntar:Ela está armazenada em seu controle de versão?Se assim for, o que é outro ponto onde um atacante pode chegar a ele.Se você está fazendo o checkout/checkin não SSL, alguém pode interceptá-lo.

Também, com alguns de controle de versão (svn, para exampl), mesmo se você removê-lo, ele ainda existe na história.Assim, mesmo se você removeu-lo em algum ponto no passado, ainda é uma boa idéia para alterar as senhas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top