読者です 読者をやめる 読者になる 読者になる

Kumogata v0.3.5: スタック作成中のイベントログ出力/パラメーターの暗号化

Kumogata v0.3.5をリリースしました。 0.2.x〜0.3.5の間に以下の機能を追加しました。

  • イベントログの出力
  • パラメーターの暗号化

イベントログの出力

Kumogataはスタックを作成したとき作成完了まで待ちますが、作成状況が見えないのがいやだったので、作成中にイベントログを出力するようにしました。 JSONテンプレートも普通に使えるので、Rubyテンプレートを使わなくても便利な機能な気がします。

デモ

テンプレート: https://gist.github.com/winebarrel/9b9bc263c0b80b1d4ca4

パラメーターの暗号化

パスワード等をパラメーターで渡すとき、平文で渡すのが何となくいやだったので、一応、暗号化機能をつけました。

Parameters do
  Param1 { Type "String" }
  Param2 { Type "String" }
  Password1 { Type "String"; NoEcho true }
  Password2 { Type "String"; NoEcho true }
end # Parameters

Resources do
  myEC2Instance do
    Type "AWS::EC2::Instance"

    Properties do
      ImageId "ami-XXXXXXXX"
      ...

上のようなテンプレートを書いたときにコマンドライン-eオプションを渡すと、指定されたパラメータが暗号化されます。

kumogata create template.rb -e 'Password1,Password2' -p 'Param1=xxx,Param2=xxx,Password1=xxx,Password2=xxx'

復号は以下のような感じで。

command (<<-EOS).fn_join
  ENCRYPTION_PASSWORD="`echo '<%= Ref Kumogata::ENCRYPTION_PASSWORD %>' | base64 -d`"

  # Decrypt Password1
  echo '<%= Ref "Password1" %>' | base64 -d | openssl enc -d -aes256 -pass pass:"$ENCRYPTION_PASSWORD" > password1

  # Decrypt Password2
  echo '<%= Ref "Password2" %>' | base64 -d | openssl enc -d -aes256 -pass pass:"$ENCRYPTION_PASSWORD" > password2
EOS

実際は裏側で復号用のパスワードをパラメーターとして渡しているのでセキュアになったか微妙ですが、httpsで通信していいるとはいえ平文のパスワードを渡すのは気になります。

ヘビーに使っている人はどうしているんだろう…? ノウハウがあったらどなたか教えていただきたいです。