テクノロジー
2017年11月6日大事な値の管理
今回はGitHubで大事な値を管理する際に必要なことを学んでいきましょう
大事な値の管理
GitHubは、インターネット上でソースコードを管理するサービスです。
何も施策をしないと、パスワードのような 大事な値
がインターネット上に公開されてしまうことになります。
さらに厄介なことに、一度インターネットにあげてしまうと、自分が今まで開発してきたアプリを取り消さなければならない状況になることがあります。
※Gitの概要に関しては参照記事をご一読ください。
「Gitの概要について」
大事な値とは
大事な値とは例えば以下のようなものを指します。
- AWSのアクセスキー
- SendGridのIDとパスワード
- API関連のIDとパスワード
大事な値が盗まれるとどうなるか
このような大事な値が盗まれると、以下のようなことが起きる可能性があります。
- AWSから高額な請求が来る
- SendGridが乗っ取られ、淫らなメールが大量配信される
これらはディープロで実際に起こった事件です。
ではなぜ盗まれるのでしょうか?
それは頭がよくて 暇
な人たちが、いたずらしようとネット上をクローリングしているからです。
十分に注意しましょう。
防ぐ方法
一番簡単で確実なのは、インターネット上にあげたくないファイルやディレクトリ全体を バージョン管理対象外
にすることです。
方法としては以下のようになります。
- 「.gitignore」というファイルに、バージョン管理対象外にするファイルやディレクトリを指定する
- 「.env」というファイルに、インターネット上にあげたくない値を記載する
.gitignore
ファイルとは、GitHubなどによるバージョン管理に含めないファイルを指定するためのものです。つまり、.gitignore
ファイルに記載されたファイルは、Git操作をしても外部に送信されません。
前回 git init
というコマンドを実行した時に .gitignore
というファイルが作成されています。
以下にRails用のgitignoreがあるので、コピペしましょう。
- やってみましょう!
コピペしたファイルを見るとわかりますが、.env
と記載されています。つまり、.env
ファイル内にパスワードなどの大事な値を記載しておけば、バージョン管理対象外
になるということです。
.env
ファイルで大事な値を管理するには、dotenv(ドットエンブと読みます)というgemを使います。dotenvは、 .env
ファイルに書いた大事な値を簡単に読み込めるgemのことです。
今回は試しに以下のようにパスワードを管理するという前提で話を進めていきます。
.env
ファイルにパスワード情報を記載してみましょう。
- やってみましょう!
(.env
)
PASSWORD="dcdvgnnnbvmjlbafgtihirgoifalvfdccdcsc"
.env
ファイルに記載した大事な値は rails console
で呼び出すことができます。
- やってみましょう!
(コンソール
)
~/workspace/achieve $ rails c
[1] pry(main)> ENV["PASSWORD"]
=> "dcdvgnnnbvmjlbafgtihirgoifalvfdccdcsc"
つまり インターネット上にあげる前
に あげてはいけない値を管理
することが大事なのです。
そのためにdotenvという仕組みがあるので、有効活用しましょう。
基本的な作業ですが、ひとつ間違うと取り返しのつかない結果を招きます。細心の注意を払いましょう。