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

Granular Permissionsで実現する、もっとsecureなBtoB Slack App開発 / Develop more secure BtoB Slack Apps with Granular Permissions

Granular Permissionsで実現する、もっとsecureなBtoB Slack App開発 / Develop more secure BtoB Slack Apps with Granular Permissions

jumpei_ikegami

February 04, 2020
Tweet

More Decks by jumpei_ikegami

Other Decks in Technology

Transcript

  1. 2 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @ Slack Japanɹɹʛɹ ɹɹʛɹɹ© 2020 PLAID

    Inc. ⾃⼰紹介 池上 純平 株式会社プレイド プロダクトスペシャリスト エンジニア 採⽤ 元富⼠通 ポッドキャスター 若⼿エンジニアキャリア⽀援 書籍執筆 完全⾷ イベント司会 twitter : @jumpei_ikegami 29
  2. 本⽇のテーマ 3 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ Granular Permissionsで 実現する、 もっとsecureな BtoB Slack App開発 作ったもの これまで Granular permissions 対応⽅法 今後 まとめ 話すこと
  3. ɹɹʛɹɹ© 2019 PLAID Inc. 5 yyyy.mm.ddɹɹʛɹɹEvent name hereɹɹʛɹ 株式会社プレイドについて 株式会社プレイド

    東京都中央区銀座6-10-1 GINZA SIX 10F 設⽴:2011年10⽉ 従業員:130名 資本⾦:1億円 ※資本準備⾦含む
  4. 7 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @ Slack Japanɹɹʛɹ ɹɹʛɹɹ© 2020 PLAID

    Inc. KARTEについて ֬ೝ͢Δ جຊαʔϏε΍͝ར༻ํ๏Λ͝঺հ͠·͢ɻ ͓ಘͳಛయ΍໾ཱͭ৘ใ͕ຬࡌͰ͢ɻ ॳΊͯͷํ΁ ְתּׅ然钠ׅ׷ 6*رؠ؎ش٦׌ֽוזַזַ♳麦׃זְծ➙ ״׶إٔؗ،حف׃׋ְהְֲ倯䗳铣דׅկ UIرؠ؎ش٦ָ濼׏גֶֻץֹ 7אךرؠ؎ٕٝ٦ٕ DESIGN RULES » CHECK ׆׏ה⢪ִ׷،؎ذي׌ֽ׾䲧ִת׃׋կ ֿך堣⠓׾ֶ鋅鷕׃זֻկ 窫㼎ծ 妜׃ְ ౙͷओ໾ɺ Ξ΢λʔ COLLECTION OUTER 嗚稊勴⟝׾㼰׃㢌刿ׅ׷׌ֽדծ֮ז׋ך椚 䟝ך暟⟝ח⳿⠓ִ׷〳腉䚍ָ넝ֻז׶תׅկ 勴⟝׾㢌ִג嗚稊׃ג׫גֻ׌ְׁկ ׀䋞劄ך暟⟝כ 鋅אַ׶תׇ׿ד׃׋ַ ꟗׄ׷ ⼀⼈⼀⼈に合わせた 顧客体験を提供 Webサイトの訪問者の⾏動を 顧客ごとにリアルタイムに解析 $9 ސ٬ମݧ ϓϥοτϑΥʔϜ
  5. 8 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @ Slack Japanɹɹʛɹ ɹɹʛɹɹ© 2020 PLAID

    Inc. Stats of KARTE Real-time, Large-Scale, Global sec to real-time actions 0.x events per day 3 billion stored in BigQuery 2+ PB datasets for clients 2000+ events (rows) / sec 65,000 streaming insert per month 1 PB analysis per month 60+ PB slots with flat Rate US & JP 6000
  6. 本⽇のテーマ 9 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ Granular Permissionsで 実現する、 もっとsecureな BtoB Slack App開発 作ったもの これまで Granular permissions 対応⽅法 今後 まとめ 話すこと
  7. 11 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @ Slack Japanɹɹʛɹ ɹɹʛɹɹ© 2020 PLAID

    Inc. KARTE構成図 ΤϯυϢʔβʔ ΫϥΠΞϯτଆ γεςϜ SDK … … ΞΫγϣϯ σʔλ ΞΫγϣϯ ΞΫγϣϯ Πϕϯτσʔλ όονσʔλ όονσʔλ Πϕϯτσʔλ WebαΠτ ωΠςΟϒΞϓϦ ֎෦αʔϏε WebαΠτ ܭଌλά API call Webhook
  8. 15 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @ Slack Japanɹɹʛɹ ɹɹʛɹɹ© 2020 PLAID

    Inc. 作ったもの _⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈_ > ただの通知アプリ <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
  9. 16 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @ Slack Japanɹɹʛɹ ɹɹʛɹɹ© 2020 PLAID

    Inc. 作ったもの そんな、ただの通知アプリの Permission scopesを考える話
  10. 作ったもの 17 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ ⼀般的な通知アプリに 必要なscope channels:read groups:read chat:write files:write
  11. ɹɹʛɹɹ© 2020 PLAID Inc. 18 2020.02.04ɹʛɹ2020 Kick-off Meetup @ Slack

    Japanɹʛɹ ⼼穏やかに⾒られる要求scope数 oauth画⾯ 作ったもの
  12. 本⽇のテーマ 19 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ Granular Permissionsで 実現する、 もっとsecureな BtoB Slack App開発 作ったもの これまで Granular permissions 対応⽅法 今後 まとめ 話すこと
  13. これまで 20 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ これまでのSlackの Botに与えられたscope bot
  14. ɹɹʛɹɹ© 2020 PLAID Inc. 21 2020.02.04ɹʛɹ2020 Kick-off Meetup @ Slack

    Japanɹʛɹ bot⽤scopeの中⾝は、 約25種類の scopeの集合体。 。 。 oauth画⾯ これまで
  15. これまで 22 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ 開発者の気持ち こんなに権限貰っても、 扱いをミスったときの ことを考えると怖い
  16. これまで 23 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ クライアントの システム管理者の気持ち なんで通知アプリなのに こんなにscopeを取得し てるんだ ?怪しい。 インストールしたくない
  17. これまで 24 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ KARTEを使う クライアント企業の 広がり 最初は中規模ECが多 かったが、 最近は⾦融 ・ 保険業界や⽇系⼤企業 にも導⼊が進んできた
  18. これまで 25 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ Slackを使う クライアント企業の 広がり(予想) 最初は⼩規模Tech系企 業が多かったが、 最近は エンタープライズにも導 ⼊が進んできた
  19. これまで 26 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ エンタープライズの セキュリティチェック 個⼈情報流出によるイン パクトが⼤きくなってお り、 年々厳しくなっている (気がする)
  20. 27 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @ Slack Japanɹɹʛɹ ɹɹʛɹɹ© 2020 PLAID

    Inc. これまで もっと、もっと細かい権限設定を。。。
  21. 本⽇のテーマ 28 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ Granular Permissionsで 実現する、 もっとsecureな BtoB Slack App開発 作ったもの これまで Granular permissions 対応⽅法 今後 まとめ 話すこと
  22. 29 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @ Slack Japanɹɹʛɹ ɹɹʛɹɹ© 2020 PLAID

    Inc. Granular permissions https://medium.com/slack-developer-blog/more-precision-less-restrictions-a3550006f9c3
  23. 30 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @ Slack Japanɹɹʛɹ ɹɹʛɹɹ© 2020 PLAID

    Inc. Granular permissions "Granular permissions now available for Slack apps"
  24. Granular permissions 31 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup

    @ Slack Japanɹɹʛɹ Granularとは? 粒(状)の、 顆粒(かり ゅう)状の、 (表⾯が)ざらざらした
  25. Granular permissions 32 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup

    @ Slack Japanɹɹʛɹ Granular permissions とは? "We’ve redesigned the bot token with a revised permissions model called granular permissions."
  26. Granular permissions 33 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup

    @ Slack Japanɹɹʛɹ Granular permissions とは? Bot周りの権限を細かく 設定できるようになった
  27. 34 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @ Slack Japanɹɹʛɹ ɹɹʛɹɹ© 2020 PLAID

    Inc. Granular permissions https://medium.com/slack-developer-blog/introducing-the-slack-app-toolkit-3d509a15f41b
  28. Granular permissions 35 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup

    @ Slack Japanɹɹʛɹ the Slack app toolkit Permissions Block Kit Surfaces(App Home/Modal) Actions
  29. Granular permissions 36 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup

    @ Slack Japanɹɹʛɹ the Slack app toolkit Permissions Block Kit Surfaces(App Home/Modal) Actions
  30. Granular permissions 37 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup

    @ Slack Japanɹɹʛɹ the Slack app toolkit 実は2019/10から オープンβが始まっていた
  31. Granular permissions 38 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup

    @ Slack Japanɹɹʛɹ Granular permissions 以前 bot (という名の最強のscope)
  32. Granular permissions 39 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup

    @ Slack Japanɹɹʛɹ Granular permissions 以後 channels:read groups:read chat:write files:write など個別に設定可能
  33. Granular permissions 40 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup

    @ Slack Japanɹɹʛɹ KARTEの Slack Appの場合 App新規リリースの 少し前に Granular permissions の存在を知り、 既存のソースコードを 修正した
  34. 本⽇のテーマ 41 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ Granular Permissionsで 実現する、 もっとsecureな BtoB Slack App開発 作ったもの これまで Granular permissions 対応⽅法 今後 まとめ 話すこと
  35. 対応⽅法 42 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ Slack App管理画⾯の "OAuth & Permissions" Granular Permission に切り替え、 必要なscopeだけに絞る
  36. 対応⽅法 45 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ OAuth URL Pathを v2に変更 before: https://slack.com/oauth/authorize? after: https://slack.com/oauth/v2/authorize?
  37. 対応⽅法 46 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ OAuth URLに含める scopeを変更 before: https://slack.com/oauth/authorize ?scope=bot after: https://slack.com/oauth/v2/authorize ?scope=channels:read,groups:read,...
  38. 対応⽅法 47 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ access tokenを取得する methodをv2に変更 before: oauth.access after: oauth.v2.access
  39. 対応⽅法 48 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ oauth.v2.accessは oauth.accessと Responseが異なる (細かい) before: response.bot.bot_access_token after: response.access_token
  40. 対応⽅法 49 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ その後、 ユーザーに再認証を 依頼 access_tokenの Refreshが必要
  41. 本⽇のテーマ 51 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ Granular Permissionsで 実現する、 もっとsecureな BtoB Slack App開発 作ったもの これまで Granular permissions 対応⽅法 今後 まとめ 話すこと
  42. 52 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @ Slack Japanɹɹʛɹ ɹɹʛɹɹ© 2020 PLAID

    Inc. 今後 https://medium.com/slack-developer-blog/more-precision-less-restrictions-a3550006f9c3
  43. 今後 53 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ 新規App "Starting February 21, 2020, the App Directory will require newly submitted apps to use granular permissions."
  44. 今後 54 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ 既存App "Existing Slack apps on the App Directory must update by the end of 2020."
  45. 本⽇のテーマ 57 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ Granular Permissionsで 実現する、 もっとsecureな BtoB Slack App開発 作ったもの これまで Granular permissions 対応⽅法 今後 まとめ 話すこと
  46. まとめ 58 ɹɹʛɹɹ© 2020 PLAID Inc. 2020.02.04ɹɹʛɹɹ2020 Kick-off Meetup @

    Slack Japanɹɹʛɹ まとめ •権限周りのアップデートによっ て、 必要なscopeだけをpick できるようになった •Granular permissionsへの 対応は⽐較的簡単 •既存Appも、 2020年中に対応 が必要