Slackでワークスペースに新たなメンバー(ゲスト以外)が追加されたら、通知を受け取るようにする方法です。
背景
Slackには色々なユーザ種別がありますが、Enterprise Gridでない通常プランでは、ざっくり以下を意識することが多いと思います。
- 管理者: ワークスペースの設定やメンバーの追加などの操作が可能
- 通常メンバー: すべてのパブリックチャンネルに参加可能
- マルチチャンネルゲスト: 指定されたチャンネル(任意の数)のみ参加
- シングルチャンネルゲスト: 指定されたチャンネル(1つ)のみ参加可能(無料)
(他に取引先とのSlack Connect等もありますが本題ではないので省きます)
業務中のコミュニケーションはほとんどSlackで行っているため、どうでもいい雑談から重要な意思決定まで、非常に多くの情報が詰まっています。勝手にメンバーを追加し放題では大きな問題なので、管理者しか追加できないように設定しています。
ここで
and approve invitations for any email address from these domains:
を有効にすると、そのドメインのメールアドレスを持っているだけで誰でも通常メンバーとして参加可能な、オープンなワークスペースになります。通常メンバーはすべてのパブリックチャンネルにアクセスできるため、非常に強い権限と言えます。
たとえ会社ドメインに絞ったとしても、メールアドレスはML等で発行することもあるでしょうし、クローズドなワークスペースではこれはOFFにしておくのが一般的かと思います。
事故を誘発するUI
業務で広く使われているSlackですが、UIはオープンなワークスペースに最適化したような箇所も多く、油断すると「招待する気がない人を通常メンバーにしてしまった」のような事故が怖いです。
新規招待時のデフォルトが通常メンバー
通常メンバーよりはゲストを追加・削除する頻度のほうが多いのですが、UI的にデフォルトが通常メンバーです。
うっかり間違えると危険です。
チャンネルに追加するつもりで/invite
チャンネルにメンバーを追加するとき、マウスでポチポチやるのも面倒なので /invite @username
すると簡単です。しかし、ここでユーザ名を打つ前にEnterを押すと、ワークスペースに新たなメンバーを招待するという全く違う機能が発動します。
久しぶりの人が、あれこんなUIだっけな?と思いつつ適当にハイハイ進めていくと、デフォルトの通常メンバーとして招待されてしまいます。
ゲスト招待時にオープンワークスペース化を進めてくる
詳しい条件が良くわからないのですが、ゲストを追加したりSlackコネクトを設定したときに、「会社ドメインのメールアドレスを持っていれば誰でも参加できるようにしませんか」というダイアログが出てくることがあります。大きなお世話です。
慣れていない人が、よく読まずにチェックを入れてしまうと、最初の
and approve invitations for any email address from these domains:
が選択された状態になり、危険です。
気をつける?
ドメインメールアドレス所有者の参加については、多分Require admin approvalをONにしているので承認を求められるとは思うのですが、Approvalはアプリの許可やコネクトの参加などでも頻繁に発生するため、いつか誰かがミスらないとも限りません。あくまでセーフティネットにしておきたいです。
操作ミスをしない人だけを管理者にする、というのはしたほうが良いですが、人間はミスります。管理者が1人では業務が回らないので複数人にしますが、そのうちの誰か1人だけがミスるとあわや情報漏洩というのはちょっと怖いですね。
通知する
ということで、事故りやすいUIなのは受け入れた上で、通常メンバーが追加されたらみんながすぐ気付けるようにします。誰か1人でも「おや?」と気づけば、急いでアカウント無効化など手が打てるかもしれません(Invitationが送信された時点で気付ければ、大抵は致命傷になる前に対処できるでしょう)。
Slackには標準で「新規ユーザーについて通知する」という機能があります!これを使えば良い!
しかし、この機能は50人以下のワークスペースでしか使えません。50人超だと以下のように項目ごと消えます。なんでそういうことするの...
仕方ないので、代替手段を考えてみます。
ワークフローを作る
ようやく本題です。と言ってもやることは簡単です。
- 通常メンバーが必ず参加するチャンネル(標準では
#general
)がある。 - このチャンネルにメンバーが参加したことを検知すれば良い。
ここはワークフローを使いましょう。
誰かが #general
に参加したら、適当なチャンネル(ここでは #new-member-notice
にしました)に通知します。
あとはこのチャンネルの発言はすべてメンションのように通知を受け取るようにすればOKです。管理者には一通り通知設定をしておいてもらいましょう。誰かが事故に気付く確率が上がります。
これで、誰かが通常メンバーのinvitationを送った時点で通知が流れます。
これで、万一心当たりのない登録があった際にも即座に気付くことができそうです。