Ruby on Rails 6 자격 증명: 빠른 가이드
종종 Rails 앱에서 작업할 때 취약한 데이터를 처리해야 합니다.
대부분 통합하는 서비스에 대한 API 키입니다.
가장 일반적인 예:
여기에서 Github에서 제공하는
client_id
및 client_secret
를 볼 수 있으므로 "Github로 로그인"기능을 추가할 수 있습니다.이러한 키를 사용하려면 다음과 같이
devise.rb
파일에 키를 직접 배치할 수 있습니다.config.omniauth :github, "23r32t34t4rg", "regregbesgbvtegc4g43g343"
그러나 이 접근 방식은 보안 위협을 만듭니다.
예를 들어 리포지토리가 오픈 소스이거나 타사와 공유되는 경우 누구나 API 키를 오용할 수 있습니다.
귀하의 계정으로 이어질 수 있습니다.
그렇기 때문에 자격 증명을 사용하여 중요한 데이터를 암호화해야 합니다.
devise.rb
의 암호화된 라인은 다음과 같습니다.config.omniauth :github, (Rails.application.credentials[Rails.env.to_sym][:github][:client]).to_s, (Rails.application.credentials[Rails.env.to_sym][:github][:secret]).to_s
그럼 어떻게 작동시키나요?
시작하자:
Rails 6 앱을 만들 때 app/config 아래에 credentials.yml.enc
라는 파일이 있습니다.
credentials.yml.enc
파일을 열면 일반적으로 다음과 같이 표시됩니다.
공개 저장소에서 공유하는 것이 암호화되고 안전합니다.
credentials.yml
파일을 해독하기 위해 master.key
파일이 사용됩니다.
절대 대중과 마스터 키를 공유하지 마십시오.
마스터 키를 분실하면 자격 증명을 해독할 수 없습니다.
기본적으로 master.key
는 git 커밋에 포함되지 않습니다.
credentials.yml
를 해독하고 보거나 편집하려면
당신은 달릴 수 있습니다 rails credentials:edit
또는 EDITOR=vim rails credentials:edit
.
해독되면 credentials.yml
파일은 일반적으로 다음과 같이 표시됩니다.
Rails 앱 또는 콘솔에서 credentials.yml
의 데이터를 검색하려면 다음과 같이 실행할 수 있습니다.
rails c
Rails.application.credentials.dig(:aws, :access_key_id)
#=> sdgb89dngfm6cg8jmbdb8f9bfg6n8fnd7bd9f
Rails.application.credentials[:github][Rails.env.to_sym][:secret]
#=> 6hl65knh4l5vgm8
터미널 내부의 VIM에서 파일을 편집하는 것은 까다롭고 부자연스럽게 느껴질 수 있습니다.
파일을 편집하려면 i
를 누르십시오. 파일 하단에 INSERT
가 표시되어 현재 파일을 편집할 수 있다는 메시지가 표시됩니다.
완료되면 ESC
을 누르십시오. 다음으로 :wq
+ ENTER
를 눌러 저장하고 종료합니다.
또는 ESC
+ :q!
+ ENTER
를 눌러 저장하지 않고 종료합니다.
config/credentials.yml의 실제 예:
awss3:
access_key_id: YOUR_CODE_FOR_S3_STORAGE
secret_access_key: YOUR_CODE_FOR_S3_STORAGE
google_analytics: YOUR_CODE_FOR_GOOGLE_ANALYTICS
recaptcha:
site_key: YOUR_CODE_FOR_RECAPTCHA
secret_key: YOUR_CODE_FOR_RECAPTCHA
google_oauth2:
client_id: YOUR_CODE_FOR_OAUTH
client_secret: YOUR_CODE_FOR_OAUTH
development:
github:
client: YOUR_CODE_FOR_OAUTH
secret: YOUR_CODE_FOR_OAUTH
stripe:
publishable: YOUR_STRIPE_PUBLISHABLE
secret: YOUR_STRIPE_SECRET
production:
github:
client: YOUR_CODE_FOR_OAUTH
secret: YOUR_CODE_FOR_OAUTH
stripe:
publishable: YOUR_STRIPE_PUBLISHABLE
secret: YOUR_STRIPE_SECRET
facebook:
client: YOUR_CODE_FOR_OAUTH
secret: YOUR_CODE_FOR_OAUTH
프로덕션에서 마스터 키를 설정하려면(heroku 예):
heroku config:set RAILS_MASTER_KEY=YOURMASTERKEY
또는
heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
그게 다야 🤠
이 기사가 마음에 드셨나요? 저를 따르십시오! 더 재미있는 것을 게시하도록 동기를 부여할 것입니다!
Reference
이 문제에 관하여(Ruby on Rails 6 자격 증명: 빠른 가이드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/yarotheslav/ruby-on-rails-6-credentials-quick-guide-2g8i
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
rails c
Rails.application.credentials.dig(:aws, :access_key_id)
#=> sdgb89dngfm6cg8jmbdb8f9bfg6n8fnd7bd9f
Rails.application.credentials[:github][Rails.env.to_sym][:secret]
#=> 6hl65knh4l5vgm8
awss3:
access_key_id: YOUR_CODE_FOR_S3_STORAGE
secret_access_key: YOUR_CODE_FOR_S3_STORAGE
google_analytics: YOUR_CODE_FOR_GOOGLE_ANALYTICS
recaptcha:
site_key: YOUR_CODE_FOR_RECAPTCHA
secret_key: YOUR_CODE_FOR_RECAPTCHA
google_oauth2:
client_id: YOUR_CODE_FOR_OAUTH
client_secret: YOUR_CODE_FOR_OAUTH
development:
github:
client: YOUR_CODE_FOR_OAUTH
secret: YOUR_CODE_FOR_OAUTH
stripe:
publishable: YOUR_STRIPE_PUBLISHABLE
secret: YOUR_STRIPE_SECRET
production:
github:
client: YOUR_CODE_FOR_OAUTH
secret: YOUR_CODE_FOR_OAUTH
stripe:
publishable: YOUR_STRIPE_PUBLISHABLE
secret: YOUR_STRIPE_SECRET
facebook:
client: YOUR_CODE_FOR_OAUTH
secret: YOUR_CODE_FOR_OAUTH
heroku config:set RAILS_MASTER_KEY=YOURMASTERKEY
heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
Reference
이 문제에 관하여(Ruby on Rails 6 자격 증명: 빠른 가이드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yarotheslav/ruby-on-rails-6-credentials-quick-guide-2g8i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)