Help us understand the problem. What is going on with this article?

chef使いのための、ガチでないパスワードの難読化

More than 5 years have passed since last update.

chefで共通cookbookつくったりしていると出てくるのがパスワード。ガチなパスワードな場合はEncrypted data bagsに入れるのがいいと思いますが、サーバ上には平文保存するようなちょっとしたものにはオーバースペック、というか面倒ですよね。

というわけで、ぱっと見でわからなくなる程度のライトなやつ。
ちなみに 英数字(小文字のみ) しか使えません!!

やりかた

パスワード文字列の難読化

シェルで難読化文字列を得ます。

get_encode_password
$ irb
irb(main):001:0> "password".to_i 36
=> 1982613533017

難読化したパスワードをattributeにセット

knife node edit等でパスワードをattributeに入れます。

knife_node_edit
{
  "name": "testserver01",
  "chef_environment": "_default",
  "normal": {
  ¦ "tags": [

  ¦ ],
  ¦ "yurui": {
  ¦ ¦ "password": 1982613533017
  ¦ } 
  },  
  "run_list": [
  ¦ "recipe[yurui::password]"
  ]
}

使うときに復号化

テンプレートファイルなどで以下のようにして復号化

sample_template
password=<%= node[:yurui][:password].to_s 36 %>

これだけでなんと不思議、元のパスワードが復号化されます。
attributeに難読化状態で入れておけば、cookbookやnodeのjsonファイルなどをgitに入れる段で難読化されるので、恥ずかしいパスワード文字列がぱっと見ではわからなくなります。

あとがき

data bags使うのめんどいなーと思いながらぐぐっていたときに発見したブログが元ネタです。

http://d.hatena.ne.jp/ku-ma-me/20091215/p1

大文字が混ざっちゃってる場合は、一番楽なのはBase64とかでしょうか。

base64_sample
irb(main):001:0> require 'base64'
=> true
irb(main):002:0> encoded_pass = Base64.encode64('P@ssw0rd')
=> "UEBzc3cwcmQ=\n"
irb(main):003:0> decoded_pass = Base64.decode64('UEBzc3cwcmQ=\n')
=> "P@ssw0rd"
YamaguchiRei
技術領域はインフラ寄りだが開発もこなすオールラウンダー。発言はすべて個人的なものです。Python/Ruby/Java/PHP/JavaScript/Icinga/MongoDB/Vyattaとか色々
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした