テクノロジー

2017年11月06日
  • #tips

大事な値の管理

Aws4 request&x amz signedheaders=host&x amz signature=6950dbf697b075bc07843c995f6e8c99975774824e0fedd376101b5a6cea2d10

大事な値の管理

GitHubは、インターネット上でソースコードを管理するサービスです。
何も施策をしないと、パスワードのような 大事な値 がインターネット上に公開されてしまうことになります。
さらに厄介なことに、一度インターネットにあげてしまうと、自分が今まで開発してきたアプリを取り消さなければならない状況になることがあります。

※Gitの概要に関しては参照記事をご一読ください。
「Gitの概要について」

大事な値とは

大事な値とは例えば以下のようなものを指します。

  • AWSのアクセスキー
  • SendGridのIDとパスワード
  • API関連のIDとパスワード

大事な値が盗まれるとどうなるか

このような大事な値が盗まれると、以下のようなことが起きる可能性があります。

  • AWSから高額な請求が来る
  • SendGridが乗っ取られ、淫らなメールが大量配信される

これらはDIVE INTO CODEで実際に起こった事件です。

ではなぜ盗まれるのでしょうか?
それは頭がよくて な人たちが、いたずらしようとネット上をクローリングしているからです。
十分に注意しましょう。

防ぐ方法

一番簡単で確実なのは、インターネット上にあげたくないファイルやディレクトリ全体を バージョン管理対象外 にすることです。
方法としては以下のようになります。

  1. 「.gitignore」というファイルに、バージョン管理対象外にするファイルやディレクトリを指定する
  2. 「.env」というファイルに、インターネット上にあげたくない値を記載する

.gitignoreファイルとは、GitHubなどによるバージョン管理に含めないファイルを指定するためのものです。つまり、.gitignoreファイルに記載されたファイルは、Git操作をしても外部に送信されません。

前回 git init というコマンドを実行した時に .gitignore というファイルが作成されています。
以下にRails用のgitignoreがあるので、コピペしましょう。

  • [x] やってみましょう!

Rails.gitignore

コピペしたファイルを見るとわかりますが、.envと記載されています。つまり、.envファイル内にパスワードなどの大事な値を記載しておけば、バージョン管理対象外になるということです。

.envファイルで大事な値を管理するには、dotenv(ドットエンブと読みます)というgemを使います。dotenvは、 .envファイルに書いた大事な値を簡単に読み込めるgemのことです。
今回は試しに以下のようにパスワードを管理するという前提で話を進めていきます。
.envファイルにパスワード情報を記載してみましょう。

  • [x] やってみましょう!

(.env)

PASSWORD="dcdvgnnnbvmjlbafgtihirgoifalvfdccdcsc"

.envファイルに記載した大事な値は rails console で呼び出すことができます。

  • [x] やってみましょう!

(コンソール)

~/workspace/achieve $ rails c

[1] pry(main)> ENV["PASSWORD"]
=> "dcdvgnnnbvmjlbafgtihirgoifalvfdccdcsc"

つまり インターネット上にあげる前あげてはいけない値を管理 することが大事なのです。
そのためにdotenvという仕組みがあるので、有効活用しましょう。

基本的な作業ですが、ひとつ間違うと取り返しのつかない結果を招きます。細心の注意を払いましょう。

DIVE INTO CODEのことをもっと知ってみませんか?