データ層でのテナント分離
すべてのテーブルがワークスペース ID を持ち、リポジトリの全メソッドがそれを第一引数に取ります。渡し忘れれば他人のデータではなく「何も返らない」結果になります。一意キーもテナント単位なので、2 社が同じ部署名を使っても衝突しません。
セキュリティ
VKT は氏名、報告ライン、休暇の記録、経費の申請を預かります。どれも既定で機微な情報です。だから安全性はページの約束ではなく、システムの作り方で担保します。
すべてのテーブルがワークスペース ID を持ち、リポジトリの全メソッドがそれを第一引数に取ります。渡し忘れれば他人のデータではなく「何も返らない」結果になります。一意キーもテナント単位なので、2 社が同じ部署名を使っても衝突しません。
ボットトークンはデータベースに入る前に AES-256-GCM で暗号化され、レコードごとにランダムな nonce を持ちます。鍵は環境変数にあり、リポジトリには入りません。鍵の形式が不正ならサービスは起動を拒否します。
管理者は誰かが配るフラグではありません。アプリをインストールした人、または報告ツリーの頂点です。全社集計を見られるか、設定を変えられるかも同じ判定で決まり、Slack でも Web でも共通です。
保存期間は設定できます。期間が切れると、申請の内容・メモ・領収書ファイルは削除され、記録には金額・ステータス・承認者だけが残ります。経理には足り、個人の特定には足りない情報です。
セキュリティ
ワークスペース内の人データについて、当方は処理者として行動します。展開前にデータ処理契約を用意できます。再委託先、保存期間、削除手順はご要望に応じて文書でご説明します。