2013-06-17 3 views
8

아시다시피 데이터베이스의 올바른 데이터베이스 이름, 사용자 이름 및 비밀번호를 config/database.yml 파일에 입력해야합니다. 그렇지 않으면 Rails 앱이 작동하지 않습니다.Rails 앱에 데이터베이스 비밀번호를 안전하게 제공하십시오.

기본 설정에서 암호는 config/database.yml 파일의 일반 텍스트입니다. 앱이 무료 GitHub 저장소에있는 경우 비밀번호는 공개 정보입니다. 이것은 심각한 앱의 실행 가능한 옵션이 아닙니다. (이 암호를 다른 용도로 사용하지 않는다면 자습서 연습에는 문제가 없습니다.)

나는 지금까지 저에게 도움이 된 해결책이 있지만, 더 좋은 것이 있는지 궁금합니다. 내 배포 된 예제는 https://github.com/jhsu802701/bsf에 있습니다.

내가하는 일은 config/database.yml 파일을 설정하여 개발 환경의 사용자 이름과 암호를 프로그램 적으로 제공하는 것입니다. 개발 환경에서는 config/database.yml 스크립트에 명령을 추가하여 개발 환경 사용자 이름 (내가 사용하는 데비안 리눅스 설정의 일반 사용자 이름)과 빈 암호를 얻습니다. 프로덕션 환경에서는 배포 스크립트에 내 계정의 다른 위치에서 파일에서 사용자 이름과 비밀번호를 가져 와서이 정보를 config/database.yml 파일에 기록하는 명령을 추가합니다.

더 좋은 솔루션이 있습니까?

이 문제를 다루는 루비 보석이 있나요? 그렇지 않다면 나는 하나를 창조하려고 생각하고있다.

답변

16

Heroku가 그것을 수행하는 방법, 및 상점 ENV 변수를 다른 레일의 대부분

수출 환경에 두 개의 변수, 당신의 database.yml을에서 다음

export POSTGRES_USERNAME='username' 
export POSTGRES_PASSWORD='password' 

은 당신이 할 수있는 파일 이것은 내가 그것을 작동하게하는 방법이다

username: <%= ENV['POSTGRES_USERNAME'] %> 
password: <%= ENV['POSTGRES_PASSWORD'] %> 
4

수행 터미널에

/cmd :

heroku config:set YOUR_DATABASE_PASSWORD=passywordy 

그런 다음 /config/database.yml 파일에서;

production: 
<<: *default 
password: <%= ENV['YOUR_DATABASE_PASSWORD'] %> 

export KEY=value 다음 당신에게 bash에 입력하여 당신에게 시스템 환경 (리눅스)에 변수를 수출 Heroku가 아닌 다른에

1

(I 레일 새로운을 my_app -d PostgreSQL을 사용하는 경우이 암호 영역이 자동으로 생성됩니다) Rails에서 호출 할 수 있습니다. ENV['KEY']

예. 떠들썩한 파티에서
:
export CMS_DATABASE_PASSWORD=MySecurePassword
secrets.yml에서 : 상기 기존 게시물 바와 같은 환경 변수 설정
password: <%= ENV['CMS_DATABASE_PASSWORD'] %>

0

만 현재 쉘 세션의 지속 기간에 대한 환경 변수를 유지한다.

영구적으로 환경 변수를 설정하려면 export 명령어를 쉘 구성 파일에 추가해야합니다.

TL을 (그리고 현재 세션에 변경 사항을 적용 source ~/.bashrc를 실행), DR을 : 당신이 BASH를 사용하는 경우, 위에서 충분해야하지만 (만약 ~/.bashrc.

export 명령 (들)을 추가 가장 널리 사용되는 리눅스 배포판에서 BASH를 사용하는 것), 자신의 셸에서 어떤 설정 파일을 업데이트 할 것인지를 자신있게 확인하는 것은 매우 까다 롭습니다. 다음 게시물은 그 이유와 이유를 설명하고 편집 할 구성 파일에 대한 지침을 제공합니다.

https://unix.stackexchange.com/questions/117467/how-to-permanently-set-environmental-variables

관련 문제