【Rails】credentials.yml로 시크릿 키등을 관리한다

소개



Rails 5계에서 등장한 credentials에 대해 비망록적으로 정리해 둡니다.

credentials는?



비밀 키 등을 두는 파일입니다.

이 파일의 내용은 master.key에 의해 암호화되므로 올바른 master.key를 모르는 사람은 내용을 볼 수 없습니다.

credentials의 내용은, master.key의 정보가 있으면 다른 파일 중에서 변수로서 호출할 수 있으므로, 이 파일안에 API키등을 넣어 두면 편리하기도 합니다.

master.key와 credentials 파일은 rails new 때 자동으로 만들어지고 master.key는 기본적으로 .gitignore에 들어 있기 때문에 github에서 유출할 걱정도 없습니다.

사전 준비



이번에는 VScode를 사용한다고 가정합니다.

먼저 VScode에서 command + shift + P 에서 팔레트를 여십시오.
그런 다음 검색 상자에 shell를 입력하여 셸을 설치합니다.

이제 터미널에서 credentials 파일을 VScode에서 편집할 수 있습니다.

설정 방법



다음 명령을 사용하여 credentials 파일을 VScode에서 엽니다.

터미널
$ EDITOR='code --wait' rails credentials:edit

기본적으로 처음 세 줄에 예제가 주석으로 작성되어 있으므로 흉내내면 괜찮습니다.

xxxxx.credentials.yml
aws:
  access_key_id: 123
  secret_access_key: 345q

1행째는 어떤 그룹인가, 2, 3행째는 id나 액세스 키등을 쓰고 있습니다.
그룹의 내용은 들여 쓰기가 필요합니다.

하나만이 아니라 복수를 설정할 수 있으므로 시험으로 설정해 보겠습니다.

xxxxx.credentials.yml
aws:
  access_key_id: 123
  secret_access_key: 345q

gmail:
  email: '[email protected]'
  password: 'sample1234'

저장



credentials 파일을 저장하려면 VScode 탭을 닫아야 합니다.
닫고 올바르게 저장되면 터미널에서 다음과 같이 메시지를 표시합니다.New credentials encrypted and saved.

전화하는 방법



내용을 호출하려면 루비 파일에서 다음과 같이 쓰면 OK입니다.
Rails.application.credentials[:グループ名][:中身]

이번 예에서는 다음과 같이 사용할 수 있습니다.
Rails.application.credentials[:aws][:access_key_id]
Rails.application.credentials[:gmail][:email]

터미널에서 콘솔에서 확인할 수 있으므로 credentials 파일을 편집했을 때는 확인하는 것이 좋습니다. rails c 에서 콘솔을 열고 확인해 봅니다.

제대로 호출 할 수 있습니다.

주의



팀 개발할 때 등은 master.key를 공유함으로써 다른 사람도 credentials의 내용을 보거나 편집할 수 있습니다. master.key는 메시지 앱으로 공유하면 좋을 것입니다.

그러나, 신뢰하는 동료라도 개인으로 가지고 있는 aws의 id와 액세스 키 따위는 credentials에서도 공유해서는 안됩니다. (신용카드 번호와 인증 코드를 공유하는 것과 같습니다.)

공유해야 할 정보와 그렇지 않은 정보는 신중하게 판단합시다.
만일 배신당해 카이지와 같은 전개가 되어 후회하는 일이 없도록! 웃음

좋은 웹페이지 즐겨찾기