pitを使ってソースコードにパスワードなどを書かずにオープンソース化する方法
今までソースコードにパスワードを直書きしていて非常にまずい状態だったので無理やりどうにかしてみた。
Pit
一番手軽そうなのがPitというライブラリ。 使い方は簡単だ。 大好きなRubyを例に紹介するが、Pythonなどでも同様に扱えるみたい。
ruby -r pit -e "Pit.set('hoge', :data=>{'username'=>'hogeid', 'password'=>'hogehoge'})" require 'pit' config = Pit.get('hoge') id = config['id'] pw = config['password']
環境変数生データ問題
ただ設定ファイルが特に暗号化されずに生で環境変数に載ってしまう。
Windowsの場合 C:\Users\%username%\.pit/default.yaml
暗号化もどき*1
暗号化しようにもWindowsで手軽に暗号化する方法がなくて暗号化もどきをすることで落ち着いた。
require 'base64' Base64.encode64('hogehoge') => "aG9nZWhvZ2U=\n"
これを叩けばdefault.yamlに上書きされる模様。
ruby -r pit -e "Pit.set('hoge', :data=>{'username'=>'hogeid', 'password'=>'aG9nZWhvZ2U=\n'})"
require 'pit' config = Pit.get('hoge') Base64.decode64(config['password'])
Pit以外でセキュアな何か
探したもののRubyではなかったと思う。 Macだけなら標準のパスワード保存システムから取ってくるとか出来るけどWindowsでも動作させたいのでPitくらいしかないという結論に至った。
参考
pitの扱い方*2
pitの概要が載ってる。
パスワードの誤魔化し方が素晴らしい。