セキュリティ方針
最終更新: 2026 年 5 月 5 日
1. セキュリティ目標
GuestPort (ゲストポート) は、 申請受付・来訪者管理・名刺データ化を 1 本に束ねた 業務システムとして、 個人情報の取扱いに対し政府機関相当のセキュリティ水準を 上回ることを目標に設計しております。 月額制のクラウド型サービスと比較して、 特に次の点を重視しております。
- 個人情報を 運営者ネットワーク内で完結して扱える構成(外部送信なしで運用可能)
- 画像からの文字読み取り(OCR)も ローカル完結を既定とし、必要なときのみ外部の AI 機能を任意で利用できます
- ログインは「パスキー」と呼ばれる端末固有認証を主軸とし、パスワード単体の漏洩 によるリスクを排除しております
- 通信・データベース列・画像本体の 3 段階で暗号化を行い、 万一漏洩した場合の影響範囲を最小限に抑えます
- 操作履歴(監査ログ)に改ざん防止の仕組みを組み込み、 不正な編集を後から検知できる構成です
2. 認証
- パスキー(FIDO2 / WebAuthn)を主軸としております。 お使いのスマートフォンや YubiKey 等を端末認証器として登録すれば、 パスワードを入力せずに安全にログインいただけます。
- ワンタイムパスコード(TOTP、Google Authenticator / 1Password 等で 生成される 6 桁の数字)を 2 段階認証の代替手段としてご利用いただけます。 紛失時の復旧用にリカバリコードを 10 個発行しております。
- パスワード方式は補助手段として提供し、漏洩耐性の高い 暗号化アルゴリズム(Argon2id)で保管しております。
- 管理者・編集者ロールには 2 段階認証(パスキー または TOTP)を 必須としており、未登録のままではログインを完了できません。
- 重要操作(削除・権限変更・MFA 端末の追加削除 等)の直前には、 5 分間有効な追加認証(sudo モード)を要求いたします。 一括完全削除など特に影響の大きい操作では、 1 度の認証で 1 度だけ実行できる「使い切り」のトークン消費方式を採用しております。
- 短時間に多数のログイン失敗があった場合は、アカウント・接続元・ 導入企業の 3 層単位で自動的に試行を制限いたします。
3. 暗号化(3 段階)
| 対象 | 暗号化方式 |
|---|---|
| 通信 | TLS 1.3 + HSTS preload による HTTPS 強制 |
| データベース | AES-256-GCM(認証付き暗号)でフィールド単位に暗号化。 氏名・電話番号・メールアドレス・住所・メモ・名刺フィールド全体 |
| 画像 | 画像 1 件ごとに発行する Data Encryption Key(DEK)で AES-256-GCM 暗号化してストレージに保管。DEK 自体も テナント鍵でラップして保存 |
鍵は「鍵で鍵を守る」 多重構造 (エンベロープ暗号) で管理しております。 最上位の親鍵(Master Key)から導入企業ごとの専用鍵を導出し、 さらに画像 1 枚ごとに専用 DEK を発行する 3 階層です。 影響範囲を局所化でき、鍵の入れ替え(ローテーション)にも対応できる構成です。 Master Key は環境変数または KMS(Azure Key Vault / AWS KMS / HashiCorp Vault)を選択できます。
4. データへのアクセス制限
- データベース層で 行レベルセキュリティ(Row Level Security) を有効化しており、他テナントのデータが物理的に取り出せない ように構成しております。アプリ層のロジックに依存しない多層防御です。
- アプリは RLS バイパス権限を持たない専用 DB ロール で接続しております。 アプリのバグで万一テナント絞り込みが漏れた場合でも、 データベース層で他テナントの行が物理的に閲覧できないよう構成しております。 DB 管理権限とアプリ実行権限を分離する最小権限原則に沿った構成で、 データベースの統計情報経路を含めた既知の情報漏洩経路への対処も組み込んでおります。
- アプリ層では管理者・編集者・閲覧者の 3 ロールで権限を分け、 業務上必要のないデータが見えない構成にしております。
- 外部システム連携用の汎用 API キー機能は、 アプリ単体で完結する運用方針に 合わせて意図的に提供しておりません。 メール送信のみが外部依存となり、 それ以外のデータは導入企業のネットワーク内で完結いたします。
5. ブラウザ側の防御(セキュリティヘッダ)
すべての画面に最新のセキュリティヘッダを付与し、悪意あるスクリプト 実行や他サイトからの不正な埋め込みを防いでおります。
- Content-Security-Policy(CSP): リクエストごとに 発行される nonce 方式 + strict-dynamic で許可スクリプトを限定
- HSTS: HTTPS 通信を強制(preload 対象)
- X-Frame-Options: 他サイトからのフレーム埋め込み禁止
- Permissions-Policy: カメラのみ許可、それ以外は無効
- Cross-Origin-Opener-Policy / -Embedder-Policy / -Resource-Policy: ウィンドウ・リソース・埋め込みコンテキストを同一オリジンに限定
- Cache-Control: no-store, private: 個人情報を含むページ・API レスポンスを中継プロキシ・ブラウザに キャッシュさせない構成
- 内部用ヘッダ
x-middleware-subrequestを含むリクエストを 一律拒否し、認可ミドルウェアのバイパス (CVE-2025-29927) を防いでおります
6. 入力検証と一般的な攻撃への対策
すべての入力欄に厳格な型と桁数の検証を行い、 想定外の値を受け付けない 設計です。 代表的な攻撃に対しては次の対策を講じております。
- SQL インジェクション: 安全な ORM のみで操作、生クエリは禁止
- クロスサイトスクリプティング (XSS): React の自動エスケープに加え、 CSP nonce + サニタイズライブラリを併用
- クロスサイトリクエストフォージェリ (CSRF): SameSite=Strict クッキーと
__Host-プレフィックスで防御 - CSV 数式インジェクション (CSV Formula Injection): エクスポート時、
=/+/-/@/ TAB で始まる cell 値を 0x09 (TAB) で無効化し、 Excel / LibreOffice / Google Sheets の数式評価を防ぎます。 - メールヘッダインジェクション (CRLF / U+2028 / U+2029): 送信前に件名・差出人名・宛先のすべてに対し改行系制御文字を検出した時点で 送信を拒否し、ヘッダ分割による任意 BCC 追加等を防ぎます。
- 画像のメタ情報(撮影位置・カメラ機種等の EXIF)は受領時に 必ず削除いたします。
- パストラバーサル / ZIP Slip など、ファイル経路を扱う処理は 正規化 + 境界チェックで防御
7. 公開フォームの不正利用対策
イベントの公開申請窓口 (/apply/<slug>) は、 ログイン不要でアクセスできる代わりに、ボットによる大量送信や メールマジックリンクの踏み台化を防ぐため次の対策を講じております。
- 多層レート制限: 接続元 IP・申請メールアドレス・イベント単位の複数軸で時間あたりの 上限を設けております。 並行アクセス時もデータベース側のロック機構で 正確にカウントいたします。
- ALTCHA (proof-of-work CAPTCHA): ブラウザ側で計算量証明を行うことでボットを抑制します。 cookie や追跡情報を一切使わない方式で、外部サービスへの送信もありません (オンプレ完結)。
- 画像 OCR API も同様に接続元 IP 単位でレート制限を行い、 大量画像の送り付けを抑止しております。
- メール認証マジックリンクは 24 時間有効、 1 度使うと無効化される single-use トークンです。
8. 監査ログと改ざん検知
- ログイン・名刺の閲覧・編集・エクスポート・設定変更・管理操作・ イベント受付の各操作をすべて監査ログに残します。
- ログテーブルは append-only(追記のみ可) で、さらに 1 件ごとに直前のログのハッシュ値を含めるハッシュチェーン方式 によって改ざんを検知できます。
- 管理者向け画面でハッシュチェーンの整合性検証をオンデマンドで実行可能で、 検証時刻・全件数・最初の不整合 ID を即座に確認できます。
- ログには PII(氏名等)を直接含めず、操作種別・対象 ID・接続元 IP・ ユーザー UA のみを記録する設計です。
9. 不審操作の自動検知
監査ログを定期的にスキャンし、 一般的な不正利用のパターンに合致する 挙動を自動で検出いたします。 検出時は管理者へメール通知を行い、 管理画面の監査ログにも記録いたします。 主な検知観点は次のとおりです (具体的な閾値は運用上の機微に該当するため非公開)。
- 短時間に通常業務想定を大きく上回る名刺閲覧
- 業務時間外における大量のデータエクスポート
- 同一ユーザーが短時間に複数の接続元 IP からログインする挙動
検出ロジックは定期的に自動実行されるほか、 管理者画面から オンデマンドで実行することも可能です。 検知時の対応手順 (本人確認・アカウント無効化・セッション失効・鍵ローテーション等) は内部規程に定めております。
10. 利用ライブラリと出自管理
- 採用するオープンソースは Apache-2.0 / MIT / BSD 系に絞り、商用利用に制限のあるライセンス(AGPL / SSPL 等)は 採用しておりません。
- 日本国外で開発されたソフトウェアを採用する際は、ソースコードと 通信挙動を独自に検証したうえで、必要なハードニング (ネットワーク隔離・モデル pre-stage + SHA-256 検証 等)を施しております。 検証結果は社内記録として保持しております。
- 依存関係一覧(SBOM)を継続的に作成し、ライセンス・既知の脆弱性を 機械的にチェックしております。
11. データ保管期間と削除
利用目的に応じて保管期間を区分し、 期間経過後は自動的に物理削除いたします。 詳細な期間と削除手順は 個人情報保護方針 のページをご参照ください。
- 監査ログは 3 年間保管。 期間中の編集・削除は DB レベルで物理的に 拒否しております (append-only + UPDATE/DELETE REVOKE)。
- ゴミ箱に入れた名刺・連絡先・イベントは 30 日後に自動物理削除。 復元したい場合は 30 日以内に管理画面から操作可能です。
- アプリのバックアップは導入企業の運用ポリシーに従って取得・保管されます (既定推奨は日次取得 + 30 日世代保管)。 バックアップの暗号化鍵は本番系とは別経路で管理することを推奨いたします。
- 鍵 (`MASTER_KEY`) のローテーションは 90 日周期を推奨。 運用ポリシーに応じて短縮可能です。
12. データの所在と越境移転
本アプリで取り扱う個人情報は、 導入企業さまが指定する 国内サーバー に保管いたします。 海外への越境移転は原則として行いません。
- オンプレ導入時は導入企業さまの社内ネットワークに完全に閉じます (外部送信は SMTP のみ)
- クラウド導入時は国内リージョン (Azure Japan East / AWS ap-northeast-1) を既定とし、 別途 SLA で明記いたします
- 外部 AI クラウド (OpenAI 等) の利用は 運営者設定によるオプトイン制。 既定では完全にオフです
13. 監査・第三者点検対応
内部監査・外部監査人の点検にご対応するため、 以下の機能と窓口を整備しております。
- 管理画面から監査ログを画面上で確認可能。 期間検索・操作種別フィルタに対応
- ハッシュチェーン整合性検証はオンデマンドで実行でき、 検証結果を画面 / スクリーンショットに残せます
- ロール別の権限境界は内部規程に集約。 監査人へは個別に提示いたします
- SBOM (依存ライブラリ一覧 + ライセンス + 既知 CVE) を CycloneDX 形式で生成・提示可能
- 脆弱性報告窓口は本ページ末尾「脆弱性のご報告」 をご参照ください
14. インシデント発生時の対応
- 監査ログのハッシュチェーン検証で改ざんを早期発見
- 暗号鍵漏洩が疑われる場合、テナント専用鍵を入れ替えて再暗号化対応
- セッションの強制ログアウトを管理者画面から発行可能
- データベースは暗号化バックアップを定期取得し、世代管理しております (取得頻度・保管期間は導入環境ごとに設定)
15. 脆弱性のご報告
本アプリに脆弱性を発見された場合は、お問い合わせ窓口 (プライバシー方針 ページ末尾の連絡先)までご連絡ください。修正版のリリースまでの間、 内容を公開しないようご協力をお願いいたします (責任ある開示 / Responsible Disclosure の方針)。