経緯
APIキーを管理する必要があって、色々調べていたら、結構奥が深かったので、まとめた。
自分の考え
ソースに書いて流出したって事件は、何度も聞いていたので、ソースベタ書きはダメだっていうのは分かる。
前の現場で、環境変数にもたせていたのを見て、そういうふうに管理するのねって思っていた。
調べて分かったこと
管理に重要な要素
- 交換容易性
- 秘匿性
- 管理性
管理方法
- 暗号化してコードに書く
- 普通に平文に書いてるのと変わらない
- 環境変数に登録
- コードに出てこないので開発者から見えにくい
- 環境管理が面倒くさい
- 環境にアクセスできる人から漏れる可能性大
- データベース管理
- DBアクセスできる人から漏れる可能性大
- 集中管理できる
- 外部の管理サービス
- 漏洩リスクが低い
- お金。。。
実際に自分がやった方法
いろいろ調べた結果、環境変数が一番楽そうだと思い挑戦。
DBも楽そうだと思ったが、たぶん、登録SQLにベタ書きして流出の流れになりそうな気がしたから。
金がないので、外部サービスは論外
実践
Node.js系のプロジェクトなので、いいライブラリがないか調べたところ、dotenvがデファクトスタンダードっぽいので利用
インストール方法
$ npm install dotenv
ちゅかいかた
プロジェクト配下に.envファイルを用意する。
あと、gitとか使っているのなら、.gitignoreファイルに.envを追加しておく。
自分は、gibo使ってgitignore生成していたので、デフォルトでenv除外するようになってた
giboの使い方は、以前に調べたので、下記の記事参照
具体的な使い方として例を上げると、まず、envに下記の記載をしたとする。
api_key=xxxxxxxxxxxxxxxx
上の値を読むなら、いかの実装になる。
require('dotenv').config(); var key = process.env.api_key;
config()することでprocess.envに値がロードされて使えるようになる。
感想
chu!考え浅くてごめん
文章まとまって無くてごめん
最近、「可愛くてごめん」にハマってる。
あれは、歌い手の声質に依存する歌だなって思う。
調べてるうえで、12ファクターを知らないのは、損だな~って思った。
どこかのタイミングでまとめたい。
ただ、言語化してないだけで、認識としては持ってそうな気がする。