もう「クレデンシャルください」なんて言わせない

1e68801494505bd0e0ce67e2e1398af3?s=47 zaru
July 21, 2018

 もう「クレデンシャルください」なんて言わせない

Rails で秘匿情報や環境変数を管理するベストな方法

2018.07.21 Osaka RubyKaigi 01 LT
@zaru

1e68801494505bd0e0ce67e2e1398af3?s=128

zaru

July 21, 2018
Tweet

Transcript

  1. もう「 クレデンシャルください」 なんて 言わせない 2018.07.21 Osaka RubyKaigi 01 LT @zaru

  2. @zaru 株式会社ベー シック CTO

  3. http://zaru.theshop.jp/

  4. None
  5. リモー ト OK https://basicinc.jp/enjoy-hacking

  6. 好きな Ruby メソッド Enumerable#cycle switch = %w(on off).cycle switch.next #=>

    on switch.next #=> off switch.next #=> on
  7. フォー ムオブジェクトと ActiveModel

  8. フォー ムオブジェクトと ActiveModel

  9. もう「 クレデンシャルください」 なんて 言わせない

  10. みなさん、Rails で秘匿情報の管理どう してますか?

  11. こんなことありませんか?

  12. プロジェクトに新しく プログラマがジョインした

  13. 「.env ください」 「 アクセスキー ください」

  14. None
  15. つらみ その都度、 手で渡すのが面倒 もらう方も面倒くさい 秘匿情報の渡し方に神経を使う

  16. こんなことありませんか?

  17. 開発をしていて 環境変数を追加した

  18. 「 デプロイ前に環境変数をサー バへ追加します」 「 デプロイ前に .env.production 修正します」 「Ansible でサー バへ環境変数を追加します」

  19. None
  20. つらみ デプロイフロー が煩雑 マー ジ以外に気を遣う部分がある デプロイ失敗チャレンジ感 手順をミスるとデプロイ失敗する

  21. 僕たちは秘匿情報や環境変数を どのように管理すれば良いのか

  22. 救世主?! Rails5.2 から Credentials 導入

  23. Credentials とは 秘匿情報を1 つのファイルで管理するよ マスター キー で秘匿情報を暗号化・ 復号 config/master.key or

    RAILS_MASTER_KEY Git で管理できるのでチー ムで共有しやすい
  24. 最高か?!

  25. None
  26. つらみ 暗号化すると構造を維持してないので中身がわからない コー ドレビュー がやりにくい マスター キー が必要 結局マスター キー

    の管理をどうしようという悩みがある
  27. 解決

  28. (AWS | GCP) KMS + yaml_vault

  29. thanks @joker1007

  30. 何が嬉しいのか YAML の構造を保ったまま value だけ暗号化する コー ドレビュー がやりやすい デプロイ時にファイル展開ではなくメモリ展開できる サー

    バに物理ファイルで秘匿情報を展開しなくて済む
  31. マスター キー ではなく IAM で開発者毎のクレデンシャルを渡せば OK 開発者自身に管理してもらえる AWS EC2 にロー

    ルを付与すればマスター キー なしに復号できる 煩わしいマスター キー を管理せずに済む
  32. 最高か?!

  33. None
  34. Heroku は? AWS API Key があればどこでも使えるので問題はない 問題はないが、Heroku アサインユー ザであれば Con

    g vars 見れる のでキー が見えちゃう Enterprise なら細かいアクセス制限できる…? いい方法があれば教えてください
  35. exit!