NotionのAPI便利に使っていますが、まだユーザーのグループ管理をAPIで行うことはできません。
Notionのグループ管理はAdminロールじゃないと操作できないため、運用を楽にする方法が必要。
そこで目をつけたのがSCIMのグループプロビジョニング。
NotionとOneLogin間でグループプロビジョニングしたときのメモを書いておきます。
事前準備: SAML SSOとSCIMの設定をする
SAMLSSO構成
Provision Users and Groups with SCIM
書いてあるとおりにやっていけばできる
SAML設定時の注意点
- ドメイン検証にワイルドカードは使えない
- メールアドレスで使われているサブドメインすべてに検証が必要
- SAMLの設定は複数ワークスペースで共有できる
- 複数ワークスペースにSAML設定を適用させたい場合はサポートに頼む
- SAML必須にするなどの設定も共有される(上書き不可)
- SCIMはワークスペースごとに設定を行う
- IDaaS側はAppをワークスペースごとに作って各種設定すれば大丈夫
OneLoginのグループプロビジョニング
OneLoginで設定したRoleがNotionのグループになるように設定します。
これならRole Adminにメンバーの追加・削除を権限移譲できます。
設定方法
- 同期したいOneLogin Roleを作成、今回は接頭語に
Notion-Team-
を付ける - OneLoginのNotionアプリにRuleを作成
- 同期したいOneLogin Roleを正規表現で書く、括弧内の名称がNotion側のグループ名になります
- ParametersのOptional ParametersのGroupを編集
- Appのプロビジョニングを有効にして保存
- ParameterのGroupから
Include in User Provisioning
にチェックを入れる - Reapply mappings
- Notion側にグループとメンバーが同期される
- グループへのメンバー追加もNotion上の通知対象なので各メンバーに通知がいきます
利用上の注意点
実はこの方法、2022年3月現在まともに機能しません。
OneLoginとNotionとでSCIMのサポートフォーマットが異なるためバグります。
細かいフォーマットの話は割愛しますが、以下のように意図しない動作が起きます。
- OneLoginのRoleに一度に数十人追加すると、Notionのグループには数人漏れた状態で同期される
- OneLoginのRoleには問題なく追加されている状態
- フォーマットの問題というよりもNotion APIの制限がSCIM APIにもある?
- OneLoginのRoleからひとり削除すると、Notionのグループにいる全員がグループから離脱する
- OneLoginのRoleにはひとりだけ削除されている状態
- SCIM APIフォーマットの差異で起きている現象
3月中には直すとは言ってましたが、もう3月も後半。
早く直ってほしいなぁ。