Herokuで環境変数を使うセキュリティ対策

これまでは twitter bot に使う consumer key や access token の値をソースコードに直に書いていたのですが、ソースコードが漏れるとそれらの値も流出してしまいます。

そこで、セキュリティを考えて環境変数で指定する形にしてみようと思います。

環境変数の設定

環境変数は 4 つ使います。

  • CONSUMER_KEY=”consumer keyの値”
  • CONSUMER_SECRET=”consumer secretの値”
  • ACCESS_TOKEN=”{access tokenの値”
  • ACCESS_TOKEN_SECRET=”access token secretの値”

Herokuの設定

Heroku に環境変数を追加します。

$ heroku config:set --app APPLICATION CONSUMER_KEY="consumer keyの値" CONSUMER_SECRET="consumer secretの値" ACCESS_TOKEN="access tokenの値" ACCESS_TOKEN_SECRET="access token secretの値"

設定した環境変数を確認するときや削除するときは、次のようにコマンド入力します。

#環境変数の確認
$ heroku config:get --app APPLICATION ENVIRONMENT

#環境変数の削除
$ heroku config:unset --app APPLICATION ENVIRONMENT

ちなみに、環境変数を設定するとアプリケーションのバージョンも更新されます。

BOTの仕様

twitter bot で認証に使うソースコードも、os モジュールを利用して環境変数を読む形に変更します。

import tweepy, os

CONSUMER_KEY = os.environ["CONSUMER_KEY"]
CONSUMER_SECRET = os.environ["CONSUMER_SECRET"]
ACCESS_TOKEN = os.environ["ACCESS_TOKEN"]
ACCESS_TOKEN_SECRET = os.environ["ACCESS_TOKEN_SECRET"]
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)

これで完了です。