セキュリティ
AppFlyはあなたの代わりにコードを書いて実行します。それがデータにとって何を意味するのか、分離の境界、暗号化されるもの、決して収集しないもの、退会時にすべてがどうなるかを正確にご説明します。
アプリ同士は互いにアクセスできません
各アプリには専用のPostgresデータベースとログインロールが発行され、ロールは REVOKE CONNECT … FROM PUBLIC で作成されます。分離はアプリケーションコードではなくデータベース自体の性質です。あるアプリのエージェントが書いたクエリは、試みたとしても別のアプリのデータには届きません。
各アプリはそれぞれ専用のコンテナとディスク上の作業領域で動作します。共有されるのはホストだけです。
シークレットは暗号化され、全体が表示されることはありません
プロバイダーキー、トークン、環境変数はAES-256-GCMで保存時に暗号化されます。ページに返されるのは末尾4文字のマスク表示だけなので、画面やビルドログから認証情報全体が漏れることはありません。
キーは生成されたアプリ自身の作業領域にある .env に書き込まれ、そこだけが読み取れます。当社が発行する環境変数は、当社がプロビジョニングするアプリのデータベースURLの1つだけです。
お客様の顧客データは当社のものではありません
AppFlyが保持するのは、アカウント、ストアのドメイン、プロンプト、生成されたコードです。ストアの顧客、注文、個人データを読むことはなく、Shopifyに要求する権限にも含まれていません。
Shopifyはすべてのアプリに3つのコンプライアンスWebhookへの応答を義務付けており、当社は3つすべてに応答します。顧客データに関する2つは、確認したうえで何も保持していなかったことをログに記録して応答します。マーチャントが後で記録を必要とする場合に備えたものです。
削除は標準動作です。サポートへの依頼は不要です
アプリを削除すると、コンテナ、データベース、ファイル、デプロイ、DNSレコード、アクセス権が削除されます。データベースの行は最後に削除されるため、途中で失敗しても孤立したリソースが残らず再試行されます。
Shopifyからアンインストールすると、ストアに属するすべてのデータが48時間以内に消去されます。5分ごとに実行される定期ジョブがアンインストール処理で完了できなかった分を片付けるため、中断した削除が稼働中のアプリとして復活することはありません。
ログアウトするとサーバー側でセッションが無効になります。アカウントを閉じると、プライバシーポリシー(英語)に記載のすべてが削除されます。
当社が守る境界
ログインが必要なページへのリクエストはすべて認証され、APIルートは未認証の呼び出しにHTMLのログインページではなく、読み取り可能な 401 を返します。
課金Webhookは署名され、リクエストの生の本文に対して検証されます。Webhookシークレットが未設定のデプロイではそのエンドポイントは 404 を返し(未署名は未認証であり、公開ではありません)、署名が不正な場合は 401 になります。
運用コンソールはパスワードと署名付きCookieで保護され、特権操作は汎用シェルのない固定の関数リストに限られます。公開サイトからはアクセスできず、robots.txt でも除外されています。
脆弱性の報告
再現できる詳細と影響の見込みを添えて、[email protected] までお送りください。受領をお知らせし、対応内容をご報告します。公開前に妥当な猶予をいただき、他のお客様のデータに対するテストはご遠慮ください。
セキュリティ以外のお問い合わせは [email protected] までどうぞ。