セキュリティ
Makibaのセキュリティ対策
Makibaが教会員の名簿・心訪記録・教会のデータをどう守っているか、実装している対策を網羅的にまとめています。
最終更新日:2026年5月24日
1. データの保管場所
教会員等の主要データは日本国内で完結する構成です。
- 主要データ—Supabase 東京リージョン (Northeast Asia) — データベース・認証・ストレージ
- サーバーレス関数—Vercel
hnd1(Tokyo) に固定 - 管理プレーン—Vercel のビルド・ログ・メトリクス等は米国所在 (プライバシーポリシー第6条)
2. 暗号化
通信・保存・端末上の鍵管理を多段階で暗号化します。
- 通信—TLS で暗号化、HSTS で恒久化 (preload 申請済)
- 保存時—Supabase 基盤上で AES-256 により保存時暗号化
- パスワード—bcrypt で一方向ハッシュ化、平文では保持しない
- ポータルPIN / 出席PIN—同様に bcrypt ハッシュ化
- 牧会記録 (E2EE)—AES-256-GCM、鍵は PBKDF2 で 600,000 回反復導出。サーバーに鍵を一切送信せず、当社含む第三者は復号不可。本文と訪問種別 (カウンセリング・弔問・病院等) を暗号化対象とする
補足:牧会記録の復号鍵はブラウザのメモリ内にのみ保持され、アイドル時 (15分) およびタブ背面化時 (5分) に自動消去されます。データベースが第三者の手に渡っても本文と訪問種別は読み出せません。
透明性:対象会員ID・訪問日時・フォローアップ期限は機能上必要なため平文で保管します (一覧表示・期限通知のためにサーバー側でフィルタが必要)。「誰がいつ訪問されたか」は当社運用者にも見える可能性がありますが、面談内容と訪問種別は暗号化されています。
3. アクセス制御
他の教会のデータが見える設計は存在しません。同じ教会の中でも役割に応じてアクセス範囲を絞り込めます。
- テナント分離—Row Level Security (RLS) をすべてのテーブルに適用、教会境界を DB レベルで遮断
- 権限分離—役割 (管理者/職員) × モジュール (会員・出席・行事・心訪・文書・収支等) の二軸で権限を割当
- 再帰防止—自己参照ポリシーは SECURITY DEFINER 関数経由で評価し、無限再帰を回避
- 所属検証—アクセスログ書込み・招待・出席記録投入等で外部 ID の church_id を必ず照合
4. 認証とセッション
ログイン情報の漏えいに備えた多要素認証と、放置端末への二段構えの自動ログアウトを標準で備えています。
- パスワード認証—Supabase Auth による email + パスワード認証
- 多要素認証 (MFA)—認証アプリ (TOTP) による 6 桁コード。管理者ロールで有効化可能
- 招待時の初期パスワード—招待者ごとにランダム生成、初回ログイン時に変更を強制 (app_metadata で本人解除不可)
- アイドル自動ログアウト—/admin 内で 15 分操作なしで警告 → 60 秒後に強制ログアウト
- 絶対セッションタイムアウト—ログインから 12 時間で活動状況に関わらず強制ログアウト
- 牧会記録の復号鍵—アイドル 15 分・タブ背面化 5 分でブラウザのメモリから自動消去
- ポータル認証 Cookie—HttpOnly + Secure + SameSite=Lax、署名鍵のローテーション grace period サポート
5. 監査と追跡
機微なリソースに対する操作は、誰が・いつ・何に対して行ったのかを記録します。
- 対象リソース—教会員台帳・心訪記録・教会設定・ユーザー管理・ドキュメント・権限/ロール変更
- 記録項目—操作者・操作種別 (閲覧/作成/更新/削除)・対象 ID・タイムスタンプ・IP・User-Agent
- 閲覧—契約教会の管理者専用画面 (フィルタ・ページング付) で参照可能
- CSV エクスポート—内部不正・端末紛失・誤送信のリスクを下げるため、会員台帳の CSV エクスポート機能を意図的に提供しない
6. インシデント時の対応
漏えい等を認知した場合の通知タイムラインを利用規約に明文化し、内部マニュアルとして対応手順を整備しています。
- 通知期限—個人情報の漏えい等を認知してから 72 時間以内に契約教会へ第一報 (利用規約第8条)
- 対応フロー—検知 → 初動 → 影響範囲評価 → 通知 → 恒久対応 を内部マニュアル化、PPC への報告義務にも対応
- 第三者通報—security.txt / 脆弱性開示ポリシー (VDP)で報告窓口を公開
7. 攻撃面の縮小
ログイン試行回数・アップロード可能ファイル・配信時のヘッダ・URL スキームなど、攻撃面を多層に絞り込んでいます。
- レート制限—Supabase DB ベースの分散レートリミッタで認証・サインアップ・ダウンロード・check-in 等にIP/識別子別の上限を適用 (cold start で抜け落ちない)
- 画像アップロード—マジックバイトでファイル形式を判定、SVG 等のスクリプト実行可能形式を拒否
- 公開ファイル名—推測不可能な 32 文字 hex 乱数で生成
- URL スキーム—外部リンク・埋め込みでは allowlist 制 (
http(s):のみ許可、javascript:等を拒否) - 入力サニタイズ—ゲスト名・カスタムフィールド・rich text 等のユーザー入力に sanitize-html を適用
- Content-Security-Policy—
frame-ancestors 'none'でクリックジャッキング遮断、外部 origin は allowlist (Supabase / YouTube / Vimeo / Google Maps / zipcloud のみ) - その他セキュリティヘッダ—HSTS / X-Content-Type-Options nosniff / X-Frame-Options DENY / Referrer-Policy strict-origin-when-cross-origin / Permissions-Policy で camera/mic/geo を絞込
8. 開発・運用
依存ライブラリ・バックアップ・復元手順を定常運用に組み込んでいます。
- 依存ライブラリ—GitHub Dependabot を有効化し、本番影響のある脆弱性は重大度別の対応期限 (Critical 24時間・High 7日・Medium 30日) で修正
- バックアップ—Supabase の日次バックアップに依拠、保管時 AES-256 暗号化
- DR 復元—半年に 1 回 (4月・10月) の復元ドリル、復元手順書とテンプレを整備
- マイグレーション—すべてのスキーマ変更を SQL ファイルで管理、ロールバック手順を文書化
- インフラ—Vercel / Supabase の高可用性インフラに依拠 (SOC 2 監査済)、Tokyo リージョン固定
9. 準拠する法律と規格
日本の個人情報保護法に準拠して運用し、基盤として用いる事業者はいずれも国際的なセキュリティ認証を取得しています。
- 個人情報保護法 (APPI)—Provato Works合同会社は個人情報取扱事業者として、安全管理措置・委託先監督・越境移転の取扱い等を実施
- Supabase—SOC 2 Type 2 / ISO/IEC 27001 / HIPAA
- Vercel—SOC 2 / ISO/IEC 27001 / PCI DSS / HIPAA
- Stripe—PCI DSS Level 1
10. 脆弱性・インシデントの報告窓口
- メール—info@provatoworks.com
- 脆弱性開示ポリシー (VDP)—/security/vdp (対象範囲・Safe Harbor・SLA・重大度マトリクス)
- 機械可読—/.well-known/security.txt
法的文書はプライバシーポリシーおよび利用規約をご参照ください。
← トップに戻る