見出し画像

権限管理は大事で、難しい。特に、管理画面においては。

長いのでまとめ

  • 権限管理はリスク防止・運用スケールの観点で重要。

  • 管理画面だと職種・職位・所属企業の掛け合わせで利用者の属性が多岐に渡り、扱うデータの機密性も高いので権限管理が特に重要かつ機能の開発難易度が高い。

  • 特に設計フェーズでは網羅的なカスタマージャーニーマップ作成のような体験設計作業が必要で、業務理解を最深部まで進める必要がある。


皆さまこんにちは、株式会社ベースマキナの代表取締役社長を務めております高橋( @__timakin__ )です。
弊社では、ソフトウェアエンジニアの皆様向けにヒューマンエラーを減らすローコード管理画面構築SaaS「ベースマキナ」を提供しています。

ありがたいことに継続的にご利用者様の数・ご活用頂く業務の幅が増え、積み上がるご要望に日々追いつくべく開発に邁進しております。

今回は先日ベースマキナがリリースした「ロール機能」に付随するお話です。

ベースマキナでは、以前から管理画面上で呼び出す処理ごとに、ユーザーやユーザーのグループ単位で実行を許可する機能があるなど、ガバナンス要求に答える機能を揃えてきました。

今回修正が行われたのはそれとは別のレイヤーで、ベースマキナ上の管理者向けの設定(接続先のデータベースやAPIの情報や、処理の登録、ユーザー追加など)を行う権限を細分化 & グルーピング設定を紐づけられるようにした、というものです。

この機能は成果物で見るとシンプルなのですが、権限管理にまつわる設計・開発はいつも魔物に立ち向かうようなもので、混迷を極めます

そして、こと管理画面開発となるとその難易度は他の開発よりも高い、というのが今回の主旨です。

権限管理の重要性

権限管理とは?という問いから始めるのはやり過ぎな気もしますが、念の為記載すると「システム上でデータを操作・参照するユーザーを管理者がコントロールする機能」のことです。

権限管理はtoBのサービス提供時にはもちろんのこと、toCであっても特権ユーザーとそれ以外といった階層が生まれうる場合は必須になります。
この機能の重要性は大まかに言えばリスク防止の観点に集約されます

権限を過剰に付与したり、全く権限の差がなく性善説で操作権限を与える場合もありますが、大抵の場合サービスが成熟してくると以下のような問題の穴を防ぐ必要が出てきます。

  • 悪意あるユーザーを起点にした情報漏えい

  • 不要な操作導線まで表示されてしまうことによる操作ミス

私も現職までの経歴ではtoCのサービス開発がメインでしたので、正直かなり性善説の運用のケースもありました。
幸い情報漏えいの事故には見舞われませんでしたが、例えば「ECの運営事業者において、お問い合わせがあったお客様のユーザー情報を詳細画面で見たらついでに決済情報、住所まで見えてしまう」というケースは想像に難くありません。

監査機関への報告義務が課された日にはこうした穴を徹底して防がなくてはなりません。意図しない事故を防ぐための第一歩として、権限管理の重要性は高いです。

逆に、権限管理が十分であれば、業務を分担するときに安心して担当者の数をスケールさせることができます

管理画面における権限管理

さて、改めて私共が開発しているベースマキナは「管理画面を作る開発基盤のSaaS」です。
この”管理画面”というものは権限管理を練りに練る必要があるという特徴があります
その理由は2つで、

  • 利用者の属性が多岐に渡る

  • アクセスするデータの機密性が高い

からです。

利用者の属性が多岐に渡る

こちらは管理画面を誰がどんな業務のために使うかを想像すればおわかり頂けます。

私なりに言語化すると、管理画面とは「Webサービス運営者が自社内のデータを参照・操作してお客様の問題を代わりに解決したり、直接クライアント画面で提供される機能とは別の手段で価値提供をするためのインターフェース」のことです。

お客様の問題を代わりに解決」するのはお客様向き合いのカスタマーサポート・サクセス、あるいは営業の方をはじめとして、障害対応時にはエンジニアの方もその主語になるでしょう。
直接クライアント画面で提供される機能とは別の経路で価値提供をする」のは、たとえばキャンペーン施策やプッシュ通知を打ったりその企画をするPdM、マーケターなどの方が主語になります。

この例の時点で職種が多様なのはもちろん、”運用業務”と抽象的な呼ばれ方をされる上記の業務は、ユーザー数増加に合わせてスケールさせていくために、頻度の高い業務ごとに外部委託の方やインターンの方も巻き込んで実施されます。これは職種だけではなく職位や所属企業自体も多様化することを意味します。
つまり、一定ラインを越えると見知った仲の正社員間では完結しない業務が乗ってくるのが管理画面の特性です。

アクセスするデータの機密性が高い

次に機密性の観点ですが、こちらはご想像に難くないと思います。

BIツールと違い管理画面で操作・参照する情報は、ほぼその運営事業者様の一次情報であり、場合によってはマスキングされる前の情報です。
配信コンテンツの内容ならまだしも、お客様の情報を操作ミスで消し飛ばしたりしようものなら、すごい勢いで冷や汗をかくことになるでしょう。

ミスしたときのリスクが大きい分、先ほど記載したようにユーザーの職種・職位が掛け算で多様化する画面であることを考慮して権限管理を入念に設計したくなるのは当然です。

権限管理は難しい

権限管理の重要性はここまで長々と記載しましたが、設計・実装の段がシンプルに難しいのがこの機能です。

設計が難しい

権限管理の設計はお客様の理解を最深部まで進める必要があります
私共は冒頭にある通り「ロール機能」をリリースしました。

ロールとは一連の操作をする権限のグルーピング概念で、「システム管理者」「開発者」など、具体的な役割に紐づくものです。
設計が難しくなるのは、こうした設定労力を下げるためのグルーピングの単位を決めるには、お客様の業務を理解してそのグルーピングが運用に耐えうるのかを丁寧に検証する必要があるためです。

サービスを立ち上げるとき、カスタマージャーニーマップと呼ばれるお客様がサービス利用に至るフローを整理する手法があると思います。
弊社ではロール機能をリリースするにあたり、お客様の具体的なペルソナ設定を行ったうえで、カスタマージャーニーマップに近い体験設計を行いました

ただ、ご利用頂く事業者様ごとに管理の厳格さが異なる以上、無理なく設定ができて運用にも耐えうるラインを見つけ出すためには、体験設計の網羅性が重要になってきます。

以上のように、体験設計時の想定ケースが多いという意味で、権限管理機能の設計は難易度が高くなります

実装が難しい

設計の時点で網羅性が求められる機能は、実装もまた網羅性が求められます。
先ほどはグルーピングの話を書きましたが、実装時に気にする網羅性は権限の最小単位(例: 管理者しかアクセスできない画面のボタンの表示制御)が適切に表現できているか、という意味での網羅性です。

シンプルに実装漏れが起きやすいですし、後から権限の種類やグルーピングが追加されても破綻しない実装が求められるので、難易度(というより工数?)が高くなります。

おまけ:後から見直しが難しい

余談ですが、権限管理で実は一番難しいのは、再設計と実装に向けた合意形成だったりします。個人的にはこれが一番難しいと思います。

これは数値的な根拠がない経験則ですが、権限管理は初期実装時には得てしてスピード優先かつ性善説ベースで仕上がった「みんな権限がつよい」パターンになりがちです。
一方で見直しを迫られるのは情報セキュリティ監査に関心を持ち始める主にシリーズB前後のタイミングだったりして、「組織の権限体系をそのまま転写したような権限管理」が求められます。

リファクタあるあるですが、抜本的改修を求められたとき、既に機能が豊富なので、平気で数ヶ月かかります。しかもサービス本体の改修ならまだしも、並行で開発されがちな管理画面だと本当に間延びします。そして大体は中途半端なラインに着地するか頓挫します。本当です

どうせなら、最初から安全に。

ということで、長くなりましたが管理画面における権限管理の重要性と難しさについて記載しました。

私共のサービスをご利用頂くお客様には、サービスが長く成長し続けて頂きたいと常々考えております。そしてそのために、立ち上がり期に見合う手軽な画面作成と権限管理・証跡管理などの後から作るのが大変な要素を両立した基盤を作りました。

まだまだ追加していきたい機能は山盛りですが、安心してご利用頂くために努力を惜しみませんので、運用を見直したり新しいサービスを立ち上げられる際には、その隣にベースマキナを添えて頂けると幸いです。

お問い合わせはこちらから!

また、お客様の手触り感ある業務理解を通じて、体験設計をしていきたい事業開発の方、エンジニアの方は是非お話できればと思います🙏

https://twitter.com/__timakin__


この記事が気に入ったらサポートをしてみませんか?