728x90
반응형
Rails 애플리케이션을 개발하다 보면 API 키, 비밀번호, DB 비밀 설정 등 민감한 정보를 코드에 직접 넣는 실수를 종종 저지르게 됩니다.
이런 정보는 절대 Git에 커밋해서는 안 되고, 환경변수(Environment Variable)로 분리해서 관리하는 것이 필수입니다.
이번 글에서는 두 가지 방법 — dotenv
로 간편하게 관리하는 방법과, secrets.yml
및 credentials
로 Rails 자체 기능을 사용하는 방법을 소개합니다.
🌿 1. dotenv — 간단하고 직관적인 방식
로컬 개발 환경에서 환경변수를 쉽게 관리할 수 있는 방법입니다.
✅ 설치
# Gemfile
gem 'dotenv-rails', groups: [:development, :test]
$ bundle install
📁 .env 파일 생성
# .env
API_KEY=abcdef123456
SECRET_TOKEN=secrettoken987
이 파일은 루트 디렉토리에 위치하며, Git에 커밋되지 않도록 해야 합니다.
# .gitignore
.env
🔐 사용법
# anywhere in code
ENV["API_KEY"]
Rails 앱이 실행될 때 자동으로 환경변수가 메모리에 로드됩니다.
🔐 2. Rails credentials / secrets.yml 방식
Rails 5.2 이후부터는 암호화된 자격 정보를 안전하게 보관할 수 있는 방식이 내장되어 있습니다.
✅ credentials 편집
$ EDITOR="code --wait" bin/rails credentials:edit
실행하면 config/credentials.yml.enc
를 열 수 있게 되고, config/master.key
로 암호화되어 저장됩니다.
# 예시
gmail:
user: myemail@gmail.com
password: supersecret
🔐 접근
Rails.application.credentials.gmail[:user]
Rails.application.credentials.gmail[:password]
🚫 master.key는 Git에 올리면 안 됨!
# .gitignore
config/master.key
배포 서버에는 다음처럼 직접 등록합니다:
$ heroku config:set RAILS_MASTER_KEY=your_master_key
🆚 dotenv vs credentials 차이
항목 | dotenv | Rails credentials |
---|---|---|
보안 수준 | 낮음 (암호화 없음) | 높음 (암호화 저장) |
설정 위치 | .env 파일 | credentials.yml.enc |
공유 방식 | 환경마다 직접 .env 생성 | master.key를 공유하거나 배포 설정 |
권장 시나리오 | 개발, 테스트 환경 | 운영 환경 (실서버) |
🎯 마치며
환경변수를 제대로 관리하는 습관은 단순한 개발 스킬을 넘어 보안과 운영 안정성을 확보하는 중요한 기술입니다.
초기에는 dotenv
로 시작해도 충분하지만, 운영 환경에 들어갈수록 Rails credentials
를 적극적으로 활용하는 걸 추천합니다.
728x90
반응형
'Ruby On Rails' 카테고리의 다른 글
API 서버로서의 Rails — Rails + React/Vue 조합 만들기 (2) | 2025.08.14 |
---|---|
Rails 캐싱 전략 — 페이지, 프래그먼트, 러시아 인형 캐시 (2) | 2025.08.12 |
Capistrano로 자동 배포 파이프라인 만들기 (2) | 2025.08.05 |
Heroku로 Rails 앱 배포하기 — 빠르고 간단한 클라우드 배포 (2) | 2025.07.31 |
Rails 앱 보안 점검 — CSRF, SQL Injection 막기 (2) | 2025.07.29 |