エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

APIキーの管理について

経緯

APIキーを管理する必要があって、色々調べていたら、結構奥が深かったので、まとめた。

自分の考え

ソースに書いて流出したって事件は、何度も聞いていたので、ソースベタ書きはダメだっていうのは分かる。

前の現場で、環境変数にもたせていたのを見て、そういうふうに管理するのねって思っていた。

調べて分かったこと

管理に重要な要素

  • 交換容易性
  • 秘匿性
  • 管理性

管理方法

  • 暗号化してコードに書く
    • 普通に平文に書いてるのと変わらない
  • 環境変数に登録
    • コードに出てこないので開発者から見えにくい
    • 環境管理が面倒くさい
    • 環境にアクセスできる人から漏れる可能性大
  • データベース管理
    • DBアクセスできる人から漏れる可能性大
    • 集中管理できる
  • 外部の管理サービス
    • 漏洩リスクが低い
    • お金。。。

実際に自分がやった方法

いろいろ調べた結果、環境変数が一番楽そうだと思い挑戦。
DBも楽そうだと思ったが、たぶん、登録SQLにベタ書きして流出の流れになりそうな気がしたから。
金がないので、外部サービスは論外

実践

Node.js系のプロジェクトなので、いいライブラリがないか調べたところ、dotenvがデファクトスタンダードっぽいので利用

インストール方法

$ npm install dotenv

ちゅかいかた

プロジェクト配下に.envファイルを用意する。
あと、gitとか使っているのなら、.gitignoreファイルに.envを追加しておく。
自分は、gibo使ってgitignore生成していたので、デフォルトでenv除外するようになってた
giboの使い方は、以前に調べたので、下記の記事参照

suzaku-tec.hatenadiary.jp

具体的な使い方として例を上げると、まず、envに下記の記載をしたとする。

api_key=xxxxxxxxxxxxxxxx

上の値を読むなら、いかの実装になる。

require('dotenv').config();
var key = process.env.api_key;

config()することでprocess.envに値がロードされて使えるようになる。

感想

chu!考え浅くてごめん
文章まとまって無くてごめん
最近、「可愛くてごめん」にハマってる。
あれは、歌い手の声質に依存する歌だなって思う。

調べてるうえで、12ファクターを知らないのは、損だな~って思った。
どこかのタイミングでまとめたい。
ただ、言語化してないだけで、認識としては持ってそうな気がする。

参考サイト

dotenvでAPIキーを適切に管理しよう - Qiita

APIキーの保管 - プログラミング初心者がアーキテクトっぽく語る

環境変数の代わりに .env ファイルを使用する (dotenv) - まくまくNode.jsノート