セキュリティ概要
製品に組み込まれている管理策を、わかりやすい言葉でまとめました。ご質問、ペネトレーションテスト報告書のご請求、脆弱性のご報告は [email protected] までお寄せください。
テナント分離
各ワークスペースの行は、アプリケーションのコードだけでなく、Postgres が強制する行レベルセキュリティによって分離されています。検索インデックスも、このポリシーを迂回するのではなく、その下で動くように作りました。アップロードされたファイルはワークスペースごとのキーで保存され、画像を除いてダウンロードとして配信されます。チャット内のファイルは、10 分で期限切れになるリンクを通じて訪問者に届きます。停止または解約されたワークスペースでは、すべての API キー、アプリとボットのトークン、セッション、チャット、リアルタイム接続が一斉に止まります。写真は、スマートフォンが書き込む位置情報やデバイス情報などのメタデータを取り除いて保存されます。
ID と認証
パスワードは Argon2id でハッシュ化します。誰でも自分のアカウントのセキュリティページから二要素認証をオンにできます。ブラウザ内で描画される QR コードを読み取り、コードで確認して、ワンタイムのリカバリーコードを保管するだけです。オフにするにはパスワードとコードの両方が必要です。同じページにはサインイン中のすべてのブラウザが一覧表示され、1 つだけ、またはそれ以外のすべてをサインアウトできます。ワークスペースは、メールドメインを限定したうえで、OpenID Connect による独自のシングルサインオンプロバイダーを追加できます。二要素認証をオンにしている人には、その場合もコードの入力を求めます。セッションはサーバー側で管理し、絶対有効期限と無操作時の期限を設けています。API キー、ボットトークン、アプリトークンはハッシュとして保存され、1 つのワークスペースと権限セットに限定されます。管理者は、全メンバーに二要素認証を必須にできます。すぐに適用することも、7 日または 14 日の猶予期間を設けることもでき、Kommio 自身のプラットフォーム管理者には二要素認証が義務付けられています。
認可
ロールが、権限と、閲覧できる会話の範囲、そしてメールアドレス、電話番号、支払い情報、IP アドレスといった機微なフィールドを表示するかマスクするか隠すかを決めます。自分が持っている以上の権限で、ロールを作成したり、メンバーを変更したり、誰かを招待したり、アプリを承認したりすることはできません。自動化は作成した人の権限で実行され、アプリはインストール時に管理者が承認したスコープの範囲で動作します。メンバーの無効化・削除・ロールの縮小、API キーの失効、ワークスペースの停止を行う前には、まず影響範囲が表示され、メールアドレス、キー名、ワークスペース名の入力が必要です。去るメンバーのルール、ボット、Webhook、アプリは、必要な権限を持つ同僚に引き継げます。作成者がいなくなったルールは、誰かが引き継ぐまで一時停止します。ID 書類、支払い情報、その他の個人データを保持するカスタム属性はタグを付けて同じルールに従わせることができ、「アクセス」ページでは、メンバーごとに、どの会話が見えるか、各種のデータがどう見えるかを確認できます。身分証やその他の個人データを含むファイルは、スレッドから、またはルールによってマークでき、以後は同じ権限に従います。ロールに応じて表示・マスク・非表示となり、AI プロバイダーには決して送られず、書き出しには閲覧できる人の分にしか含まれず、ワークスペースが身分証書類に設定した保持期間が過ぎると削除されます。
監査
すべての変更について、誰が、何を、変更前と変更後はどうだったかを記録します。マスクされた値の表示は独立した権限で、理由を添えられる専用の監査エントリーが書き込まれます。「セキュリティポリシー」ページには、過去 30 日間に誰がどの値を表示したかが、監査ログへのリンクとともに一覧されます。お客様のウェブサイトがサインイン時に連絡先の名前やメールアドレスを更新したり、以前の匿名チャットを統合したりした場合も、その変更は記録され、連絡先に表示されます。受信したメールはすべて、届いたままの形でも保存されます。保存期間は初期設定で 90 日(ワークスペースの設定)で、連絡先を消去するとすぐに削除されます。コピーをダウンロードできるのは、受信箱を管理し、メッセージ全体をマスクなしで読める人だけで、ダウンロードはすべて監査ログに記録されます。
暗号化
チャネルの認証情報、SSO のシークレット、AI プロバイダーのキー、各種トークンは、エンベロープ暗号化によって保存時に暗号化され、一度保存したあとは二度と表示されません。通信はすべて TLS で保護します。
ウェブサイトチャット
ワークスペースのチャットをどのサイトに表示できるかは、ブラウザ自身が強制します。訪問者が連絡先になるのは、会話が生まれたときだけです。匿名の訪問者はブラウザ内のランダムなトークンだけで識別され、ブラウザフィンガープリントは使いません。サイトが本人であることを保証するサインイン済みの訪問者も、書き込むか、エージェントがチャットを始めるか、メールアドレスを残すまでは、連絡先ではなくチャットセッションとして保持されます。30 日間(この期間はワークスペースの設定です)見かけなかったセッションは削除されます。閲覧状況のコンテキストは最初のメッセージと一緒にしか送られません。お客様のサイトは、自社のサーバーが発行する署名でサインイン済みの訪問者を識別します。チャットに入力されたメールアドレスだけで、2 人の人物が結び付けられることはありません。訪問者の IP アドレスを完全に保存するか、短縮して保存するか、保存しないかは、ワークスペースごとに決められます。
AI アシスト
管理者が Kommio Cloud の無料 AI 枠またはワークスペース独自のプロバイダーキーでオンにするまで、機能はオフのままです。送信されるのはタスクに必要なものだけです。直近のメッセージ、お客様の名前、そしてメールアドレスや電話番号は、依頼した人が閲覧を許可されている場合に限ります。支払い情報や身分証のフィールド、メッセージに入力されたカード番号、返信提案における非公開メモ、カスタム属性は決して送信されません。Kommio はプロンプトも回答も保存せず、予算管理のための利用回数だけを記録します。オプションの AI エージェントはナレッジベースだけをもとに回答し、社内向けのコンテンツをお客様に見せることはなく、連絡先のメールアドレスや電話番号を受け取ることもなく、確信が持てないときは人に引き継ぎます。
受信と送信の信頼性
プロバイダーからの Webhook は、解析する前に署名を検証します。お客様が指定した URL(Webhook、ボット、アプリ、AI プロバイダー)への外向きリクエストは、プライベートアドレス帯を拒否し、サイズと時間に上限を設けた SSRF 対策済みのクライアント 1 つを必ず経由します。送信する Webhook、ボットへの配信、アプリフックには署名を付けます。HTML のメール本文は、保存する時と表示する時の 2 回サニタイズします。セルフホスト版では、アップロードまたは受信したすべてのファイルを保存前に ClamAV でスキャンできます。検出されたファイルは拒否されるかプレースホルダーに置き換えられ、配信されることはありません。初期設定はオフで、Kommio Cloud ではまだファイルをスキャンしていません。
ブラウザ
エージェントアプリは厳格な Content Security Policy のもとで配信されます。スクリプト、フォント、通信は同一オリジンのみ、フレームやオブジェクトは許可せず、外部サイトへの埋め込みもできません。アプリのパネルは、署名付きで短命なコンテキストを持つサンドボックス化された iframe の中で動きます。
運用
最小権限のデータベースロール、変更ごとの依存関係とコンテナのスキャン、テストスイートがすべて通過し、過去のリリースからのアップグレードをリハーサルして初めて出荷されるリリース、そして文書化された脆弱性開示プロセス。Kommio Cloud はダウンタイムなしで展開されます。新しいバージョンが旧バージョンの横で起動し、準備が整った時点で引き継ぎます。セルフホスト版には組み込みのバックアップがあり(初期設定はオフ)、暗号化したデータベースダンプと保存ファイルをスケジュールに沿ってディスクやバケットに書き出します。暗号化キーがバックアップに含まれることはありません。Kommio Cloud では、サインアップにアドレス単位とメールドメイン単位のレート制限を設け、使い捨てのメールアドレスは受け付けません。セルフホスト版のバックアップは毎週テスト用データベースに復元して検証され、成功しない状態が続くとアラートが出ます。オフラインで保管するエスクロー鍵に向けて暗号化することもできます。
脆弱性のご報告
[email protected] までメールをお送りください。2 営業日以内に受領をお知らせし、解決までご連絡を続けます。