Upgrade to Pro — share decks privately, control downloads, hide ads and more …

突然のグループ一斉在宅勤務開始!!1に
おける働き方を変革する技術や仕組み

 突然のグループ一斉在宅勤務開始!!1に
おける働き方を変革する技術や仕組み

JulyTechFesta 2021 Winterにてペパボのテレワーク開始に伴う課題を解決した技術の話をしました。

Kazuhiko Yamashita

January 24, 2021
Tweet

More Decks by Kazuhiko Yamashita

Other Decks in Programming

Transcript

  1. ಥવͷάϧʔϓҰ੪ࡏ୐ۈ຿։࢝!!1ʹ
    ͓͚Δಇ͖ํΛมֵ͢Δٕज़΍࢓૊Έ
    ʙ޿ౡݝ࢈ͷԴᥡΛ;ΜͩΜʹར༻ͨ͠ോαϒϨฤʙ

    View Slide

  2. ࢁԼ࿨඙!QZBNB
    (.0ϖύϘٕज़ج൫νʔϜ
    γχΞɾϓϦϯγύϧ
    UFOTOBQPODPN
    QZBNBGVO
    TUOTKQ

    View Slide

  3. 45/4
    -JOVY/444FSWFS
    TUOTKQ

    View Slide

  4. 45/4

    View Slide

  5. झຯ: Ωϟϯϓ

    View Slide

  6. ϗεςΟϯάࣄۀ &$ࢧԉࣄۀ ϋϯυϝΠυɾͦͷଞࣄۀ

    View Slide

  7. ೥ ϩϦϙοϓʂϨϯλϧαʔόαʔϏεఏڙ։࢝


    ೥ ϔςϜϧαʔϏεఏڙ։࢝
    ίʔυॻ͚Δͱӕ͍ͭͯϖύϘʹೖࣾ੒ޭʂʂ̍
    ೥݄೔
    ࣛࣇౡݝग़ਫࢢʹ͓͍ͯ1ࢁര஀ʂʂ̍
    ೥ ݱࡏɾ૑ۀ೥໨
    ϜʔϜʔυϝΠϯαʔϏεఏڙ։࢝
    ೥ ౦ূҰ෦΁ࢦఆସ͑

    View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  11. GMOϖύϘ
    • શύʔτφʔʢैۀһʣ͕ςϨϫʔΫΛجຊͱ͢Δۈ຿ମ੍

    • ίϩφ΢Πϧεͷײછ֦େঢ়گʹΑͬͯ͸ɺग़ࣾΛڐՄ੍ʹ͢ΔͳͲ

    ੍ݶ͕͋Δ

    • ೥ʹ਺ճ͋Δࣾ಺ΠϕϯτʹࢀՃͰ͖ΔͳΒ͹೔ຊશࠃͲ͜ʹॅΜͰ΋Մ

    • ςϨϫʔΫख౰ͱͯࣗ͠୐ͷޫ೤අ΍௨৴අΛิॿ
    ※GMOάϧʔϓͰ͸ैۀһͷ͜ͱΛύʔτφʔͱݺͼ·͢

    View Slide

  12. ๻ʹى͖ͨ͜ͱ

    View Slide

  13. View Slide

  14. ༧ΊͰ͖͍ͯͨ͜ͱ
    ౦ژɺ෱Ԭɺࣛࣇౡͱڌ఺͕཭Ε͍ͯΔͷͰɺڌ఺ؒͷ΍ΓऔΓΛߦ͏ͨΊͷ
    ࢓૊Έ͕੔උ͞Ε͍ͯͨ

    ఆظతʹࡏ୐ۈ຿܇࿅Λߦ͍ͬͯͨͷͰɺςϨϫʔΫͰ͖Δࣄલ४උ͕

    Ͱ͖͍ͯͨ

    ձࣾͷنఆͰ͢ΒGitHub EnterpriseʹPRͯ͠࡞੒͞ΕΔۀ຿ϑϩʔͰ͋ͬͨ
    ͜ͱ͔ΒςΩετͰͷίϛϡχέʔγϣϯʹ૊৫ͱͯ͠ద༻Ͱ͖͍ͯͨ

    G Suite΍OneLoginΛ࢝Ίͱ͢ΔSaaS΁ͷҠߦΛਪਐ͍ͯͨͨ͠Ίɺۀ຿Ͱར
    ༻͢Δେମͷιϑτ΢ΣΞ͕ࣾ֎͔Βར༻Ͱ͖ͨ

    View Slide

  15. ςϨϫʔΫҠߦޙʹ΍ͬͨ͜ͱ
    Zoom΍Google MeetɺSlackͷ࢖͍ํͷάϥϯυϧʔϧΛఆΊͨ

    ر๬ऀΛର৅ʹΦϑΟεͰར༻͍ͯͨ͠όϩϯνΣΞΛैۀһͷՈʹແྉ
    ഑ૹɺି༩

    PC༻σΟεϓϨΠ΍ిؾ୅ͷิॿ੍ۚ౓Խ

    ډॅ஍ͷࣗ༝Խɺ໘઀ͷશΦϯϥΠϯԽ

    View Slide

  16. ಥવͷάϧʔϓҰ੪ࡏ୐ۈ຿։࢝!!1ʹ͓
    ͚Δಇ͖ํΛมֵ͢Δٕज़΍࢓૊Έ

    View Slide

  17. ڥքϞσϧ
    ϓϥΠϕʔτ
    Ϋϥ΢υ
    ౦ژΦϑΟε
    ෱ԬΦϑΟε
    ࣛࣇౡΦϑΟε
    VPN
    FW
    VPN
    ϖύϘʹ͓͍ͯ͸ओʹɺFromIPΛݩʹωοτϫʔΫͷ
    ΞΫηεΛڐՄ͍ͯͨ͠

    View Slide

  18. ڥքϞσϧ
    ϓϥΠϕʔτ
    Ϋϥ΢υ
    ౦ژΦϑΟε
    ෱ԬΦϑΟε
    ࣛࣇౡΦϑΟε
    VPN
    FW
    VPN
    ίϩφՒʹ͓͍ͯ
    ഁ໓!!1
    ӕͰ͢ɺ͜͜·Ͱ߽շʹഁ໓͓ͯ͠Βͣɺഁ໓͍͍͔͔ͬͯͨͬͨΒഁ໓ͬͯॻ͖·ͨ͠ɻ
    ഁ໓ɺϩυϦήε

    View Slide

  19. ϩʔϚ͸1೔ʹͯ͠ͳΒͣ
    چདྷΑΓ௕Β͘FromIPͰͷ੍ݶΛߦ͍ͬͯͨͨΊɺଈ࠲ʹ΄͔ͷ

    ηΩϡϦςΟϞσϧ΁ͷҠߦ͸ࠔ೉

    Կ͔͠Βͷٕज़తΞϓϩʔνΛߦ͏ͨΊʹ΋·ͣ͸ΞΫηεܦ࿏Λ֬อ

    ͢Δඞཁ͕͋Δ

    View Slide

  20. kanmon-kaikyo
    https://github.com/pyama86/kanmon-kaikyo

    View Slide

  21. ओͳΞΫηε੍ޚ͸Security Group
    ϖύϘͷຊ൪αʔό΁ͷΞΫηε͸ओʹOpenStackͷSecurity Group(SG)
    Λར༻੍ͯ͠ޚ͞Ε͍ͯΔ

    SGΛૢ࡞ͯ͠ಛఆͷIPΛFromIPʹ࣋ͭϗετ͔ΒͷSSHΛΞΫηε͢Δ
    CLIπʔϧͱͯ͠kanmonΛಉ྅ͷ @buty4649 ͕։ൃ͍ͯͨ͠

    View Slide

  22. kanmon
    ࣗ෼ͷ*1Λ௥Ճ͍ͨ͠4(ͷ*%ΛઃఆϑΝΠϧʹهड़
    DBULBONPOZNM
    [email protected]
    ؀ڥม਺Λઃఆ
    [email protected]&3/".&VTFSOBNF
    [email protected]"44803%QBTTXPSE
    [email protected]"65)@63-IUUQFYBNQMFDPNBVUIW

    ίϚϯυ࣮ߦ
    LBONPOPQFO
    kanmon open

    View Slide

  23. kanmonͷ՝୊
    ΋ͱ΋ͱΤϯδχΞ͕࢖͏͜ͱΛ૝ఆͨ͠πʔϧͳͷͰɺ࣮ߦ؀ڥߏங΍ɺ
    ؀ڥม਺ͷઃఆͳͲɺΤϯδχΞҎ֎Ͱͷར༻ͷෑډ͕ߴ͍

    ίϩφՒʹ͓͍ͯɺϖύϘͰ͸σβΠφʔ΍ͦͷଞͷ৬छ͕SSHӽ͠ʹ

    σϓϩΠ͢Δഎܠ͔ΒɺΤϯδχΞҎ֎ͷ৬छ΋ΞΫηεखஈΛ֬อ͢Δ

    ඞཁ͕ੜ·Εͨ

    View Slide

  24. kanmon-kaikyo
    kanmon-
    kaikyo
    1. Slack͔ΒϘοτʹίϚϯυΛൃߦ

    2. OAuthೝূ༻URL͕ฦ٫͞ΕΔ

    3. ೝূΛύεͰ͖ͨͳΒ͹ɺ

    ೝূΛύεͨ͠ࡍͷIPΞυϨεΛ

    ࢦఆͨ͠αʔόʹSSHڐՄ͢Δ
    1.ίϚϯυൃߦ
    2.OAuthೝূ
    3. ΞΫηεڐՄ

    View Slide

  25. kanmon-kaikyo
    FTTHͷIP࠶ར༻ʹΑΔηΩϡϦςΟϦεΫΛݮΒͨ͢Ίɺఆظతʹkanmon-
    kaikyoͰ௥Ճͨ͠ϙϦγʔΛ࡟আ͍ͯ͠Δ

    ϖύϘͷSSH઀ଓ͸ݪଇSTNSΛར༻ͨ͠ެ։伴ೝূɺೝՄΛߦ͍ͬͯΔͨΊɺ
    IP + ެ։伴ͷଟཁૉͰೝূ͞Ε͍ͯΔ

    View Slide

  26. kanmon-kaikyo

    View Slide

  27. ͕ɺ͔͠͠ɺ
    ಇ͘৔ॴෆ໰ͳͷʹ
    IPʹറΒΕͯΔԶͨͪ͸

    View Slide

  28. IPʹΑΔ੍ޚΛ΍Ί͍͕ͨ
    ଟ૚๷ޚͷ૚͕Ұͭͳ͘ͳΔ

    View Slide

  29. pam-google-web-oauth-rs
    https://github.com/pyama86/pam-google-web-oauth-rs

    View Slide

  30. View Slide

  31. pam-google-web-oauth-rs
    SSHೝূΛެ։伴 + OAuthೝূͷଟཁૉೝূԽ͢ΔPAMϞδϡʔϧɻྨࣅʹ
    google/google-authenticator-libpam ͕͋Δ͕ɺͪ͜Β͸OTPํࣜɻϖύϘ͸G
    Suiteಋೖ͔ͭG Suiteࣗମ͕2FAඞਢͳͷͰ૊৫ʹϑΟοτ͢Διϑτ΢ΣΞΛ
    ॻ͍ͨ

    ݩʑ͸Go + CͰॻ͍͍͕ͯͨɺWEB + Linuxϓϩάϥϛϯάͷάϧʔݴޠͱ͠
    ͯRustͰॻ͍ͨ΄͏͕εοΩϦॻ͚ͨͷͰษڧΛ݉Ͷͯॻ͖௚ͨ͠

    ݱࡏϖύϘͰ͸ओʹ౿Έ୆αʔόʹΠϯετʔϧ͠ɺଟཁૉೝূΛར༻͍ͯ͠Δ

    View Slide

  32. ͜͜·Ͱ࿩ͨ͜͠ͱ
    ग़ࣾͰ͖ͳ͍ɺVPNαʔόͷ໰୊͕ൃੜ͠ɺ͜Ε·ͰͷIPΛར༻ͨ͠ΞΫ
    ηε੍ޚ͕ϑΟοτ͠ͳ͘ͳ͖ͬͯͨ

    Ұ࣌తͳΞΫηεܦ࿏ΛΤϯδχΞɺσβΠφʔ͕Slack͔Βར༻Ͱ͖Δ

    Α͏ʹͨ͠

    SSH઀ଓʹଟཁૉೝূΛ༻͍Δ͜ͱͰɺੈքத͔Β҆શʹΞΫηεͰ͖Δ
    Α͏ʹͨ͠

    View Slide

  33. ۀ຿γεςϜ΁ͷΞΫηεܦ࿏

    View Slide

  34. ঎ࡐ͝ͱͷސ٬؅ཧΞϓϦ
    ސ٬ɺܖ໿৘ใͷӾཡ

    σʔλϝϯςφϯε

    ཤྺ؅ཧ

    View Slide

  35. ސ٬؅ཧΞϓϦ͋Δ͋Δૣ͘ݴ͍͍ͨ
    ͓٬༷ʹ௚઀઀͢ΔϑϩϯτΞϓϦͰ͸ͳ͍ͨΊɺOSɺϓϩάϥϛϯά
    ݴޠɺϥΠϒϥϦͷόʔδϣϯΞοϓͳͲ͕ޙճ͠ʹͳΓ͕ͪ

    ༏ઌ౓͕Լ͛ΒΕ͕ͪͰɺʮ͑ͬʂࠓͲ͖͜͏͍͏ڍಈ͋Δͷʁʁʁʯͬ
    ͍ͯ͏࣮૷͕࢒Γ͕ͪ

    View Slide

  36. ͦΕͰ΋ࣾ֎͔Β҆શʹར༻͍ͨ͠
    github.com/oauth2-proxy/oauth2-proxy
    oauth2-proxyΛ࠾༻͠ɺސ٬؅ཧΞϓϦͷલஈʹ

    OAuthೝূΛ௥Ճ͠ɺSSOग़དྷΔΑ͏ʹͨ͠

    View Slide

  37. oauth2-proxyΛར༻ͨ͠SSO
    SG
    App
    DBʹొ࿥͞Εͨ
    ϢʔβʔIDͰೝূ&ೝՄ
    ڐՄ͞ΕͨIP͔Β
    ͷΈΞΫηεՄೳ
    oauth2-proxy
    App
    oaut2-proxy͔Β࿈ܞ͞Εͨ
    ϔομ৘ใͰೝূ
    Google΍GitHubͷ
    ΞΧ΢ϯτͰOAuthೝূ
    before after

    View Slide

  38. oauth2-proxyΛར༻ͨ͠SSO
    nginx
    oauth2-proxy
    client
    server {
    location /oauth2/ {
    proxy_pass http://127.0.0.1:4180;
    ...
    }
    location = /oauth2/auth {
    proxy_pass http://127.0.0.1:4180;
    ...
    }
    location / {
    auth_request /oauth2/auth;
    error_page 401 = /oauth2/sign_in;
    ...
    }
    }

    View Slide

  39. oauth2-proxyΛར༻ͨ͠SSO
    nginx
    oauth2-proxy
    proxy_set_header X-User $user;
    proxy_set_header X-Email $email;
    App
    nginx͔ΒϓϩΩγ͢Δ৔߹ʹϦΫΤετϔομʹ
    ϢʔβʔID΍ϝʔϧΞυϨεΛຒΊࠐΊΔ
    HTTPϔομΛݩʹSSO͢Δ৔߹ɺ
    ඞͣΞΫηεݩͷIPΛνΣοΫ͢Δඞ
    ཁ͕͋Δɻෆਖ਼ͳதܧʹΑͬͯΞΧ΢
    ϯτ͕৐ͬऔΒΕΔՄೳੑ͕͋Δɻ

    View Slide

  40. oauth2-proxy
    طଘͷΞϓϦͷલஈʹoauth2-proxyΛ഑ஔͯ͠࢖͏༻్ͷͨΊɺ෯޿͍

    ΞϓϦέʔγϣϯʹӨڹͳ͘OAuthೝূΛద༻Մೳ

    ೝূՄೳͳϝʔϧΞυϨευϝΠϯ΍GitHub Team౳΋ࢦఆՄೳͳͷͰɺ
    ਖ਼͘͠ઃఆ͢Ε͹҆શʹ׆༻Ͱ͖Δ

    υΩϡϝϯτ΍φϨοδ΋ॆ࣮͓ͯ͠Γɺಋೖָ͕

    View Slide

  41. WEBϒϥ΢β͸
    OAuthͰ͍͍͚Ͳɺ

    CLI͔Β࣮ߦ͞ΕΔΞϓϦ͸ʁ

    View Slide

  42. Vault by Hashicorp
    ϖύϘͰ͸TLS҉߸Խ௨৴ʹར༻͢Δ伴ͷ؅
    ཧΛVaultͷPublic Key Infrastructure(PKI)
    Secret EngineΛར༻͍ͯ͠Δɻ

    View Slide

  43. Vault by Hashicorp
    vault server
    api.pepabo.com
    consul-template
    client
    consul-template
    TLS҉߸Խ௨৴
    Vault͕෷͍ग़͢伴Λར༻ͯ͠ɺαʔό ʙ ΫϥΠΞϯτؒͷ
    ௨৴ΛTLSΫϥΠΞϯτೝূ&௨৴Ͱ҉߸Խ

    View Slide

  44. Vault by Hashicorp
    WBVMUTFDSFUTFOBCMFEFTDSJQUJPOTFSWJDFDPOTVMQLJNBYMFBTFUUMIQLJ
    [email protected]
    [email protected]@UUMI

    kanmon open
    Vault͸ൿಗ৘ใΛ҆શʹ؅ཧग़དྷΔιϑτ΢ΣΞ
    ͦͷػೳͷҰ͕ͭެ։伴ج൫
    xxx.service.consul ͷެ։伴Λ؅ཧ͢Δઃఆ

    View Slide

  45. consul-template
    UFNQMBUF\
    DPOUFOUT\\XJUITFDSFUaQLJJTTVFTFSWJDFDPOTVMa
    [email protected]^^\\%[email protected]^^\\FOE^^
    [email protected]@$"DSU
    [email protected]@DFSUT
    ^
    kanmon open
    Hashicorpͷιϑτ΢ΣΞͱ࿈ܞͯ͠ɺϑΝΠϧΛग़ྗͨ͠Γɺ
    ίϚϯυΛ࣮ߦͨ͠Γग़དྷΔϛυϧ΢ΣΞ
    Vaultͷ pki/issue/service-consulͷΤϯυϙΠϯτ͔Βূ໌ॻΛऔಘ͢Δ

    View Slide

  46. consul-template
    ূ໌ॻͷ༗ޮظݶΛ؂ࢹͯ͠ɺظݶ੾ΕલʹࣗಈͰߋ৽ͯ͘͠ΕΔͷͰূ
    ໌ॻ؅ཧͷख͕ؒͳ͍

    ୹໋ͳূ໌ॻΛൃߦ͢Δ͜ͱͰɺैۀһͷୀ৬࣌ʹ͸ࣗಈͰࣦޮͤ͞Δͳ
    Ͳͷॲཧ͕༰қͰ͋Δ

    View Slide

  47. Vault by Hashicorp
    vault server
    api.pepabo.com
    consul-template
    client
    consul-template
    TLS҉߸Խ௨৴
    Vault͕෷͍ग़͢伴Λར༻ͯ͠ɺαʔό ʙ ΫϥΠΞϯτؒͷ
    ௨৴ΛTLSΫϥΠΞϯτೝূ&௨৴Ͱ҉߸Խ
    ΫϥΠΞϯτʹͲͷΑ͏ʹ伴Λ഑෍͢Δ
    ͷ͔͕େ͖ͳ՝୊ʹͳͬͨ

    View Slide

  48. kagiana
    pyama86/kagiana

    View Slide

  49. kagiana
    WEBϒϥ΢βͰkagianaͷUIʹΞΫηεͯ͠ೝূޙɺVaultʹTLS௨৴͢ΔͨΊͷ伴Λμ΢ϯϩʔυ


    View Slide

  50. ๭ʮ͜Εϒϥ΢β։͘ͷ໘౗͔ͩΒCLIͰͰ͖ͳ͍͔͢Ͷʁʯ

    View Slide

  51. STNSΛར༻ͨ͠ެ։伴ೝূ
    STNS
    kagiana
    client
    ެ։伴Ͱ
    νϟϨϯδίʔυΛ෮߸
    νϟϨϯδίʔυ
    νϟϨϯδίʔυΛൿີ伴Ͱॺ໊ͯ͠ૹ৴
    7BVMUʹΞΫηε͢Δ伴ͷ഑෍
    stns/libstns-goΛ։ൃ͠ɺSTNSΛར༻ͨ͠ೝূΛՄೳʹͨ͠
    ೝূཁٻ

    View Slide

  52. ͜͜·Ͱ࿩ͨ͜͠ͱ
    ސ٬؅ཧγεςϜͳͲͷैۀһ͕ར༻͢ΔͨΊͷΞϓϦέʔγϣϯ͸มߋ಺༰Λ
    গͳ͘ɺ҆શʹར༻͢ΔͨΊʹɺoauth2-proxyͰೝূΛߦ͏Α͏ʹͨ͠

    ։ൃऀ͕ར༻͢ΔAPI͸TLSΫϥΠΞϯτೝূΛߦ͏Α͏ʹͯ͠ɺ伴ͷ഑෍͸
    Vault + kagianaΛར༻ͯ͠ߦ͍ͬͯΔ

    View Slide

  53. ୤ઢ OAuth2.0ೝূ

    View Slide

  54. ೝূͱೝՄ
    ೝূ
    ೝՄ
    ୭Ͱ͋Δ͔Λಛఆ͢Δ
    Կ͕ग़དྷΔͷ͔ΛڐՄ͢Δ

    View Slide

  55. OAuth(2.0)͸ݫີʹ͸ೝՄͷ࢓༷
    RFC 6749ʹͯఆٛ

    ͍͔ͭ͘ͷ࣮૷ύλʔϯ͕༗Γɺࣗ਎ͰೝՄαʔό࣮૷͢Δ৔߹͸ɺ࣮૷
    ύλʔϯʹΑͬͯ͸ೝূίʔυͷ࢖͍ճ͠ͳͲͷ੬ऑੑੜΜͰ͠·͏

    ʮOAuth 2.0 શϑϩʔͷਤղͱಈը※ʯ͕͓͢͢Ί

    ※ https://qiita.com/TakahikoKawasaki/items/200951e5b5929f840a1f

    View Slide

  56. ͳΜͱͳ͘ೝՄͪ͠Όͬͯ·ͤΜ͔ʁ
    TwitterͰΑ͘ݟΔGenerator

    ໺ྑṖWifi

    ೝՄ͸༻๏༻ྔΛकͬͯਖ਼͘͠

    View Slide

  57. ܹ͘͠୤ઢ

    View Slide

  58. ۭલͷ
    ΩϟϯϓϒʔϜ
    ౸དྷ

    View Slide

  59. ࠓʂʂʂʂʂʂʂ
    Ωϟϯϓ͕ʂʂʂ
    དྷͯ·͢ʂʂʂʂ

    View Slide

  60. શ͘༧໿͕औΕͳ͍ि຤
    https://booking.montbell.jp/lodging/site.php?site_id=3
    WEB༧໿ɺޮ཰త͙͗ͯ͢͢ຒ·Δ

    View Slide

  61. ͦΕͰ΋Զ͸Ωϟϯϓʹߦ͖͍ͨ
    https://github.com/pyama86/camp
    1. ৗࣝతͳස౓ͰαΠτΛΫϩʔϧ
    2.αΠτʹۭ͖͕ग़ͨΒɺLINEʹଈ௨஌
    3. ͋ΒΏΔ࡞ۀΛࢭΊͯɺ
    ΩϟϯϓαΠτΛ༧໿

    View Slide

  62. ؓ࿩ٳ୊

    View Slide

  63. ಥવͷάϧʔϓҰ੪ࡏ୐ۈ຿։࢝!!1ʹ͓
    ͚Δಇ͖ํΛมֵ͢Δٕज़΍࢓૊Έ

    View Slide

  64. ςϨϫʔΫΛجຊͱͨ͠
    ձ͔ࣾͩΒͦ͜ɺ
    ςϨϫʔΫ্͕ख͍ձࣾʹͳΓ͍ͨ

    View Slide

  65. ςϨϫʔΫҠߦޙʹ΍ͬͨ͜ͱ
    Zoom΍Google MeetɺSlackͷ࢖͍ํͷάϥϯυϧʔϧΛఆΊͨ

    ر๬ऀΛର৅ʹΦϑΟεͰར༻͍ͯͨ͠όϩϯνΣΞΛैۀһͷՈʹແྉ
    ഑ૹɺି༩

    PC༻σΟεϓϨΠ΍ిؾ୅ͷิॿ੍ۚ౓Խ

    ډॅ஍ͷࣗ༝Խɺ໘઀ͷશΦϯϥΠϯԽ

    View Slide

  66. ໘઀ͷΦϯϥΠϯԽ
    ໘઀͸Google MeetΛར༻࣮ͯ͠ࢪ

    Ϩδϡϝ΍໘઀ཤྺ؅ཧʹ࠾༻؅ཧγεςϜTalentioΛ࠾༻

    ϦϞʔτͰ΋࠾༻ͷεϐʔυΛ্͛ΔͨΊ௨஌Λ޻෉

    View Slide

  67. talentio-notifier
    pyama86/talentio-notifier

    View Slide

  68. ϖύϘͷ໘઀ϑϩʔ
    ॻྨ৹ࠪ 1࣍໘઀ 2࣍໘઀ ໾һ໘઀ ɹ࠾༻ʂʂ̍
    ෳ਺ճͷ໘઀Ͱٕೳ໘ɺΧϧνϟʔϚονͳͲΛ͓࿩͠·͢

    View Slide

  69. pyama͕ղܾ͔ͨͬͨ͠՝୊
    εϐʔυײͷͳ͍ձࣾͰಇ͖͍ͨͱࣗ෼ࣗ਎͕ࢥΘͳ͍ͷͰɺԠื͔Β

    ߹൱࿈བྷ·ͰͷϦʔυλΠϜΛ࡟ݮ͍ͨ͠

    ໘઀ʹඞ༻ͳ৘ใ͕ඞ༻ͳͱ͖ʹಧ͘Α͏ʹ͍ͨ͠

    View Slide

  70. TalentioͷAPIΛར༻͠ɺ௨஌ΛࣗಈԽ
    ॻྨબߟɺ໘઀ධఆͷهೖΛϦϚΠϯυ

    ໘઀10෼લʹ͸TalentioͷϨδϡϝϖʔδͷ
    ϦϯΫΛࣗಈͰ௨஌

    ࠾༻νϟϯωϧʹ୭ʹɺͲ͏͍ͬͨґཔΛ
    ௨஌ͨ͠ͷ͔ΛೲظΛؚΊͯ౤ߘ͢Δ͜ͱ
    Ͱ࠾༻୲౰΋τϨʔγϯάՄೳ

    View Slide

  71. ςϨϫʔΫʹ͓͍ͯ΋
    Slack͸େ׆༂

    View Slide

  72. શһϦϞʔτͰ͋Δ͕Ώ͑ʹɺ୭͕͍·੮ͷ
    લʹ͍Δͷ͔ɺ୭͕ࠓ͝൧Λ৯΂͍ͯΔͷ͔
    Θ͔Βͳ͍ͷͰɺSlackͰͦΕͧΕใࠂ͠
    ͍͋ͬͯͨ

    ۈଵͷใࠂ΍཭੮΋SlackΛ׆༻

    View Slide

  73. ୭͕͍Δ͔͍ͳ͍͔͸SlackͷྲྀΕͰ͸

    ௥͍͖Εͳ͍

    ΦϑΟεͰ͸ͪΐͬͱ੮Λཱͯ͹ݟ͑ͨ

    ͋ͷਓ΋Πϯλʔωοτӽ͠Ͱ͸ݟ͑ͳ͍

    ςϨϫʔΫ͸฻Β͠ͱີ઀Ͱ͋Δ͕

    Ώ͑ʹɺࣗ༝౓͕ߴ͘཭੮΋૿͕͑ͪ

    ܅ͱաͨ͝͠Ն͸ઈରʹ๨Εͳ͍
    Slack͸ϑϩʔ৘ใͳͷͰෆ޲͖ͳ͜ͱ΋͋Δ

    View Slide

  74. Away From Keybord
    ϝϯγϣϯͰݺ͹Εͨࡍʹ཭੮Λͭͨ͑ͨΓɺఆܗใࠂΛίϚϯυԽ

    View Slide

  75. Away From Keybord
    ϝϯγϣϯΛ౤͛Δͱෆࡏ͕͙͢Θ͔Γɺ

    ͙͢ରԠ͕ग़དྷΔ
    ۈ຿։࢝ͳͲఆܗใࠂʹ൐͍ɺ͓·͚Λ

    ͚ͭΔ͜ͱͰɺศརʹར༻ଅਐ

    View Slide

  76. ࠷ۙSlackͰ޻෉͍ͯ͠Δ͜ͱ
    https://github.com/pyama86/issuer-bot
    ϑϩʔ৘ใΛετοΫ৘ใ΁ม׵͢Δ
    SlackͰϦΞΫγϣϯΛ͚ͭΔͱϘοτ͕ͦͷ಺༰Λసه͢ΔGitHub IssueͷURLΛൃߦ

    View Slide

  77. ศར͗ͯ͢৭ʑॻ͍ͯ͠·͍͕ͪ
    ಉ྅΁ͷґཔΛSlackʹ௕ʑॻ͍ͯ͠·͏ɺͦͯ͠ྲྀΕΔ

    େࣄͳ͓஌ΒͤͳͷʹSlackʹ͔͠৘ใ͕ͳ͍ɺͦͯ͠ྲྀΕΔ

    αʔϏε͔ΒͷΞϥʔτɺେࣄ͚ͩͲSlackͷ௨஌͕ᷓΕͯɺྲྀΕΔ
    ͜Μͳ࣌୅͔ͩΒͦ͜ɺߟ͑Δ͜ͱ͕͋Δ

    View Slide

  78. ৘ใͷੜଘظؒΛҙࣝͨ͠
    ίϛϡχέʔγϣϯ͕ٻΊΒΕΔ
    GibHub Issue΍NotionͳͲੜଘظ͕ؒ௕͘ɺݕࡧ͕͠΍͍͢ഔମΛ

    ར༻͢Δ

    SlackͰ΍ΓऔΓͨ͠಺༰΍ςϨϏ௨࿩ͨ͠಺༰Λจࣈىͯ͜͠͠ɺ

    ੜଘظ͕ؒ௕͍ഔମʹه࿥͢Δ͜ͱ͕কདྷͷ୭͔Λॿ͚Δ͜ͱʹͳΔ

    View Slide

  79. ࠓ೔࿩ͨ͜͠ͱ

    View Slide

  80. GMOϖύϘ
    • શύʔτφʔʢैۀһʣ͕ςϨϫʔΫΛجຊͱ͢Δۈ຿ମ੍

    • ίϩφ΢Πϧεͷײછ֦େঢ়گʹΑͬͯ͸ɺग़ࣾΛڐՄ੍ʹ͢ΔͳͲ

    ੍ݶ͕͋Δ

    • ೥ʹ਺ճ͋Δࣾ಺ΠϕϯτʹࢀՃͰ͖ΔͳΒ͹೔ຊશࠃͲ͜ʹॅΜͰ΋Մ

    • ςϨϫʔΫख౰ͱͯࣗ͠୐ͷޫ೤අ΍௨৴අΛิॿ
    ※GMOάϧʔϓͰ͸ैۀһͷ͜ͱΛύʔτφʔͱݺͼ·͢

    View Slide

  81. View Slide

  82. ڥքϞσϧ
    ϓϥΠϕʔτ
    Ϋϥ΢υ
    ౦ژΦϑΟε
    ෱ԬΦϑΟε
    ࣛࣇౡΦϑΟε
    VPN
    FW
    VPN
    ίϩφՒʹ͓͍ͯ
    ഁ໓!!1
    ӕͰ͢ɺ͜͜·Ͱ߽շʹഁ໓͓ͯ͠Βͣɺഁ໓͍͍͔͔ͬͯͨͬͨΒഁ໓ͬͯॻ͖·ͨ͠ɻ
    ഁ໓ɺϩυϦήε

    View Slide

  83. ՝୊Λղܾ͢ΔͨΊʹίʔυΛॻ͍ͨΓOSS׆༻ͨ͠
    kanmon-kaikyo - SGͷ։ดΛSlackͰ࣮ߦ

    pam-google-web-oauth-rs - SSHΛଟཁૉೝূԽ

    oauth2-proxy - طଘͷίʔυʹӨڹΛগͳ͘OAuthೝূʹରԠ

    kagiana - VaultʹΞΫηε͢ΔͨΊͷ伴ΛOAuthೝূޙʹ഑෍

    View Slide

  84. ςϨϫʔΫΛݪଇͱͨ͠
    ձ͔ࣾͩΒͦ͜ɺ
    ςϨϫʔΫ্͕ख͍ձࣾʹͳΓ͍ͨ

    View Slide

  85. ςϨϫʔΫҠߦޙʹ΍ͬͨ͜ͱ
    Zoom΍Google MeetɺSlackͷ࢖͍ํͷάϥϯυϧʔϧΛఆΊͨ

    ر๬ऀΛର৅ʹΦϑΟεͰར༻͍ͯͨ͠όϩϯνΣΞΛैۀһͷՈʹແྉ
    ഑ૹɺି༩

    PC༻σΟεϓϨΠ΍ిؾ୅ͷิॿ੍ۚ౓Խ

    ډॅ஍ͷࣗ༝Խɺ໘઀ͷશΦϯϥΠϯԽ

    View Slide

  86. TalentioͷAPIΛར༻͠ɺ௨஌ΛࣗಈԽ
    ॻྨબߟɺ໘઀ධఆͷهೖΛϦϚΠϯυ

    ໘઀10෼લʹ͸TalentioͷϨδϡϝϖʔδͷ
    ϦϯΫΛࣗಈͰ௨஌

    ࠾༻νϟϯωϧʹ୭ʹɺͲ͏͍ͬͨґཔΛ
    ௨஌ͨ͠ͷ͔ΛೲظΛؚΊͯ౤ߘ͢Δ͜ͱ
    Ͱ࠾༻୲౰΋τϨʔγϯάՄೳ

    View Slide

  87. ୭͕͍Δ͔͍ͳ͍͔͸SlackͷྲྀΕͰ͸

    ௥͍͖Εͳ͍

    ΦϑΟεͰ͸ͪΐͬͱ੮Λཱͯ͹ݟ͑ͨ

    ͋ͷਓ΋Πϯλʔωοτӽ͠Ͱ͸ݟ͑ͳ͍

    ςϨϫʔΫ͸฻Β͠ͱີ઀Ͱ͋Δ͕

    Ώ͑ʹɺࣗ༝౓͕ߴ͘཭੮΋૿͕͑ͪ

    ܅ͱաͨ͝͠Ն͸ઈରʹ๨Εͳ͍
    Slack͸ϑϩʔ৘ใͳͷͰෆ޲͖ͳ͜ͱ΋͋Δ

    View Slide

  88. Away From Keybord
    ϝϯγϣϯͰݺ͹Εͨࡍʹ཭੮Λͭͨ͑ͨΓɺఆܗใࠂΛίϚϯυԽ

    View Slide

  89. ࠷ۙSlackͰ޻෉͍ͯ͠Δ͜ͱ
    https://github.com/pyama86/issuer-bot
    ϑϩʔ৘ใΛετοΫ৘ใ΁ม׵͢Δ
    SlackͰϦΞΫγϣϯΛ͚ͭΔͱϘοτ͕ͦͷ಺༰Λసػ͢ΔGitHub IssueͷURLΛൃߦ

    View Slide

  90. ࠷ޙʹ
    ίϩφՒͰ৭ʑͳ࢓૊ΈΛ࡞Δ্Ͱײͨ͜͡ͱ͸ɺ͜Ε·Ͱͱߟ͑ํΛ

    ม͑ͳ͍ͱߦ͚ͳ͍෦෼͕ଟ͍

    ςϨϫʔΫ͸฻Β͠ͱີ઀Ͱ͋Δ͜ͱ

    ͜Ε·ͰՄࢹൣғʹ͋ͬͨ΋ͷ͕ݟ͑ͳ͍͜ͱ

    ಉ࣭Խͷఔ౓ʹΑΓΞϓϩʔν͕ҧ͏͜ͱ

    View Slide

  91. ͓͠·͍
    ࠷৽ͷ࠾༻৘ใΛνΣοΫˠ [email protected]

    View Slide