Rails에서 환경변수 관리 — dotenv와 secrets.yml

2025. 8. 7. 09:00·Ruby On Rails
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
'Ruby On Rails' 카테고리의 다른 글
  • API 서버로서의 Rails — Rails + React/Vue 조합 만들기
  • Rails 캐싱 전략 — 페이지, 프래그먼트, 러시아 인형 캐시
  • Capistrano로 자동 배포 파이프라인 만들기
  • Heroku로 Rails 앱 배포하기 — 빠르고 간단한 클라우드 배포
코드를 걷는 사람
코드를 걷는 사람
devwanderer 님의 블로그 입니다.
  • 코드를 걷는 사람
    터미널 밖으로 나온 개발자
    코드를 걷는 사람
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • Flutter
        • Flutter 게시판 앱 만들기
        • Flutter 뉴스 앱 만들기
        • Flutter 메모 앱 만들기
        • Flutter 캘린더 앱 만들기
        • Flutter 날씨 앱 만들기
      • Next.js
      • Ruby On Rails N
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    정적사이트
    Nextjs
    flutter앱개발
    table_calendar
    flutter게시판
    코드를걷는사람
    Flutter
    flutter상태관리
    모바일앱개발
    다크모드
    메모앱
    RubyOnRails
    flutter디자인
    ActiveRecord
    rails보안
    fluttertips
    UI디자인
    flutterui
    뉴스앱
    flutter개발
    openweather
    백엔드개발
    북마크기능
    날씨앱
    감성앱
    개발블로그
    캘린더앱
    flutter기초
    Firebase
    UIUX
  • 최근 댓글

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
코드를 걷는 사람
Rails에서 환경변수 관리 — dotenv와 secrets.yml
상단으로

티스토리툴바