導入(問題提起)
「誰でも何でもできる」業務システムは、いつか必ず事故を起こします。Excelでのファイル共有からWebシステム開発へ移るタイミングこそ、アクセス制御(権限)と監査ログを“最初から”入れておくべきです。権限が曖昧だと情報漏えい・誤操作・不正の温床になり、監査性がないと原因追跡ができず改善も進みません。本稿は小規模でも効く設計原則と、Pythonでの実装ポイントを詳しく解説します(SEO: Webシステム開発/業務システム/Python/Excel Web化)。
課題の詳細説明
小さな会社で起きがちな“権限と監査”の落とし穴:
- 承認なしに重要データを更新・削除してしまう(ヒューマンエラー)
- 退職者や外注アカウントが放置され、無制限アクセスが継続
- 事故が起きても“誰が・いつ・何をしたか”が辿れず、再発防止できない
- Excel Web化の過渡期に、Excel側の編集が残って二重系となり、責任境界が曖昧
- 管理者権限が一元化され、単一障害点(SPOF)になっている
解決方法
権限(Access Control)と監査(Audit)を次の原則に沿って設計します。
- 最小権限(Least Privilege):閲覧・登録・承認・管理を明確に分ける
- 職務分掌(SoD):作成者と承認者を分け、承認前は公開/反映しない
- 監査ログの不可逆化:改ざん困難な形で保存(ハッシュ鎖・外部出力)し、検索・エクスポート容易に
- アカウントライフサイクル:入社・異動・退職・外注契約の節目で権限更新/失効を運用に組み込む
- 重要操作の多要素:削除・承認・データエクスポートは二要素認証や再パスワード入力を要求
具体例
実装で陥りやすい点と、その対策を示します。
- ロール設計:
rolesテーブル+user_roles中間テーブルでユーザに複数ロールを付与 - コードの共通化:デコレータ/ミドルウェアで各エンドポイントのロールチェックを一元化
- モデル監査:各テーブルに
created_by/updated_by/atを持ち、別にaudit_logsで詳細操作を記録 - 強い操作の二重確認:削除・承認はパスワード再入力やTOTPを求め、意図しない実行を防止
- ログの出力:週次で外部ストレージ(S3等)に暗号化エクスポートし、改ざん検知(ハッシュ)を残す
Python Webアプリ(Bottle/FastAPI)なら、少ないコードでこれらを導入できます。Excel Web化の初期から組み込めば、後からの大規模改修を避けられます。
技術的な解説
データモデル(ユーザ/ロール/監査)
CREATE TABLE users (
id INTEGER PRIMARY KEY,
email TEXT UNIQUE NOT NULL,
password_hash TEXT NOT NULL
);
CREATE TABLE roles (
id INTEGER PRIMARY KEY,
name TEXT UNIQUE NOT NULL
);
CREATE TABLE user_roles (
user_id INTEGER,
role_id INTEGER,
PRIMARY KEY (user_id, role_id)
);
CREATE TABLE audit_logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER,
action TEXT,
entity TEXT,
entity_id TEXT,
at TEXT,
details TEXT
);
権限チェック(Bottle例)
from bottle import request, abort
def require_roles(*need):
def deco(fn):
def wrapper(*a, **kw):
roles = request.get_header('X-Roles','').split(',')
if not all(r in roles for r in need):
abort(403, 'forbidden')
return fn(*a, **kw)
return wrapper
return deco
監査記録の挿入(擬似)
def audit(user_id, action, entity, entity_id, details):
# DBにINSERT、同時に外部出力キューへ投入(後段でS3書き出し)
pass
導入の流れ
- 業務一覧とアクセス権の洗い出し(閲覧/登録/承認/管理)
- ロール設計と職務分掌の定義(承認前の公開可否、二要素の要否)
- 実装(共通ミドルウェア、モデル監査、ログ外部出力)
- 検証(テストシナリオ:権限越境不可、承認前は見えない、監査追跡可能)
- 運用(アカウント棚卸し、退職時失効、ログレビュー)
まとめ
- 最小権限+承認+監査が“効く基本セット”
- 実装は共通化して漏れを防止、強い操作は多要素で保護
- 監査ログは外部出力で不可逆性と可観測性を高める
問い合わせ導線
業務システムの権限設計・監査ログ実装は、お問い合わせよりご相談ください。Webシステム開発の初期からExcel Web化の運用まで伴走します。
Webシステム開発のご相談は monou まで