審査を担当する方に向けて
お客様のデータをどう扱うか、仕組みとして書きます
以下の各セクションは、当社がセキュリティをどれだけ重視しているかではなく、製品がどう動作するかを説明します。公開文書に裏付けがある記述には、その文書を示します。
このページが主張しないこと。GetMyBotは第三者によるセキュリティ認証を保有せず、可用性のコミットメントを公表せず、規制対応の準拠も主張しません。審査プロセスにそのいずれかが必要な場合は、プラットフォーム上に構築を始める前に、どれが必要かをお知らせください。
誰が何を見られるか
分離はアプリケーション側で行っています。そう明記します
ボットを指定するリクエストはすべて、ハンドラーが動く前に呼び出し元のそのボットへのアクセス権を解決します。このチェックはアプリケーション層にあります。行レベルセキュリティのポリシーはデータベーススキーマに存在しますが、実行時には適用されていません。これは推測ではなく当社からお伝えすべき事実です。
- アクセス権はリクエストごとに解決します
- URL内のボットは、実際にアクセス権を持つアカウントと照合され、解決されたアクセス権はリクエストとともに運ばれます。各ハンドラーが導き直すことはありません。
- 無関係な相手には存在しないidと同じ応答
- アクセス権がまったくない場合は404を返すため、トークンを使って自アカウント外のボットの存在を調べることはできません。アクセス権はあるが個別の権限がない場合は403を返します。
- 権限はアカウント単位ではなくボット単位
- 削除、譲渡、トークンのローテーションといった所有者向けの操作はボットの所有者に留まり、アクセスリスト経由で委譲することは一切できません。
キーの保管方法
読み戻す必要があるものは暗号化、ないものはハッシュ
ボットトークンと連携の認証情報はサービスが使わなければならないシークレットなので、暗号化します。パスワードとAPIトークンは読み戻す必要がないので、代わりにハッシュ化します。
- 保存時はAES-256-GCM
- ボットトークンと連携の認証情報は、AIプロバイダーのキーも含め、データベースに届く前にAES-256-GCMで暗号化されます。
- 通信はTLS
- アプリ、ウェブサイト、当社サーバーの間の通信はすべてTLSを使用します。公開しているプライバシーポリシーにも記載しています。
- パスワードはハッシュ、二要素も利用可能
- アカウントのパスワードはargon2idのハッシュとして保存し、読める形で保持することはありません。時刻ベースのワンタイムパスワードによる二要素認証をアカウントで利用できます。
プロンプトはどうなるか
プロバイダーはお客様のもの、本文は残しません
AI機能には必ず2つの問いが向けられます。誰がリクエストを見るのか、そして後に何が書き残されるのかです。どちらにも短い答えがあります。
- プロバイダーに依存しない振り分け
- エージェントは、お客様が設定したOpenAI互換のエンドポイントに、お客様のキーで接続します。その周囲のジャーニーのロジックは特定のベンダーに縛られていません。
- プロンプトと回答はハッシュで保存
- 実行を記録する際、プロンプトと回答は内容のSHA-256ハッシュとサイズに置き換えられます。本文はトレースに書かれず、それを読み戻せる別の生データ保管場所もありません。
- モデルの学習には使いません
- プライバシーポリシーにはっきり書いています。ボットとサブスクライバーがやり取りする内容はお客様のもので、サービスを提供するためだけに処理し、販売もモデルの学習への利用もしません。
後から確認できること
読んでも漏洩にならない記録
起きたことの記録が役に立つのは、その記録を安全に保てる範囲までです。だから伏せ字は、誰かが見るときのフィルターではなく、記録そのものの一部です。
- 監査ログはペイロードを持ちません
- 監査の1行は、操作、対象、結果を示します。そのメタデータに入るのは識別子、種類、件数であり、操作対象の中身が入ることはありません。
- 認証情報らしいフィールドは許可リスト方式
- 外部呼び出しはメソッド、アドレス、ステータス、所要時間を残し、アクションは名前、引数名、結果の種類を残します。伏せ字処理が知らないフィールドは保持されず破棄されるため、珍しい名前を付けてもシークレットは漏れません。
- 生の内容には明かすものがありません
- 内容は入口で伏せられるため、後から解除できる未加工のコピーは存在しません。開示用のエンドポイントは、もともと安全なフィールドへのアクセスを制限して監査するもので、保持クラスが許可しない限り閉じたままです。
どれだけ残り、どう消えるか
データの持ち出しは機能であって、問い合わせ案件ではありません
保持期間はクラスごとに設定し、放置して増やすことはしません。削除の各段階には、エンドポイントか公開されたコミットメントが対応します。
- 実行記録は決められた期間で失効します
- 記録された実行のうち、内容は機微であり寿命も短いほうです。既定で7日、実行メタデータはクラスに応じて30日、90日、365日です。内容がメタデータより長く残ることはありません。
- 顧客1人単位の書き出しと削除
- サブスクライバー1人分のデータはAPIから書き出しまたは削除できます。顧客データの各カテゴリーをどれだけ保持するかは、固定値ではなく設定です。
- 法令が求める分を除いたアカウント削除
- 自分のデータの写し、訂正、削除を請求できます。公開しているポリシーでは30日以内の回答をお約束しています。会計上の規則が求める場合、決済記録は保持されます。
すべてより少なく渡す
1つのトークンは1アカウント、1組のスコープ、1つの有効期限
プログラムからのアクセスは、全部か無かではありません。単位はスコープであり、トークンはその人ができることを広げるのではなく狭めます。
- 読み取りと書き込みは別のスコープ
- スコープはリソースとアクションの組み合わせなので、レポート用の連携には書き込みを一切与えずに読み取りだけを付与できます。スコープが足りない場合は403を返します。
- 1つのトークン、1つのアカウント
- トークンが使えるアカウントはちょうど1つです。ほかのアカウントのボットには404を返し、これは無関係な相手に返すものと同じです。そのためトークンでスコープ外のidを探ることはできません。
- 表示は1度だけ、保存はハッシュ
- トークンの値が表示されるのは作成時だけです。サーバーはそのハッシュを保持するため、紛失したトークンは復元ではなく再発行になります。作成時に有効期限も設定できます。
ほかに誰が触れるか
リストは短く、公開しています
ここに載るのはプライバシーポリシーが名指ししているものだけです。文書を示せないことについては、安心させる言葉を置くのではなく、このセクションは何も述べません。
- サービスは欧州連合で稼働しています
- プライバシーポリシーには、サービスとそのデータベースが欧州連合内のホスティング事業者で稼働すると記載しています。現時点で第2のリージョンは提供しておらず、主張もしていません。
- 名前を挙げている処理者
- 分析、クラッシュレポート、プッシュ配信にGoogleを利用します。接続するチャンネルにはTelegram、Meta、VKを利用します。有料プランの決済は決済事業者が処理します。ウェブサイトの分析はMatomoとYandex Metricaを通じて行います。
このページに答えがない項目が審査に必要な場合
その質問をお送りください。具体的な答え、あるいは率直な「できません」のほうが、裏づけ以上のことをほのめかすページより、双方にとって有用です。
セキュリティについて質問する