pit でパスワードやトークンを隠す(Ruby)

パスワードやトークンを隠す

パスワードやトークンを含んだ設定ファイルを push してしまったことは皆さんあると思います*1。そういう「やらかし」をしないために、pit を用いてパスワードやトークンを隠す方法です。なお、Ruby で実装します。

手順

1. pit をインストールする

とにかく入れましょう。

$ gem install pit

2. Pit.set でパスワードをファイルに書き込む

set というメソッドを以下のように実行し、パスワードをファイルに書き込みましょう*2

パスワードが書き込まれる場所はデフォルトで ~/.pit/default.yaml になります。

require 'pit'

Pit.set(
  'development',
  data: {
    username: 'foo',
    password: 'bar',
  }
)

3. 書き込まれたファイルを確認する

「2.」を実行することで、~/.pit/default.yaml にパスワードが書き込まれたはずです。さっそく見てみましょう

$ cat ~/.pit/default.yaml
---
development:
  :username: foo
  :password: bar

うまく書き込まれていました。

4. 書き込まれているパスワードを利用する

「書き込み」はできましたので次は「読み出し」です。読み出しには get メソッドを用います。

以下のように書くことでパスワードが取り出せます。分かりやすくするために、set メソッドの部分をコメントアウトで残しておきます。

require 'pit'

# Pit.set(
#   'development',
#   data: {
#     username: 'foo',
#     password: 'bar',
#   }
# )

account = Pit.get('development')
puts account[:username] #=> foo
puts account[:password] #=> bar

補足

パスワードの書かれている YAML は手動で作っても構いません。またワンライナーで pit を実行して YAML を作成することも可能です。

さて、pit を利用することにより確かにパスワードを誤って push することはないですが、コードの中に pit の記述が入り込まざるを得ないし、オープンソースで公開した場合に、使ってくれる方に pit の利用を求めなければいけないしで、あんまり良い方策ではないように思います。それともそういう場合のノウハウってあるんでしょうか。

*1:ありますよね!

*2:分かりやすくするために、以下「パスワード」を書き込むという表記にします

Powered by はてなブログ