kintoneで代理承認???

こんにちは、金春です。

今日(2020年5月28日)の gusuku Customine のアップデートで、

「作業者を変更する(現在のレコード)」「作業者を変更する(指定のレコード)」

という2つのやることにAPIトークンを設定できるようになりました。

これだけでピン!と来る人は、かなりのkintone通と言えます。

さて、これによって何ができるようになるかと言うと、プロセス管理が設定されているアプリにおいて代理承認ができるようになります。

代理承認したい人多い

様々なお客さんとお話をする中で、kintoneで「代理承認をしたい」というお客さんが非常に多いんですが、標準機能ではできないんです。

標準機能で行う場合の代替案

標準機能だけで代理承認のようなことをする場合、一番簡単なのは、代理になる方も含めて、決裁しうる可能性のある人を全員作業者として指定し、そのうち1人が承認すればいいように設定するという方法です。

この画像のように設定しておけば、「承認者」フィールドに入っている人のうち1人が決裁すればOKとなるため代理で承認することもできるようになります。

ただ、この方法には1つ欠点があります。kintoneは作業者に指定されると通知が飛ぶという仕様があります。そうすると、通常なら自分が決裁する必要のない代理で決裁しうるデータまで自分が作業者として出てきてしまうため、通知がいっぱいになって、本当に自分が決裁しないといけないものが見えづらくなるという問題があります。

この代替案をご提案して、更にデメリットを説明すると、だいたいの方が「それは嫌だ」という反応になります。

次に思いつく手

「そうだ!承認者に最初からみんな入ってるから通知が飛ぶんだから、代理が必要になったときに承認者に代わりの人を追加すればいいいんじゃない?」

って考える人もいらっしゃると思いますが、残念ながらその手は使えません。

kintoneでは、プロセスが動いた時、その瞬間に作業者が決定します。作業者をフィールドで指定している場合でもプロセスが動いたときにそのフィールドに入っている人が作業者となるため、あとから変更してもダメなんです。

作業者を切り替えるには?

では、kintone では作業者を切り替える方法がないのか?というと、そうではなく、「現在の作業者を変更する」という操作をできる人がいます。それは「アプリ管理権限」を持っている人です。

このボタンが出る人は作業者を変えることができます。

代理承認が必要になったときに、アプリ管理権限を持っている人にお願いして作業者を変更してもらうという運用をされている方もいらっしゃるんじゃないかと思います。

代理承認をする方法

つまり「アプリ管理者が現在の作業者を変更する」ということができれば、代理の人を作業者にすることができるわけなので、これを実現しようというのが今回のアップデートの目的です。

kintoneには、APIを利用するときに使えるAPIトークンというものがあります。このAPIトークンを使うとkintoneのデータをAPIで操作することができます。さらに、このAPIトークンでのデータ操作は、Administrator権限で行われます。Administratorはデフォルトでアプリ管理権限を行使できるので、APIトークンに付加する権限としてアプリ管理を追加しておけば作業者の変更が可能となります。

gusuku Customine での設定は、以下のサポートサイトの記事を参考にしてください。

お〜便利〜バッチリ!!

と思いたいのですが、いくつか注意したい点があります。

APIトークンを使うということ

APIトークンを使うということは、ある種のなりすましを行うということになります。本来アプリ管理権限を持たないユーザーが、一時的にAPIキーを利用してアクセスすることでアプリ管理者になりすまして作業者を切り替えることになります。このことは、よく理解してください。

そのため、この機能で利用するAPIトークンに許可する処理は最小限に留めるべきです。作業者の変更を行うには「レコード閲覧」と「アプリ管理」の権限があればOKですので、この2つだけを許可したAPIトークンを作成するようにしてください。また、他の用途とAPIトークンを共有しないようにしてください。これはなにか問題が見つかった場合に、該当のAPIトークンを削除することでそこで即座に遮断するためです。

APIトークンの持ち方

APIトークンを利用してAPIを呼び出すには、どこかにAPIトークンを保存してkintone APIを呼び出すときにAPIトークンを付加して呼び出す必要があります。

kintoneプラグインには、このような秘匿情報をクライアント側に渡さずにkintoneサーバ側で処理する仕組みが用意されていますが、gusuku Customine はプラグイン形式ではないため、この仕組は利用できません。

gusuku Customine では、生成されたJavaScriptファイル中にAPIトークンを埋め込んでクライアント側にダウンロードさせる必要がありますが、このときgusuku Customineが生成するJavaScriptは高度に難読化した上で、APIトークンは暗号化されて保存されます。

しかし、ある方法を使うと通信内容を見ることができますので、悪意を持ったkintoneユーザーが解析を行うとAPIトークンを見ることができます。そのため、内部の悪意をもったユーザーによる不正を防ぐことはできません。

この点もよく理解した上で、利便性とセキュリティのバランスを検討してご利用ください。

まとめ

gusuku Customineを使うことでkintoneの標準機能ではできないことを実現可能にすることができます。しかし、処理によってはセキュリティなどを考慮する必要があるものがありますので、深い理解をした上でご利用ください。

投稿者プロフィール

アバター画像
金春 利幸
"gusukuシリーズプロダクトマネージャー
ノーコード(No-Code)の有効性に着目し、kintoneとgusukuシリーズの普及のため全国を飛び回っています。"