アクセストークンや機密キーなどの絶対に外部にもれてはいけない秘匿情報を開発で利用しながらgithubにpushし、仮にもれてしまうと大変な損害を受けてしまう可能性があります。
今回.envファイルを利用してgithubにpushしても外部にもれないで使いこなす方法を紹介します。
方法はめちゃくちゃ簡単なので参考にしてみて下さい。環境変数は使用しません。
コンテンツ
(命がけ)実際に秘匿情報をのせたままgitにpushする
実際にアクセストークンや機密キーなどの秘匿情報をファイルに記載したままgitにpushするとどのようなことが起こるのでしょうか。
1 |
$git push origin master |
・・・しばらくすると、githubに登録されたメールに、GitGuardianからメールが届きます。
つまりgithub上のセキュリティが機密キー情報を感知し、わざわざ知らせてくれたのです。
非常にありがたいですね!!
しかしただ単に教えてくれただけで、機密キーは公開されたままです。
仮にこのようなメールが届いたら、即座に機密キーを書き換えるなり使えないようにするなりと制限をかける必要があります。
環境
環境は以下になります。ちなみにヒロヤンの場合はpipenvでの環境開発を行っています。
・OS Mac
・python 3.8
.envファイルの使い方
まずは秘匿情報をのせたファイルを想定し、機密は適当に仮で置いて作成しておきます。
こんな感じ↓
sample.py
1 2 3 4 |
CONSUMER_KEY = 'secret_my_key1' CONSUMER_SECRET = 'secret_my_cousumer2' ACCESS_TOKEN = 'secret_my_access_token1' ACCESS_TOKEN_SECRET = 'secret_my_access_token2' |
作成できているなら、同じディレクトリに.envファイルを作成します。
envの前に.ドットを忘れないように。.ドットファイルは隠しファイルを意味します。
1 |
$ touch .env |
.envファイルを開き定数を定義するコードを書きます。
stringを表す”(シングルクォーテーション)などは要りません。sample.pyで定義した機密キーを書き記します。
.env
1 2 3 4 |
CONSUMER_KEY=secret_my_key1 CONSUMER_SECRET=secret_my_cousumer2 ACCESS_TOKEN=secret_my_access_token1 ACCESS_TOKEN_SECRET=secret_my_access_token2 |
github上で.envファイルがpushされないように.gitignoreというファイルを生成し、中身に.envを記載します。
.gitignoreはカレントディレクトリで構いません。
1 |
$ touch .gitignore |
ファイルの中身には以下を記載します。
1 2 |
.env |
これだけでオッケーです。
続いてpythonのモジュールが利用できるように必要なモジュールをインストールします。
1 |
$pipenv install python-dotenv |
モジュールを使用して、.envファイルが読み込めるようにコードをこのように書き換えます。
sample.py
1 2 3 4 5 6 7 8 9 |
import os from dotenv import load_dotenv load_dotenv() # 取得した各種キーを格納----------------------------------------------------- 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'] |
これで、仮にgithubにpushしてもgithub上にはアクセストークンや機密キーが付与させることはなくなりました。
そして自分の開発環境で柔軟にアクセストークンや機密キーを利用できます。
.gitignoreが反映されない場合
最初に間違えてpushしてgithubにアクセストークンや機密キーなどの秘匿情報をのせてしまい、その後.gitignoreファイルを作成したにも関わらず反映されない場合があります。
その場合は、
- .env、.gitignoreファイルを削除、もしくはプロジェクトフォルダ外へ移動
- その状態で、gitのadd, commit, pushを実行
- 再度.env、.gitignoreファイルを作成
- 作成したら、gitのadd, commit, pushを実行
これで今度はうまくいくはずです
以上が、「【python】.envファイルの使い方」の記事紹介になります。
スクールを利用して本格的に学ぶ
いかがでしたでしょうか?
10人中9人が挫折すると言われるプログラミングを、ヒロヤンも実はプログラミングスクールで学習をしてきたからで、結果、今はPythonエンジニアとして働いています。
挫折率が高いプログラミングこそお金を払ってメンターを付けて、道を見失わないように環境を構築する必要があるのではないでしょうか。
これはダイエットで自分一人では痩せられないけど、トレーナーを付けて否が応でもせざるを得ない環境を作ると一緒ですね。
ヒロヤンもプログラミング勉強開始直後はあれこれ悩みましたが、悩むよりも手っ取り早くスクールに登録した方が最短ルートで勉強できるのではないかと考え、結果挫折せずに今に至っています。
今なら無料でキャリアカウンセリングを行っているCodeCampのPythonコースのようなプログラミングスクールもありますのでこれを機会に是非カウンセリングだけでも受けてみてはいかがでしょうか?
上記リンク先から無料相談ができます。
またこちら(↓)ではPython専用のプログラミングスクールをまとめ紹介しています。
コメントを残す