Slide 1

Slide 1 text

Rails Secrets ͷྺ࢙ Ebisu.rb #19

Slide 2

Slide 2 text

@yutadayo • ງҪ ༤ଠ • ݩ Fablic, inc CTO • Ebisu.rb ͷΦʔΨφΠβʔ͍ͯ͠·͢

Slide 3

Slide 3 text

ࠓ೔࿩͢͜ͱ ɾRails ͷ version ຖͷൿಗ৘ใͷऔΓѻ͍ʹ͍ͭͯ ɾRails 6.0 Ͱ credentials ͕Ͳ͏ͳΔ͔

Slide 4

Slide 4 text

ൿಗͳ৘ใ ɾDB ͷ password ɾ֎෦ API KEY ɾtwitter / facebook ͳͲͷ secrets key / token ɾetc…

Slide 5

Slide 5 text

ػີ৘ใ͸ϋʔυίʔυ͢Δ ΂͖Ͱͳ͍

Slide 6

Slide 6 text

ͱ͸͍͑ • .env Λ chef ΍ ansible ͳͲͰ഑ͬͨΓ… • σϓϩΠલʹ؀ڥม਺Λαʔό΁௥Ճͨ͠Γ… • ΤϯδχΞ͕૿͑ͨࡍʹΞΫηεΩʔ౉ͨ͠Γ… • ҉߸Խ͞Εͯͳ͍ϑΝΠϧ͸ؾΛ࢖Θͳ͍ͱ….

Slide 7

Slide 7 text

ਏ͍

Slide 8

Slide 8 text

Rails 4.1 ʙ

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

಺༰ͷ҉߸Խ͸ɺ·ͨผखஈ͕ ඞཁ • https://github.com/joker1007/yaml_vault • https://github.com/ahoward/sekrets

Slide 11

Slide 11 text

Rails 5.1

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Rails5.1 ͔Β Encrypted secrets ͕௥Ճ $ rails secrets:setup Adding config/secrets.yml.key to store the encryption key: 01234567890abcdefghijklmnopqrstu Save this in a password manager your team can access. If you lose the key, no one, including you, can access any encrypted secrets. create config/secrets.yml.key

Slide 14

Slide 14 text

Encrypted secrets • ൿಗ৘ใΛ҉߸Խͨ͠ঢ়ଶͰgit؅ཧͰ͖Δ • ؀ڥม਺ͷ RAILS_MASTER_KEY or config/ secrets.yml.key Ͱ෮߸ԽͰ͖Δ • ैདྷͷ secrets.yml ͷΑ͏ʹ؀ڥຖʹઃఆͰ͖ Δ

Slide 15

Slide 15 text

Rails 5.2

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

͞ΑͳΒ Encrypted secrets

Slide 19

Slide 19 text

Credentials • ൿಗ৘ใΛ҉߸Խͨ͠ঢ়ଶͰgit؅ཧͰ͖Δ • ؀ڥม਺ͷ RAILS_MASTER_KEY or config/ master.key Ͱ෮߸ԽͰ͖Δ • credentials.yml.enc ϑΝΠϧͰൿಗ৘ใ؅ཧ

Slide 20

Slide 20 text

มߋ఺ &ODSZQUFETFDSFUT
 3BJMT $SFEFOUJBMT 3BJMT TFUVQ SBJMTTFDSFUTTFUVQ FEJU SBJMTTFDSFUTFEJU SBJMTDSFEFOUJBMTFEJU TIPX SBJMTTFDSFUTTIPX SBJMTDSFEFOUJBMTTIPX VTF 3BJMTBQQMJDBUJPOTFDSFUTYYYY 3BJMTBQQMJDBUJPODSFEFOUJB MTYYY FODSZQUFEpMF DPOpHTFDSFUTZNMFOD DPOpHDSFEFOUJBMTZNMFOD EFDSFQJULFZ DPOpHTFDSFUTZNMLFZ DPOpHNBTUFSLFZ

Slide 21

Slide 21 text

Credentials ͷඍົͳॴ

Slide 22

Slide 22 text

GSPNIUUQTHJUIVCDPNSBJMTSBJMTQVMM

Slide 23

Slide 23 text

؀ڥຖͷઃఆ͕Ͱ͖ͳ͍ • Rails.application.secrets Ͱ secrets.yml ͸·ͩࢀরՄೳ • credentials.yml.enc Λ؀ڥຖʹॻ͖෼͚Δͷ΋ҰԠͰ͖ Δɺࢀর࣌ʹenvΛࢦఆ͠ͳ͍ͱ͍͚ͳ͍ • Rails.application.credentials[Rails.env.to_sym] [:api_key] • gem Λ࢖ͬͯղܾ΋Ͱ͖Δ • https://github.com/sinsoku/rails-env-credentials

Slide 24

Slide 24 text

GSPNIUUQTHJUIVCDPNSBJMTSBJMTQVMM

Slide 25

Slide 25 text

Rails 6.0 ͔Β͸؀ڥຖʹ credentials ΛઃఆͰ͖ΔΑ͏ʹ ͳΓͦ͏…!

Slide 26

Slide 26 text

ࢼͯ͠ΈΔ

Slide 27

Slide 27 text

$ EDITOR=vim bundle exec rails credentials:edit -—environment staging Adding config/credentials/staging.key to store the encryption key: 01234567890abcdefghijklmnopqrstu Save this in a password manager your team can access. If you lose the key, no one, including you, can access anything encrypted with it. create config/credentials/staging.key Ignoring config/credentials/staging.key so it wont’s end up in Git append .gitignore File encrypted and saved. $ ls -l config/credentials staging.key staging.yml.enc

Slide 28

Slide 28 text

• credentials σΟϨΫτϦ͕ੜ੒͞Εɺ؀ڥຖͷ key ͱ encrypted file ͕ੜ੒͞ΕΔ • ͦΕͧΕͷ key ͕ .gitignore ϑΝΠϧʹ௥Ճ͞ΕΔ • ԼهͷઃఆΛม͑Δ͜ͱͰɺkey ͱ encrypted file ͷੜ ੒ઌΛࢦఆͰ͖ΔΑ͏Ͱ͢ • config.credentials.content_path • config.credentials.key_path • ؀ڥม਺͸ ENV[“RAILS_MASTER_KEY”] ͷΈ ݁Ռ

Slide 29

Slide 29 text

·ͱΊ • Rails6͔Β؀ڥຖʹൿಗ৘ใΛ҉߸Խͯ͠؅ཧͰ͖ͦ͏ • Rails5ܥͰ৽͘͠؀ڥຖʹ஋Λઃఆ͠Α͏ͱͯ͠Δਓ ͸଴ͬͨํ͕͍͍͔΋ʁ • RAILS_MASTER_KEY ͷ؅ཧ͸ඞཁͳͷͰɺσϓϩΠͷ ࢓૊Έ͸Ҿ͖ଓ͖ߟ͑ͳ͍ͱ͍͚ͳ͍