2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

credentials.yml master.key関係について

Posted at

「credentials.yml」と「master.key」はRails5.2から追加された秘密情報を管理する仕組みです。

環境変数を使用せずにRails単体で秘密情報を管理できるため、ローカルの環境に依存しない大変便利な機能。

秘密情報の管理

開発をしていく中で、共有ツールを使用するのは当たり前、誰もがアクセスできて、プルリクなどをもらったり、自分にコードを見てもらうことが当たり前なオープンソース時代。

●そこで問題が発生
・自分の個人情報をさらけ出していると外部から攻撃され、個人情報が盗まれる可能性がある。

秘密情報とは

・例えば、AWSのアカウントだったり、データベースのパスワードなどです。
・他にも決済機能を入れている場合だったらstrpeやpaypalの秘密鍵や公開鍵がそれに値するでしょう。
・これらをGithubなどのバージョン管理システムでPublic(公共的)にみられないようにしないと大変なことになります。

Rails5.2でcredentials.ymlが誕生

●作成手順と流れ
①クマさんがcredentials.ymlを作成
②Githubにプッシュ
③クマくんがサメさんにmastre.keyを共有する。
※AWS秘密鍵、AWS公開鍵
④サメさんがGitthubからプルしてcredentials.ymlを同期

※秘密鍵が追加・変更・削除があった場合に、いちいちローカルの環境を更新せずGithubなどのバージョン管理システムからコードを同期するだけで追加・変更・削除が可能になったため、コストが激減した。

credentials.ymlの仕組み

入力された秘密情報の文字列をmaster.keyの文字列で暗号化し、credentials.ymlという鍵を作成します。

credentials.yml.encとは?

●公開鍵と呼ばれるものです。
イメージとして、credentials.yml.encは家の施錠前です。
master.keyがないと情報を開示できないため、Githubなどへの公開が可能です。

master.keyとは?

秘密鍵と呼ばれるものです。
rails newコマンドでRailsアプリを作成した人がmaster.keyを持っています。

イメージとして、master.keyはシンプルに家の鍵のものと考えてください。

家の鍵を道端におこないように、Githubなどへの公開してはいけません。

チームメンバーと共有したい場合は、 LineやSlackメールなどでチームメンバーだけに共有する。

credentials.ymlの編集

●credentials.yml.encの文字列を直接変更せず、コマンドを使用してテキストエディタで開きます。
●ymlファイルのため、インデントに注意

・コマンドを使用してテキストエディタを開いてから編集するのは、credentials.yml.encは暗号化された文字列であるため、変更されてしまうと鍵そのものが変わってしまうためです。あくまでも変更したいのは、鍵を施錠した中身であるため、注意しましょう。

下記コマンド実行

# VScodeで開く場合
$ EDITOR='code --wait' rails credentials:edit

# Vimで開く場合
$ EDITOR='vim' rails credentials:edit

表示文字列

# aws:
#   access_key_id: 123
#   secret_access_key: 345

# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: 8be4sevDaga6...............

上記構文を下記のように変更

aws:
  access_key_id: xxxxxxxxxxxxxxx
  secret_access_key: yyyyyyyyyyyyyyyyyy

# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: 8be8e637d755f79c799048bed8be0c...

※今回は適当にawsの公開鍵を秘密鍵を変更します。

変更後保存したファイルを閉じてください。以下のように表示されたら暗号化はできています。

New credentials encrypted and saved.

以上。

下記参考サイト参照
https://hirocorpblog.com/rails-credentials-master/

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?