👻

chatworkを一元管理化するのに難儀した話

に公開1

はじめに

こんにちは、竹谷です。
Rehab for JAPANで、情報システムチームとしてコーポレートIT業務を行っています。

職場でchatworkを一元管理化するのに思いのほか苦労したので、まとめてみました。

対象読者 (ターゲット)

  • chatworkを一元管理化したいシステム管理者

結論

一元管理化出来ません! (出オチ)

最初はそっと始まった

弊社では、社内チャットとしてはSlackを利用しており、外部ともSlackコネクトやゲストユーザーでコミュニケーションを取っております。
しかし、チャットは相手あってのものなので、先方がSlack NGというケースはあります。
そうした場合に要求されうるツールの一つとしてchatworkがあり、当初は営業部門からの相談として、特定のクライアントとのやり取りに先方指定されている、という話から、利用を了承していた経緯があります。

利用状況の変化

時が経つと、chatworkの利用状況もだいぶ様変わりしてきました。

  • 営業部門での、有料利用移行
  • 営業部門以外でも、特定顧客とのやり取りで利用
    また、SlackのBCPとしてテスト運用していた時期のなごりが残っていたりもします。

主ツールで無いこともあり、今までは利用部門にその管理を委ねており、不適切な利用なども発生しておりません。
ただ、状況を把握できているうちはいいのですが、今後も利用が増えていく中で少々懸念が出てきました。

さてどうする?

まず、現状での懸念点ですが

  • 管理外でアカウント作成・利用がされてしまう事による、情報統制の欠如
  • 不測の事態が発生した際の対処困難
  • 異動・退職等で組織から離れたメンバーのアカウントが残存してしまう

などが考えられます。

これらを適切に管理するために、以下を実施したいと考えました。

  • 有料・無料に関わらず、システム管理部門による一元的なアカウント管理
  • IdP連携による異動・退職等への設定同期
  • ログ保管が出来る環境への移行

では、実際これらの対応は仕様上可能なのでしょうか?

「一元的なアカウント管理」への茨の道

chatworkには複数のプランがあり、当然機能の違いが存在しています。
ですが、たとえ最上位プラン(エンタープライズ)であっても、アカウントの一元管理は叶いませんでした。
これは、chatworkには組織テナントのような概念がなく、あくまで個人ユーザーの紐づけによる主従関係しか存在しないからです。
そのため、管理者ユーザーを立て、そこから個別に管理したい相手ユーザーを特定して管理下に入ってもらう必要がありました。

また、管理者ユーザーが有料プランの場合は有料ユーザーのみを、無料プランであれば無料ユーザーのみをその管理下におくことが出来ます。
しかし、有料・無料を混在で管理することは出来ません。

その結果、

  • 有料管理アカウント ー 有料ユーザー
  • 無料管理アカウント ー 無料ユーザー
    という2つの管理体系が存在することになりました。

更に、自社ドメインを登録・アカウント発行を制限する、といった機能(いわゆるドメインキャプチャ)が存在しません。
そのため、2体系によるユーザー管理を実現した後も、管理外アカウント(野良アカウント)が発生する状況が継続します。

  • 有料管理アカウント ー 有料ユーザー
  • 無料管理アカウント ー 無料ユーザー
  • 有料組織外アカウント ← New!
  • 無料組織外アカウント ← New!

図にするとこんな感じです。
riso
理想だった形

genjitsu
現実の仕様

ここについては、適時社内への啓蒙活動を行いつつ、シャドーIT検知の仕組みで洗い出し、地道に追い続けるしかなさそうです。

「IdP連携」への茨の道

今回、有料アカウントの一元管理に際して、エンタープライズプランを採用しました。
主な目的は2つで、

  • IdPとの連携によるSSO・プロビジョニング利用
  • チャットログ保管
    になります。

前者のSSO・プロビジョニングですが、公式に対応しているIdPはMicrosoft Entra IDとなっています。
(正確には、「Chatworkと同期可能なユーザーID管理システムはMicrosoft Entra ID」となっています)
弊社はたまたまEntra IDを利用していましたので、公式マニュアル通りに対応しました。
Entra ID以外のIdPをご利用の方は、自力で頑張りましょう。

設定そのものは問題なく完了し、SSOもプロビジョニングも想定通りに稼働しました。
なら、何も問題ないじゃない?と思いますよね?
すべてのアカウントをIdPで管理できているのであれば問題ないです。
ですが、ここで出てくるのが組織外アカウントの問題です。

SSO・プロビジョニングを有効にすると、IdPからのユーザー同期でアカウント管理するので、
chatworkから直接アカウントを発行・招待などはできなくなります。(これはわかる)
useraddng
SAMLが優先されてユーザー招待が塞がれている

userinvitationng
招待リンクも使えない

ですが、組織外アカウントは既に社用メールアドレスを使用してアカウントを作っているので、
IdPから同期しても、メールアドレスが重複してしまいエラーになります。
IdPから管理することもできず、chatworkからの直接招待もできないので、八方塞がりです。

これを回避するには、一度プロビジョニング設定を停止して、chatworkから直接招待出来る状態にし、組織外アカウントユーザーに自ら登録対応をしてもらうことになります。

さらに、ドメインキャプチャがないため、組織外アカウントが発生するたびに、このプロビジョニング停止>アカウント招待>ユーザーが登録対応>すべてのユーザーが登録完了後プロビジョニング再開を繰り返す必要があります。

救いがあるのは、SSOとプロビジョニングが個別にオン・オフできるので、SSOを維持したままプロビジョニングだけオン・オフ可能なところです。

「チャットログ保管」への道

もう一つの目的にある、チャットログ保管ですが、まだエンタープライズプランを導入して日が浅いので、今のところは実施していません。
マニュアルを見る限りは、つまづきそうな要素は見当たらないのですが、強いて言うなら月次等で自動エクスポートしてくれるとありがたいですね。
まぁ、このぐらいは許容できる範囲ではあります。

その他

エンタープライズプラン独自の機能としては、上記以外にもIP制限やモバイルアドレス制限等のセキュリティ機能が強化されています。
組織によってはこのような要件が必須の場合もあるかと思いますので、さすが最上位プランだなという所ではあります。
plan
セキュリティ系の機能はほぼエンタープライズしかない

まとめ

いち利用者として見る分には有益なツールなのだとは思うのですが、
システム管理者の観点で見たときに、微妙にかゆいところに手が届かない感じが非常に歯痒いです。

国産ツールの多くはSSOやプロビジョニング自体対応している場合が少ない印象がある中で、chatworkはそこに対応しているだけありがたいのですが、あと一歩が足りないが故に負荷の高い運用を続ける必要が出てきてしまいます。
へーしゃでは、あくまでサブツールなのでなんとかなりますが、メイン利用だったらちょっとヤバいです。

ユーザーフレンドリーだけではなく、システム管理フレンドリーでもあって欲しいと切に感じます。

Rehab Tech Blog

Discussion

kake2kake2

竹谷さん、貴重な実体験の共有ありがとうございます。
m(_ _)m

「一元管理化できません!」という結論に、思わず苦笑いしてしまいました。

私も情シスとして似たような課題に直面しています。弊社ではTeams、Redmine、マイクロソフト製品のアカウントで統一していますが、それでも各種SaaS製品群のアカウント管理には苦労しています。特に共感したのは「組織テナントの概念がない」という点です。これ、本当に管理者泣かせですよね。

私たちは、以下のような運用をしています。

・月次の棚卸し作業を仕組み化
・手順書を作成し、当番制で複数人が持ち回りで実施
・3ヶ月ルール:最終アクセスから3ヶ月経過したアカウントは自動ロック

地味な作業ですが、「野放し」よりはマシ、という割り切りで続けています。

竹谷さんの記事で特に重要だと感じたのは、
【問題を可視化して共有されている】点です。
「できないものはできない」と正直に書かれているからこそ、同じ悩みを持つ私たちにとって救いになります。

野良アカウントの問題を考えると、誰が・いつ・何をしたかの記録を蓄積することも必要かもしれませんね。今後の課題として検討したいと思います。

プロビジョニングのオン・オフを繰り返す運用、本当に大変そうですね...。でも、そうやって工夫しながら対応されている姿勢に頭が下がります。

縁の下の力持ちとして、お互い頑張りましょう!
また実践的な知見の共有を楽しみにしています。

m(_ _)m