Slide 1

Slide 1 text

‡×º¡3 TV]n3 ìA— 2019.12.13 ÁőRails#16 @free_world21

Slide 2

Slide 2 text

■ ±ľ cLv35 ■ „: ƇĪ½2lIz_ĿŇàÐ ■ Œ„: jxOtm – RVGMLP?8P>E3 – ÎVQYi ■ 2008: hutzVLzUaG/"-į¢ – flash/C#/rails/iOS/Android ■ 2009: |¸ëŅŧçÔ²é¸ŅĈ ■ 2009: IPAŐœˆ„2ōŬ!CB ■ 2016: LotZòă~‰2Čÿ ■ 2018: ”‰ű†Ĕ© ■ 2019: hutzV~‰©/"-÷¹€ @free_world21

Slide 3

Slide 3 text

LotZòă~‰ ■ 2016}Ũ„ ■ ‡×Ÿ.3„Ĺ3ńİD"1„Ĺ4ф – 2017: EMERADA EQUITY ■ уĹĊûàŪć»Ů„Š‡×ēþ»Ë„Š – 2018: EMERADA BANK ■ ş‡„Š – 2019: EMERADA MARKETPLACE ■ à£ÚŖ·†„2Ŕ

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

ՁŽ3VY_G[j3òžòÝ¶È DNtJ`hFz^HzOD¤#- ĭÏ$BRgVDğŤ 2017}11ŒRgVuuV 2019}10Œˆ„ŭķðʄDф

Slide 7

Slide 7 text

‡×„4čÀ„ ■ ūŕÀ – hÙҟ- ,z–0Æ%w¦“¬!W] , – }WV}Wh – o©Vo©Vh ■ ńİÀ – hÙÒ- ,z–0Æ**W]!ÇÁ0‡¤ ! – ž³VX®£v†h – ×XV×XVh – ”dfŽÒtWV}Wh – à¾g˝ÈVmXfŽh

Slide 8

Slide 8 text

rS3 aW ‰œ@3 ¿Ķ

Slide 9

Slide 9 text

rS3 aW ‰œ@3 ¿Ķ

Slide 10

Slide 10 text

ðʄDĬ2Ĥ¦"8$ ■ ‡×ēþ»Ë§ ■ ‡×ēþ»Ë§ü†ť ■ ‡×ēþ»Ë§ü†čŘ ■ ■ Ø~čŘ ĥ ý Ō « › https://www.fsa.go.jp/common/law/guide/kinyushoh in/index.html

Slide 11

Slide 11 text

;3$ ů28/:8$ ■ ºó¿æ›1Ð – §a ޚ'—‹0[-,S0ç+#( ƒµ¸q – §z—‹'ޚÀ¹S—‹ ëè0,` ■ ĵijŢè3?1jxXVDğŤ"8"> ■ '3ƀš;* – z—‹!æÑn00ì ¸q0ßÖ#( ■ çÔ/”#ŽÄ2*<ž¬ – ÝÅ zޚ0,`!ID/Passˆ ˜ž%#( OTP ■ Ŋºó¿æ›1Ð – U`G25N ´Ä0ßÖ#( – Ï.O:0#( – ^ ceT _Œ ’Õ²Ðá0#( – OS'IDN673 ïۀº~#( – u…39@? ã^•™Ì$#( – ­Í°â« ) #( ■ '3Ŏ – j\B?Cœr‘¥0+Ók|0Yc&1·Ø#( – ½# ¶*éÃÝÅ'x±pÜ#( – j\eÊ!¢eÊ),Zyb‚•ª„0#( – ;PB4P>7P=HLP0ŒaåÓ0#(

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

­řĬ

Slide 14

Slide 14 text

Izht

Slide 15

Slide 15 text

Izht “¨1ŏŲ1ʼnļ3ƄĒ DOSʼnļ XXIzUKNTsz wordpress3ƊũÃD,(ʼnļ vv4ſ 2“¨¯!&-™í

Slide 16

Slide 16 text

Izht assetsłhFIv3Mp[Tq¯2?BĕųņÞ ĎŀIJ¨Î2?BrSgu]H3΁ LBÍ¥.ƒšÌ́3500Ĩ"(@ CF@LtkUDġÉ

Slide 17

Slide 17 text

Izht ċAZ63x`etzTzO SSLāţĐ²

Slide 18

Slide 18 text

Izht Autoscale2?BĞ2Xḯ “ĕų˜24Yï8.VPv IzVYzVŚ1A2 1+(/;‹¹īŋ EC2IzVYzVœ.4 docker container/"-rails(puma) ¹

Slide 19

Slide 19 text

Izht Aurora2?BƆ…ğÅ ã4master63Ŧ9ô. masterėŚ˜4slave‹¹ŗø

Slide 20

Slide 20 text

Izht G[jx`!C(hFIvDĀ Û¿1;34ŸŔ¯"-

Slide 21

Slide 21 text

Izht ŸŔƃ4KMS.ƒäģ²

Slide 22

Slide 22 text

4,3RailsjxUKN_ userrails adminrails DB common_models common_models useröcontrollers admin_models useröviews adminöcontrollers adminöviews rails Žšł_models Žšłcontrollers ŽšłDB ■ user³railsGju ■ admin³railsGju ■ common engine ■ ŽšłrailsGju database - common_comments - common_posts - common_users - ads - admin_users - payments

Slide 23

Slide 23 text

ŸŔ¯2,-AWS KMS ■ Customer Master KeyCMKDܚ"-data keyž"ŸŔƃ D¿ê$ B – A ■ Í¥3;3KMS@Ģ+-B – A: ‰¡ æÑì – B: A æÑn-% ■ A.ŸŔ¯"-'C4ĚĺBDDB102°Ľ"- ■ BDKMS2Ó,B/īŔ¯"-Ģ"-CBADå@CB 3.^Y «DA.īŔ¯$B CMK has_many :data_keys

Slide 24

Slide 24 text

Űą›2Ů( ■ attr_encrypted /gemŠÒ)+( ■ ċmodel3attributeDŰą›2ŮB personal_info.first_name = ”cLv” personal_info.last_name = “±ľ” personal_info.save! personal_info = PersonalInfo.find(1) puts personal_info.first_name # => “cLv” puts personal_info.last_name # => “±ľ”

Slide 25

Slide 25 text

áŶ³d[Tq ■ ŸŔ¯"( && áŶ;"( => áŶ³2Hash¯"(ıDý]iv.°Ľ ■ ŸŔ¸›Hash¡Ì4/A%BCrypt,+/. ■ after_save /.PersonalInfo3wQ`/ƒŴ2ìB3ě/ñ Class PersonalInfo has_many :personal_info_hashes after_save :save_hashes def save_hashes save_name_hash save_tel_hash save_address_hash …… end def save_name_hash raw_value = last_name + first_name pi_hash = personal_info_hashes.find_or_initialize_by(field_name: 'last_name_and_first_name') pi_hash.hash_value = BCrypt::Engine.hash_secret(raw_value, ENV['HASH_SALT']) pi_hash.save! end

Slide 26

Slide 26 text

Ş 3 ŀ ■ ºó¿æ›1Ð – §a ޚ'—‹0[-,S0ç+#( ƒµ¸q – §z—‹'ޚÀ¹S—‹ ëè0,` ■ ĵijŢè3?1jxXVDğŤ"8"> ■ '3ƀš;* – z—‹!æÑn00ì ¸q0ßÖ#( ■ çÔ/”#ŽÄ2*<ž¬ – ÝÅ zޚ0,`!ID/Passˆ ˜ž%#( OTP ■ Ŋºó¿æ›1Ð – U`G25N ´Ä0ßÖ#( – Ï.O:0#( – ^ ceT _Œ ’Õ²Ðá0#( – OS'IDN673 ïۀº~#( – u…39@? ã^•™Ì$#( – ­Í°â« ) #( ■ '3Ŏ – j\B?Cœr‘¥0+Ók|0Yc&1·Ø#( – ½# ¶*éÃÝÅ'x±pÜ#( – j\eÊ!¢eÊ),Zyb‚•ª„0#( – ;PB4P>7P=HLP0ŒaåÓ0#( ■ ºó¿æ›1Ð – Rails.roleºóD­ř – ĵijèðºóD­ř ■ ĵij/Ţè.B34ý3role ■ Ɓ,0²ĉ.Ţèŕđ"(;°Ľ – AWS KMS/attr_encrypted gem.ŸŔ¯"-DB2°Ľ – •‚‡=Ó®­†˜3»ËfVy`ºóD­ř ■ Ŋºó¿æ›1Ð – tmpfsDõ+-carrierwave gemƒ˜›2hFIvDĀŽÄ4tmpfsœ/$B – AWS3ċQzlbz_3xOD°Ľ – WAF=security groupcontainer¯DB3CB]ivDŹB – š¼›2IzVYzV /Ł$ ('-')╮ =͟͟͞͞!⸉ – WAF.ňǛ2E5A8$" – Autoscaling ■ '3Ŏ – ċĹª\vDżħ+-õ – LtkUDCDN.ġÉ"-ĩ;C1/ˆĜ4 Ŝ – """ – Terraform2?BIzht3Q`¯ŷś4"""

Slide 27

Slide 27 text

ƅÐĠ2)"-ƈ9(†‘ùŵ ■ B{ďĻĂ ’÷¾´Ė… 3â3¥Í¥3?1ƂùôċÖÙÕÊď…Ɖ 2ĝ@CB ■ 3. ĸĦ3ßĒãĄ – 1¼ÚîÒ – 5äíÒ https://www.npa.go.jp/laws/notification/seian/ hoan/hoan20180921-1.pdf

Slide 28

Slide 28 text

8/:Ćý1/4ĩ;"-1 ■ čÀ„¥2BRgV3ú:— ■ §›¿æ3µ7—Ŧ9— ■ 'C2–$B ŀĬ3 źĮ – §¢!,¨z!/+UÔb011 – s›Éê¿Â600l5J> ■ î – rspecDBOA90B?C,Š – RubybinaryF?,Š – Railsserverless¯»100{K<0"Š ŻĴ~.4Æŝ2Ġ-)!# https://github.com/f-world21/encryption_sample