こんにちは、エムザス ITサービス部 渡辺です。
kintoneを全社的に導入してアプリの数が増えてくると、管理者にとって頭の痛い問題が発生します。それは「特定のユーザーが、現在どのアプリにアクセスできるのか?」がパッと分からないという問題です。
kintoneの標準機能では、アクセス権の設定は「アプリごと」に行います。
つまり、「アプリAの設定画面を開いて、誰に権限があるか確認する」ことはできますが、「渡辺さんを指定して、閲覧可能なアプリ一覧を出す」という機能はありません。
人事異動や退職時の権限の棚卸し、あるいはセキュリティ監査の際、「ユーザー軸」でアクセス権を確認できないのは運用上大きなリスクであり、手間でもあります。
今回は、この問題を解決するために、
- 方法1: APIを使って自力でコードを書いて情報を取得する方法
- 方法2: もっと手軽に解決するためのプラグイン活用法(宣伝)
を紹介します。
方法1:kintone REST APIを使って自力で取得する
まずは、「コードで解決する方法」を解説します。
ユーザー軸でリスト化するには、以下のようなコードを書く必要があります。
ざっくりこんな感じの流れになるかと思います。
- 全てのアプリの情報を取得する
- 各アプリのアクセス権設定を取得する
- ターゲットとなるユーザーがその権限に含まれているか判定する
ここでは、
・コード:watanabe
・名前:(ワタナベ)さん
のアクセス権を確認するコードの一部を見てみます。
コードのイメージ
実際に任意のユーザーのアプリ毎の権限を確認するコード(一部抜粋)を記載します。
※所属判定の関数などの定義が必要なため、これだけでは動きません。
// 全アプリのIDを取得して、ユーザーの権限をチェックする概念コード
const targetUserCode = 'watanabe'; // チェックしたいユーザーのユーザーコード
const checkUserAccess = async () => {
try {
// 全アプリのIDを取得
const appsBody = await kintone.api(kintone.api.url('/k/v1/apps', true), 'GET', {});
const apps = appsBody.apps;
const accessibleApps = [];
// アプリごとにループしてアプリの権限を取得
for (const app of apps) {
const aclBody = await kintone.api(kintone.api.url('/k/v1/app/acl', true), 'GET', { app: app.appId });
const rights = aclBody.rights;
// 権限判定
const isAccessible = rights.some(right => {
if (right.entity.type === 'USER' && right.entity.code === targetUserCode) {
return right.appEditable || right.recordViewable;
}
if (right.entity.type === 'ORGANIZATION' || right.entity.type === 'GROUP') {
// 別途APIで所属判定を行う必要がある
return checkUserBelongsToGroup(targetUserCode, right.entity.code);
}
return false;
});
if (isAccessible) {
accessibleApps.push(app.name);
}
}
console.log(`${targetUserCode}さんが見れるアプリ一覧:`, accessibleApps);
} catch (error) {
console.error(error);
}
};
自力実装の壁
上記のコードを見て「意外といけるかも?」と思ったかもしれませんが、実運用レベルにするには以下のような壁があります。
- 「組織・グループ」の解決: アクセス権は「営業部」や「役職」で設定されていることが多いです。「ユーザーBさんは営業部にいるか?」を判定するために、別途APIを呼んで確認したいコードが組織やグループに所属しているかを確認する必要があります。これが非常に複雑です。
- 優先順位のロジック: kintoneのアクセス権は「上から順に適用」されます。上位で拒否されていたら下位で許可されていても見れません。ここも結構大変です…。
方法2:プラグイン「EMdocMaker」で解決する
「複雑なコードを書けない」「やろうと思えばできるけどコードを書く時間がない」
そんな方のために、弊社では「EMdocMaker」というプラグインを提供しています。
このプラグインを使えば、複雑なコードを一切書くことなく、ユーザー軸でのアクセス権確認が可能になります。
ユーザー軸でアクセス権を表示
EMdocMakerには「ユーザーごとのアクセス権マップ」を出力する機能があります。
- 操作: プラグイン画面から対象ユーザーを選ぶだけ。
- 判定: 組織やグループ(Everyone含む)に含まれているかも自動で判定し、「最終的にそのユーザーがアクセスできるのか」を判定して一覧化します。
- Excel出力: 結果をExcel等のドキュメントとして出力できるので、監査資料としてそのまま提出可能です。
その他の強力な機能:kintoneの「設計図」を自動生成
EMdocMakerはアクセス権の確認だけでなく、kintoneアプリの管理・保守に必要なドキュメントを自動生成するツールです。
1. アプリ関連図(ER図)の作成
kintoneアプリが増えると、「ルックアップ」や「関連レコード」でアプリ同士がどう繋がっているか分からなくなりませんか?
EMdocMakerは、アプリ間のつながりを自動で解析し、視覚的な関連図を描画・出力できます。これにより、アプリ改修時の影響範囲調査が劇的に楽になります。
2. アプリ定義書の出力
フィールドの設定値、計算式、JavaScriptの設定状況など、アプリの詳細設定を仕様書(定義書)として出力します。「このアプリの設計どうなってたっけ?」と設定画面をポチポチする必要なく確認できます!
まとめ(無料のデモ環境のご案内)
kintoneのアクセス権管理をユーザー軸で行うには、本記事の前半で解説した通り、APIを駆使した高度なプログラミングが必要です。特に、「組織」や「グループ」の階層構造や優先順位を含めた所属判定のロジックは非常に複雑で、自前で実装・保守し続けるには多くの工数がかかります。
そんな課題を、「EMdocMaker」であればインストールするだけで解決できます!
組織階層が深く、毎年の人事異動に伴う権限設定の確認が煩雑になりがちな自治体のユーザー様にとっても、大幅な業務効率化につながりますので、ぜひお試しください。



