↓↓クリックして頂けると励みになります。
【49 | 本番環境のコールバック】 << 【ホーム】
Ruby on Railsで開発したアプリケーションをherokuにデプロイする際、データベースのパスワードや他連携サービスの情報など、機密情報の取り扱いには注意が必要です。
ただ、開発環境と本番環境で機密情報の設定が違うため、アップデートを行う際に開発環境で確認できなくなると不都合が生じます。
そこで、開発環境での機密情報の設定方法と本番環境(heroku)での設定方法を解説します。
まず開発環境での機密情報の設定方法です。
GemFileに「dotenv」gemを追加します。
gem 'dotenv', '~> 2.8', '>= 2.8.1'
バンドルします。
コマンド
bundle
ルートディレクトリに「.env」という名前のファイルを新規作成してください。
今回は、本番環境用のデータベース設定をしてみます。
新規作成 【.env】
DB_USER = "tbhsjefuhm***" DB_PASSWORD = "f72618c0a2539d014c44c429***" DB_HOST = "ec2-34-236-199-229.compute-1.amazonaws.com" DB_DATABASE = "dgp65***"
設定した環境変数を取り扱うには、ENV['DB_USER']などとして使用します。
「config/database.yml」ファイルの本番環境の項目を以下のように編集します。
記述編集 【config/database.yml】
production: <<: *default database: <%= ENV['DB_DATABASE'] %> username: <%= ENV['DB_USER'] %> password: <%= ENV['DB_PASSWORD'] %> host: <%= ENV['DB_HOST'] %>
このままですと、「.env」ファイルを誤ってGitHubに送信しかねないので、「.gitignore」ファイルに、「.env」ファイルを送信しないよう、ルールを最終行に記述します。
Rails7.1ではデフォルトで11行目に書かれていますので、追記する必要はありません。
記述確認 【.gitignore】
# See https://help.github.com/articles/ignoring-files for more about ignoring files. # # If you find yourself ignoring temporary files generated by your text editor # or operating system, you probably want to add a global ignore instead: # git config --global core.excludesfile '~/.gitignore_global' # Ignore bundler config. /.bundle # Ignore all environment files (except templates). /.env* !/.env*.erb # Ignore all logfiles and tempfiles. /log/* /tmp/* !/log/.keep !/tmp/.keep # Ignore pidfiles, but keep the directory. /tmp/pids/* !/tmp/pids/ !/tmp/pids/.keep # Ignore storage (uploaded files in development and any SQLite databases). /storage/* !/storage/.keep /tmp/storage/* !/tmp/storage/ !/tmp/storage/.keep /public/assets # Ignore master key for decrypting credentials and more. /config/master.key
herokuに機密情報を登録します。
これをすることで、機密情報が暗号化され、安全が保たれます。
Herokuのダッシュボードで「Settings」タブの「Config Vars」を開きます。
「.env」ファイルの内容と同じように機密情報を追加します。
これで機密情報の設定が終了です。
パスワードやIDなどの機密情報はこのように設定しておけば漏洩のリスクが下がります。
【49 | 本番環境のコールバック】 << 【ホーム】
↓↓クリックして頂けると励みになります。