システム起因の自動補正・派生更新は操作ユーザーの項目権限チェックの外に置く(整合性維持のシステム責務として扱う)
設計判断
権限管理
判断
フィールド間の整合性ルール(選択肢の連動、派生値、正規化)に基づきシステムが自動で行う補正更新は、操作したユーザーのフィールド単位書込権限を通さないという設計判断。例: 親項目のみ書込権限を持つユーザーが親を更新した結果、連動ルール上書込不可の子項目が自動補正されることを許容する。
判断基準
- 補正は「ユーザーの直接編集」ではなく「システムによる整合性の維持」と位置づける。権限チェックの保護対象は「ユーザーの意図的な値の指定」であり、ルールによる派生的帰結は対象外と整理すると一貫する。
- 判断の分かれ目は「権限モデルへの忠実さ(権限外の補正が必要な行は失敗扱い)」 vs 「データ整合性(違反状態のレコードを残さない)」。整合性ルールがテナント設定として全ユーザーに可視・予測可能なら、整合性優先が自然。補正内容が機密値の推定や権限昇格に繋がる場合は逆。
- 整合性優先を選ぶ場合でも、トリガーとなる直接更新自体(親項目の更新)の権限チェックは維持する。権限をバイパスするのは派生部分のみ。
なぜ
派生更新にまで権限を要求すると、「正当な操作の結果として整合性が壊れたままになる」か「操作自体が不可解に失敗する」の二択になる。どちらもユーザーには説明困難で、整合性ルールの存在意義(常に成立する不変条件)も崩れる。
検証・記録
この選択はセキュリティ寄りの仕様判断なので、黙って実装せず利用者(プロダクトオーナー)に明示的に確認し、設計記録に「権限を経由しないことは意図的」と残す。将来のレビュアーが権限漏れバグと誤認して「修正」しやすい篇所のため。