アカウント無効化(退職・休職)に伴う slack app の動き

休職(育休)の引き継ぎ作業で、slack app の挙動が分からず調べたのでメモ。
slack アカウントの無効化と同時に、自分が導入した slack app が解除されてしまい、残ったメンバーが再設定でバタバタする状態は避けたい。

※さっと回答が見たい場合は最後のまとめを見てください。

公式ヘルプによると

メンバーのアカウントを解除すると、そのメンバーがインストールした一部のアプリ(サードパーティアプリとカスタムアプリのいずれも)が自動で解除されます。特定のアプリおよび一部のカスタムインテグレーション機能(ボットユーザー、スラッシュコマンド、Incoming Webhook など)はアクティブなまま残りますが、メンバーごとの権限を必要とするアプリは完全に解除される場合があります。

slack.com

まず、対象者が追加した incoming webhook は無効化されない。
利用しているサービスの一部は slack 通知に incoming webhook を使っていたため、これは再設定不要なことが分かって助かった。(bitrise や firebase など)

また slack 製の一部アプリは無効化されないよう作っているとのこと。
では、対象者がインストールしたその他の slack app は無効化されてしまうのだろうか...?

slack app トークンの寿命

ここで、ボットユーザーはアクティブなまま残るという記載が気になった。
ボットユーザーのリンク先によると、slack のトークン形式に bot token なるものがあるようで、それを指している様子。

Unlike user tokens, they're not tied to a user's identity—they're only tied to your app. Since acting independently allows your app to stay installed even when an installing user is deactivated, using bot tokens is usually for the best.

api.slack.com

bot token を利用すると、トークンの寿命はインストールしたユーザではなく slack app に紐づく。そのため、インストールしたユーザが無効化されてもアクティブなまま残るとのこと。

他に user token というものも存在していて、こちらはトークンがインストールしたユーザに紐づけられるため、そのユーザの無効化にあわせてトークンも無効化されてしまう。

そのため、利用している slack app がどちらのトークンを利用しているかで、引き継ぎが必要か変わってくると思われる。

検証

理解があっているか不安なので、念の為個人の slack ワークスペースでテストしてみたところ、slack app によって異なる結果となった。(あるアカウントで複数の slack app を導入し、そのアカウントを無効化してみました)

無効化されたものとそうでないものについて、 slack app の詳細ページを確認すると、「権限許可が対象者に紐づいているか app に紐づいているか」という違いがあった。

おそらくこれが token type の違いだと思うが、token type を正しく確認する術が分からなかったため若干推測ではある。(正しい確認方法があれば教えてください...。正しく裏を取るなら自分で slack app を作成して試すのが確実かもです)

無効化されなかった slack app
無効化された slack app

まとめ

  • slack アカウント無効化時に、無効化される連携
    • 対象者が追加した slack app で、トークンが対象者に紐づいているもの (slack app の詳細設定を確認したとき、権限許可が対象者に紐づいているもの。参考画像は本文参照)
  • slack アカウント無効化時に、無効化されない連携
    • 上記以外の slack app(トークンに bot token を利用しているものや、slack製の一部 app。前者の参考画像は本文参照)
    • 対象者が追加した incoming webhook、スラッシュコマンド

slack.com