Skip to content

KIZAMI 権限カタログ

  • ステータス: 実装済み(2026-08-22)。残るレビュー論点は文末参照
  • 機械可読な正は packages/authz/src/catalog.tsPERMISSION_CATALOG。この文書は設計意図と根拠を説明するもので、権限キー・スコープ・危険フラグの実体はコード側が正。GET /presets/catalog がそれを返し、権限プリセット編集UIのチェックボックスを描画する
  • 対応要件: 要件定義書 §4 / データモデルとの関係: v0.1 データモデル設計(§4 権限モデル、§12-1 未決事項に対応)
  • 前提:
    • セルフサービス権限(自分の打刻・自分の修正/休暇申請の起票・自分の記録閲覧)は全ユーザーが常時保持する固定権限であり、プリセットのON/OFF対象外のため本カタログには含めない。
    • denyは存在しない。プリセットに含まれる権限は加算(union)されるのみ。
    • 操作は閲覧を含意する。承認・実行・管理系の権限をONにすると、対応する閲覧権限は自動的に有効になる(UI上も明示)。
    • スコープ表記: 本人のみ / 自部署 / 自部署+配下部署 / テナント全体。項目ごとに意味のある選択肢のみを列挙する(本人のみが無意味な項目には出さない)。
    • スコープの機械可読キー(2026-08-21確定、DB の grants JSON で使用): self(本人のみ)/ department(自部署)/ department_and_descendants(自部署+配下部署)/ tenant(テナント全体)。
    • 「危険フラグ」は §4 が言う「編集UI上で影響範囲の説明を添えて表示すべき権限」を指す。§10の文脈ヒント(操作時の都度のツールチップ)とは対象が重なるが別軸であり、ここでは権限プリセット編集画面での重点表示対象という意味で付与している。

1. 業務タスク単位の権限カタログ(31項目。2026-08-23 に shift.manage を追加)

1.1 打刻(代理操作)

キー日本語ラベル説明適用スコープ含意される閲覧権限危険
attendance.punch.proxy他者の打刻を代理で記録できるIC障害・打刻忘れ等の際に、他のメンバーに代わって出退勤・休憩の打刻を登録できる自部署 / 自部署+配下部署 / テナント全体対象範囲の勤怠記録閲覧(attendance.record.view相当)いいえ

1.2 修正申請・承認

キー日本語ラベル説明適用スコープ含意される閲覧権限危険
attendance.correction.request_for_others他者に代わって修正申請を起票できる本人が申請できない事情がある場合に、担当者が本人に代わって打刻修正申請を作成できる自部署 / 自部署+配下部署 / テナント全体対象範囲の勤怠記録閲覧・修正申請閲覧いいえ
attendance.correction.approve勤怠の修正系申請を承認できるメンバーから提出された打刻修正申請・休憩の自動控除打ち消し申請を承認し、勤怠記録に反映する自部署 / 自部署+配下部署 / テナント全体修正申請閲覧・対象範囲の勤怠記録閲覧いいえ
attendance.correction.view_all他者の修正申請状況を閲覧できる承認権限がなくても、修正申請の提出・承認状況を確認できる(人事の状況把握等)自部署 / 自部署+配下部署 / テナント全体いいえ

1.3 勤怠記録閲覧

キー日本語ラベル説明適用スコープ含意される閲覧権限危険
attendance.record.view他者の勤怠記録(日次・月次)を閲覧できる自分以外のメンバーの日次・月次の勤怠記録・集計結果を確認できる自部署 / 自部署+配下部署 / テナント全体いいえ
shift.manageシフト表を作成・確定できるメンバーのシフト表(勤務日・勤務時間・休日)を作成し、確定後の変更履歴を残しながら修正できる(変形労働時間制の「事前特定」に相当。2026-08-23 v0.7 追加)自部署 / 自部署+配下部署 / テナント全体対象範囲の勤怠記録閲覧いいえ

1.4 休暇(申請・承認・付与管理)

キー日本語ラベル説明適用スコープ含意される閲覧権限危険
leave.request.approve休暇申請を承認できるメンバーから提出された休暇申請を承認できる自部署 / 自部署+配下部署 / テナント全体休暇申請閲覧・対象範囲の勤怠記録閲覧いいえ
leave.request.view_all他者の休暇申請状況を閲覧できる承認権限がなくても、休暇申請の提出・承認状況を確認できる自部署 / 自部署+配下部署 / テナント全体いいえ
leave.grant.manage有給休暇の付与・残日数を管理できる法定基準日方式等に基づく有給付与の実行、残日数の個別調整、付与予告の承認・却下(v0.7)ができる自部署+配下部署 / テナント全体有給残日数閲覧(leave.balance.view相当)はい
leave.balance.view他者の有給残日数を閲覧できる付与権限がなくても、メンバーの有給残日数・取得状況を閲覧できる自部署 / 自部署+配下部署 / テナント全体いいえ
leave.mandatory_five_days.view年5日取得義務の状況を閲覧できる対象者ごとの年5日取得義務の充足状況・未達アラートを確認できる自部署 / 自部署+配下部署 / テナント全体いいえ

1.5 締め

キー日本語ラベル説明適用スコープ含意される閲覧権限危険
closing.execute月次締めを実行できる対象月の勤怠を確定させ、以後の直接的な変更をロックする自部署+配下部署 / テナント全体締め状態閲覧・対象範囲の勤怠記録閲覧はい
closing.unlock締めを解除できる確定済みの月次締めを再オープンし、遡及修正を可能にする自部署+配下部署 / テナント全体締め状態閲覧・監査ログ閲覧(締め関連)はい(要件§4で専用権限として明記)
closing.view締め状態・履歴を閲覧できる各月の締め状態(未締め/締め済み)と解除履歴を確認できる自部署 / 自部署+配下部署 / テナント全体いいえ

1.6 エクスポート

キー日本語ラベル説明適用スコープ含意される閲覧権限危険
export.attendance.run勤怠データをCSV/API出力できる区分別時間数を含む勤怠データをCSVまたは外部連携用に出力できる自部署 / 自部署+配下部署 / テナント全体対象範囲の勤怠記録閲覧はい

1.7 36協定アラート

キー日本語ラベル説明適用スコープ含意される閲覧権限危険
alert.labor_limit.view36協定アラート(時間外超過状況)を閲覧できる時間外労働の月45h等の閾値に対する実績・超過見込みを確認できる自部署 / 自部署+配下部署 / テナント全体いいえ
alert.labor_limit.configure36協定アラートの閾値・通知先を設定できる法定上限に対するアラート閾値や通知先チャネルを設定できるテナント全体のみアラート閲覧(alert.labor_limit.view)はい

1.8 メンバー管理

キー日本語ラベル説明適用スコープ含意される閲覧権限危険
member.inviteメンバーを招待・追加できる新しいメンバーをテナントに招待し、アカウントを作成できる自部署 / 自部署+配下部署 / テナント全体メンバー一覧閲覧いいえ
member.profile.editメンバーの基本情報を編集できる氏名・所属部署・雇用形態などメンバーの基本情報を編集できる自部署 / 自部署+配下部署 / テナント全体メンバー一覧閲覧いいえ
member.deactivateメンバーを無効化(退職処理)できる退職・休職等によりメンバーのアカウントを無効化し、ログインを停止できる自部署 / 自部署+配下部署 / テナント全体メンバー一覧閲覧はい
member.viewメンバー一覧・詳細を閲覧できるメンバーの一覧および詳細プロフィールを閲覧できる自部署 / 自部署+配下部署 / テナント全体いいえ

1.9 部署管理

キー日本語ラベル説明適用スコープ含意される閲覧権限危険
department.manage部署ツリーを管理できる部署の作成・編集・異動(部署ツリーの構成変更)を行える自部署+配下部署 / テナント全体部署ツリー閲覧いいえ(要検討: レビュー論点参照)

1.10 テナント設定

キー日本語ラベル説明適用スコープ含意される閲覧権限危険
tenant_settings.calendar.manage日界・法定休日カレンダーを設定できる1日の起算時刻(日界)や法定休日の曜日・暦日指定を設定できるテナント全体のみテナント設定閲覧いいえ
tenant_settings.flex.manageフレックスタイム設定を管理できる清算期間などフレックス勤務設定を管理できるテナント全体のみテナント設定閲覧いいえ
tenant_settings.gps.manageGPS打刻の設定を管理できるGPS座標取得のopt-in有効化や保持期間を設定できるテナント全体のみテナント設定閲覧はい(従業員のプライバシーに影響。有効化は従業員への明示が必須)
tenant_settings.auto_deduction.manage休憩自動控除ルールを設定できる6時間超45分・8時間超1時間等の休憩自動控除ルールを設定できるテナント全体のみテナント設定閲覧はい(§10で「影響が画面の外に及ぶ操作」として明記)

1.11 通知設定

キー日本語ラベル説明適用スコープ含意される閲覧権限危険
notification.settings.manage通知チャネルを設定できるメール(SMTP)・Slack/Discord Webhook・Web Push等の通知チャネルを設定できるテナント全体のみテナント設定閲覧いいえ

1.12 権限管理

キー日本語ラベル説明適用スコープ含意される閲覧権限危険
permission.preset.manage権限プリセットを編集できる権限プリセットの内容(権限のON/OFFとスコープの組合せ)を新規作成・編集できるテナント全体のみ権限プリセット閲覧はい(要件§4で明記)
permission.assignment.manageメンバーへの権限プリセット割当を変更できるメンバーに対する権限プリセットの割当・解除を行える自部署 / 自部署+配下部署 / テナント全体権限プリセット閲覧・対象メンバーの実効権限ビュー閲覧はい(要件§4で明記。自己昇格防止ロジックの対象)

1.13 監査ログ

キー日本語ラベル説明適用スコープ含意される閲覧権限危険
audit_log.view監査ログを閲覧できる打刻・修正・承認・締め・権限変更などの不可変監査ログを閲覧できる自部署 / 自部署+配下部署 / テナント全体はい(要件§4で明記)

1.14 APIキー/MCP接続管理

キー日本語ラベル説明適用スコープ含意される閲覧権限危険
api_key.manageAPIキー/MCP接続を管理できる公開打刻API・MCPサーバー接続用のAPIキーの発行・失効を行えるテナント全体のみAPIキー一覧閲覧はい(発行された鍵は保有者の権限で操作可能になるためセキュリティ影響大)

2. 内部モデル: リソース×操作

2.1 リソース一覧

リソースキー説明
punch打刻の個別レコード(出勤・退勤・休憩入/戻)。1分単位・不変
attendance_day日次勤怠の集計結果(区分別時間数等)。punch/correction_request/leave_requestから導出される派生データ
correction_request打刻修正申請(起票〜承認のワークフロー)
leave_request休暇申請(起票〜承認のワークフロー)
leave_grant有給休暇の付与・残日数レコード
closing月次締めの状態と履歴
exportCSV/API出力ジョブ
alert_config36協定アラートの閾値設定、および算出済み超過状況の参照(v0.1は設定と状況表示を同一リソースとして扱う)
memberメンバー(従業員)アカウント
department部署ツリーのノード
tenant_settingsテナント単位の各種設定(日界・法定休日・フレックス・GPS・自動控除・通知チャネル等。target属性で設定領域を区別)
permission_preset権限プリセットの定義とメンバーへの割当
audit_log不可変監査ログ
api_key公開打刻API/MCP接続用のAPIキー

2.2 リソース×操作マトリクス

リソースreadcreateupdatedeleteapproveexecuteunlockassignrevoke
punch
attendance_day
correction_request
leave_request
leave_grant
closing
export
alert_config
member
department
tenant_settings
permission_preset
audit_log
api_key

attendance_dayは集計エンジンによる自動生成のみで、直接のcreate/update操作は持たない(修正はcorrection_request経由)。punchはupdate/deleteを持たず、事後修正は必ずcorrection_requestを通す(§4の「本人直接編集不可」原則をリソース設計に反映)。

3. 業務タスク権限 → 内部権限 展開対応表

業務タスク権限キー内部権限展開(resource:operation)
attendance.punch.proxypunch:create(対象範囲), attendance_day:read(対象範囲)
attendance.correction.request_for_otherscorrection_request:create(対象範囲), punch:read, attendance_day:read
attendance.correction.approvecorrection_request:approve, correction_request:read, attendance_day:read, punch:read
attendance.correction.view_allcorrection_request:read
attendance.record.viewattendance_day:read, punch:read
shift.manageshift_plan:create/update/publish(対象範囲), attendance_day:read
leave.request.approveleave_request:approve, leave_request:read, attendance_day:read
leave.request.view_allleave_request:read
leave.grant.manageleave_grant:create, leave_grant:update, leave_grant:read
leave.balance.viewleave_grant:read
leave.mandatory_five_days.viewleave_grant:read, leave_request:read
closing.executeclosing:execute, closing:read, attendance_day:read
closing.unlockclosing:unlock, closing:read, audit_log:read(締め関連エントリ)
closing.viewclosing:read
export.attendance.runexport:execute, attendance_day:read
alert.labor_limit.viewalert_config:read, attendance_day:read
alert.labor_limit.configurealert_config:update, alert_config:read
member.invitemember:create, member:read
member.profile.editmember:update, member:read
member.deactivatemember:delete, member:read
member.viewmember:read
department.managedepartment:create, department:update, department:delete, department:read
tenant_settings.calendar.managetenant_settings:update(target=calendar), tenant_settings:read
tenant_settings.flex.managetenant_settings:update(target=flex), tenant_settings:read
tenant_settings.gps.managetenant_settings:update(target=gps), tenant_settings:read
tenant_settings.auto_deduction.managetenant_settings:update(target=auto_deduction), tenant_settings:read
notification.settings.managetenant_settings:update(target=notification), tenant_settings:read
permission.preset.managepermission_preset:create, permission_preset:update, permission_preset:read
permission.assignment.managepermission_preset:assign, permission_preset:read, member:read
audit_log.viewaudit_log:read
api_key.manageapi_key:create, api_key:revoke, api_key:read

4. 標準プリセット3種の権限割当表(v0.1同梱)

凡例: セルの値は付与スコープ。「―」は未付与。「※」は上位権限のON操作に伴い自動的に有効になる(閲覧の含意)ため、プリセット上は明示的な追加ON不要であることを示す。

業務タスク権限管理者マネージャーメンバー
attendance.punch.proxyテナント全体
attendance.correction.request_for_othersテナント全体
attendance.correction.approveテナント全体自部署+配下部署
attendance.correction.view_allテナント全体※自部署+配下部署※
attendance.record.viewテナント全体自部署+配下部署
leave.request.approveテナント全体自部署+配下部署
leave.request.view_allテナント全体※自部署+配下部署※
leave.grant.manageテナント全体
leave.balance.viewテナント全体※自部署+配下部署
leave.mandatory_five_days.viewテナント全体自部署+配下部署
closing.executeテナント全体
closing.unlockテナント全体
closing.viewテナント全体※自部署+配下部署
export.attendance.runテナント全体自部署+配下部署
alert.labor_limit.viewテナント全体※自部署+配下部署
alert.labor_limit.configureテナント全体
member.inviteテナント全体
member.profile.editテナント全体自部署+配下部署
member.deactivateテナント全体
member.viewテナント全体※自部署+配下部署
department.manageテナント全体
tenant_settings.calendar.manageテナント全体
tenant_settings.flex.manageテナント全体
tenant_settings.gps.manageテナント全体
tenant_settings.auto_deduction.manageテナント全体
notification.settings.manageテナント全体
permission.preset.manageテナント全体
permission.assignment.manageテナント全体
audit_log.viewテナント全体
api_key.manageテナント全体

メンバープリセットはカタログ上の権限を一切持たない。全メンバー共通の自分打刻・自分の申請起票・自分の記録閲覧は、プリセットに依らない固定のセルフサービス権限として別途常時付与される(本カタログの対象外)。

レビュー論点の精査(2026-08-22)

v0.2 のスコープ実判定・カスタムプリセット編集UIの実装により、当初の論点の多くが解消した。

対応した

  • department.manage を危険フラグに格上げ。スコープの実判定(apps/api/src/lib/scope.ts)が 入り、部署の移動が「誰が誰を閲覧・承認できるか」を変えるようになったため、実質的に権限変更に あたる。機械可読な正は packages/authz/src/catalog.ts

実装により解消した

  • マネージャープリセットのスコープ粒度(課長=自部署 / 部長=配下含む): カスタムプリセット 編集UIが v0.2 で実装され、各社が役職に応じたプリセットを作れるようになった。同梱プリセットは あくまで出発点
  • permission.preset.manage / permission.assignment.manage の意味: 編集UIが実装され、 同梱3プリセットの枠を超えて機能するようになった
  • 危険フラグと §10 コンテキストヘルプの切り分け: 別軸として実装で確定した。 §10 は HelpTip(全画面の説明)、危険フラグはプリセット編集画面での重点表示。 承認系は前者の対象だが後者ではない、という当初の切り分けで問題ない

設計として受け入れる(変更しない)

  • leave.grant.manage の危険フラグは維持。付与日数を誤ると年5日義務などの法定要件を 満たせなくなり、かつ遡及して影響するため、締め解除・権限管理と同列でよい
  • tenant_settings は単一リソース + target 属性。「日界だけ設定できるが GPS は触れない」 のような細粒度が必要になった時点でリソース分割を検討する。カタログ側は業務タスク単位で 既に分かれているため実害はない
  • alert_config は設定と状況閲覧を同一リソース。別ロールに分けたいニーズが出たら分離する
  • notification.settings.managetenant_settings の一部として展開。同上

継続検討(実運用の様子を見る)

  • 代理打刻 attendance.punch.proxy / 代理申請の解放範囲: 同梱プリセットでは管理者専用の まま。代理打刻は「客観的な記録」という前提を崩しうるため慎重でよい。punch_eventsactor_id を持つので誰が代理したかは追跡できる。マネージャーへ解放したい会社は カスタムプリセットで対応できる
  • エクスポートの追加ガード: 誰がどの月を出力したかは監査ログに記録済み。承認必須化や ダウンロード履歴の強調表示は、実際に運用してから必要性を判断する