会社情報セキュリティ
運営事業者のデータは、その事業者だけのもの。データベースの1行単位まで。
OmniPMは、多くの運営事業者のパスポート、契約書、支払いの証憑、そしてオーナーの資金を、ひとつのプラットフォームで扱っています。それぞれをどのように分離し、何を暗号化し、誰が何を見られるのかを、具体的にご説明します。
運営事業者ごとのデータ分離
コードベースもデータベースもひとつ。すべての行に運営事業者を記録。誰のデータかを示せないリクエストは、推測せずに拒否します。
リクエスト
スタッフ、入居者、またはWebサイトが、セッションCookieかハッシュ化されたAPIキーでOmniPMを呼び出します。
session → operator_id運営事業者の特定
セッションから運営事業者を特定し、リクエストの最後まで保持します。後続の処理が推測する必要はありません。
AsyncLocalStorageデータ層
すべての読み取りは絞り込まれ、すべての書き込みには運営事業者が記録されます。別の運営事業者を指定した書き込みはエラーになります。
where: { operatorId }データベース側の安全装置
運営事業者の列は空にできません。別の運営事業者の親レコードの下に子レコードを作ろうとすると、トリガーが拒否します。
NOT NULL · triggers生のSQLはファイル単位で許可リストに登録し、各クエリの絞り込み方法も記録しています。新たに追加されたものは監査で不合格になります。
データ分離のテストはテストスイートで実行しており、データ分離の監査は毎回のリリース前に行う11項目のチェックのひとつです。
セキュリティ対策を、わかりやすい言葉で。
ログイン、セッション、ファイル、決済、メッセージ、AIについて私たちが行っていること。監査担当者ではなく、運営事業者の方に向けて書いています。
ログイン
パスワードとワンタイムコードはハッシュ化した形でのみ保存します。コードの有効期限は10分で、5回間違えると使えなくなります。
セッション
ログイン状態は一定時間で自動的に切れ、ログアウト時には確実に終了します。無効化されたアカウントは即座に締め出されます。
運営事業者ごとの分離
データベースへのリクエストはすべて、ひとつの運営事業者に紐づきます。誰のデータかを示せないリクエストは拒否されます。
権限に応じたアクセス
現場スタッフは割り当てられた画面だけを利用できます。オーナーが見られるのは自分の建物だけで、入居者の連絡先や本人確認書類は見られません。
非公開ファイル
パスポート、本人確認書類、支払いの証憑は非公開ストレージに保管され、開けるのはスタッフか、1時間以内に失効するリンクだけです。
決済
カード番号は保存せず、ご利用の決済サービスが保持します。決済とメッセージングのキーは暗号化しています。
検証済みの通知
決済サービスやメッセージングサービスからの通知は、OmniPMが処理する前に署名を検証します。
AIのアクセス
入居者データへのAIのアクセスは初期設定でオフです。スタッフごとに付与する読み取り専用の権限で、参照はすべて記録されます。
権限とアクセス
見られるのは、業務に必要な情報だけ。それ以上は見せません。
オーナーが入居者の連絡先、本人確認書類、支払い状況を見ることはありません。業者にはログインなしで、リンクから1件の作業だけを共有します。無効化されたアカウントは、次のクリックで拒否されます。
開発者の方へ
実装されている仕組みを、具体的に。
データの委託先
OmniPMが利用しているサービスです。決済とメッセージングのアカウントはお客様ご自身のもので、お客様のキーで接続します。
セキュリティのロードマップ
- スタッフ向けの二要素認証
- 本人確認書類の写真について、保存期間のルールを公開
- 第三者による侵入テスト
- AIとお客様のデータに関する方針の公開
脆弱性の報告
詳細と再現手順を添えて、security@omnipm.app までご連絡ください。
セキュリティ質問票へのご回答が必要ですか?お客様のチームと通話で、一つひとつご説明します。
ベータ版に申し込む