Rails

【AWS環境構築】secret_key_baseと環境変数の設定方法を簡単にまとめてみた

AWS

 

今回はsecret_key_baseと環境変数の設定方法について解説したいと思います。聞き慣れない用語が早速2つ登場しましたが、今回を機に理解を深めていきましょう。

この記事は前回の続きとなっています。

↓前回の記事はこちら

AWS
【AWS環境構築】2行で解決!本番環境でbundlerを導入する方法を紹介EC2サーバー側でbundlerを導入する方法を紹介しています。bundlerは、依存関係にあるgemを一括インストールしてくれたり、バージョン管理をしてくれるものです。ローカルと同じバージョンのbundlerを導入していきましょう。...

環境変数とは

環境変数とは、Githubにアップロードすることができない情報を入れておく箱のようなものです。データベースパスワードや外部サービスのパスワードなどを環境変数として設定します。

環境変数に設定した値は、ENV[‘<環境変数名>’]という記述で呼び出すことができます。

試しにconfig/secrets.ymlを見てみると、<%= ENV[“SECRET_KEY_BASE”] %>という記述がされていると思います。この記述により、環境変数に設定したsecret_key_baseという値を呼び出すことができます。

↓ config/secrets.yml

secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

secret_key_baseとは

secret_key_baseとは、Cookieの暗号化に用いられる文字列です。万一これが流出してしまうと、なりすましをされてしまう可能性があるので注意しましょう。

secret_key_baseは、Railsアプリケーションを動作させるために必須の設定です。

設定方法

では実際に環境変数の設定を行っていきます。

まずはsecret_key_baseを生成しましょう。

↓ ターミナル(EC2)

[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ rake secret
69619d9a75b78f2e1c87ec5e07541b42f23efeb6a54e97da3723de06fe74af29d5718adff77d2b04b2805d3a1e143fa61baacfbf4ca2c6fcc608cff8d5a28e8d
表示された長い文字列はコピーしておいてください。

 

続いて、EC2インスタンスに環境変数を設定していきます。環境変数は /etc/environment というファイルに保存することで、サーバ全体に適用されます。

↓ ターミナル(EC2)

[ec2-user@ip-172-31-23-189 ~]$ sudo vim /etc/environment

 

以下のような画面が表示されたら、正常に/etc/environmentが開かれたことになります。

vimコマンド

 

「i」を打ち込んで入力モードに切り替えましょう。入力モードに切り替わったら、以下をのようにDATABASE_PASSWORDとSECRET_KEY_BASEを記述します。

↓ /etc/environment

DATABASE_PASSWORD='MySQLのrootユーザーのパスワード'
SECRET_KEY_BASE='先程コピーしたsecret_key_base'

「=」の前後にはスペースを空けないように注意しましょう。

↓MySQLのパスワード設定はこちら

AWS
【AWS環境構築】本番環境にMySQL5.6をインストールする方法MySQLをインストールする方法とMySQLのrootユーザーのパスワードを設定する方法を紹介しています。EC2サーバーの環境構築はかなりハードですが、1つ1つ焦らず進めていきましょう。...

 

記述が完了したら「esc(エスケープキー)→:wq」と入力して内容を保存します。

vimコマンド

 

保存後、環境変数を適用するために一旦ログアウトし、再度ログインしましょう。

↓ ターミナル(EC2)

[ec2-user@ip-172-31-23-189 ~]$ exit

 

↓ ターミナル(ローカル)

$ ssh -i [ダウンロードした鍵の名前].pem ec2-user@[作成したEC2インスタンスと紐付けたElastic IP]

 

 

環境変数がきちんと設定されているか確認します。先ほど設定したSECRET_KEY_BASEとDATABASE_PASSWORDがきちんと表示されれば完了です、お疲れ様でした。

↓ ターミナル(EC2)

[ec2-user@ip-172-31-23-189 ~]$ env | grep SECRET_KEY_BASE
> 設定したsecret_key_baseが表示

[ec2-user@ip-172-31-23-189 ~]$ env | grep DATABASE_PASSWORD
> 設定したdatabase_passwordが表示

envコマンドは環境変数を設定してプログラムを実行するコマンドで、grepコマンドはファイルの中にある文字列を検索するために用いられるコマンドです。

まとめ

  • 環境変数とは、Githubにアップロードすることができない情報を入れておく箱のようなもの
  • 環境変数に設定した値は、ENV[‘<環境変数名>’]という記述で呼び出すことができる
  • secret_key_baseとは、Cookieの暗号化に用いられる文字列のこと

 

 

今回はsecret_key_baseと環境変数の設定方法について解説しました。これらの設定はセキュリティを守る上で非常に重要なので、しっかり行っていきましょう。