セキュリティ
Workflow Trigger Extensionsがどのような基盤で構築されているか、どこで実行されるか、ストアのデータがどのように暗号化・隔離されているか、そしてアプリをどのように最新の状態に保っているかについてご説明します。PHPは一切使用していません。
「Workflow Trigger Extensions」は、Code Creation Labs によって開発・運営されています。このページでは、このアプリの構成、実行環境、ストアデータの保護方法、およびシステムの最新状態を維持する方法について説明しています。このページは、ストアオーナーの方や、セキュリティに関するアンケートにご回答いただくすべての方を対象に作成されています。 法的事項(プライバシーポリシー、データ処理契約、サブプロセッサー)については、法的情報およびデータ保護 をご覧ください。
このアプリがどのような基盤で構築されているか
| レイヤー | 当社が使用しているもの |
|---|---|
| アプリケーションコード | Node.js 上の TypeScript、現在提供されている長期サポート(LTS)リリースです。管理画面からイベントを処理するワーカーに至るまで、アプリのあらゆる部分が単一のコードベースで構成されています。 |
| データベースとキャッシュ | PostgreSQL(Google Cloud SQL)とRedis(Google Cloud Memorystore) |
| ホスティング | Google Cloudの「europe-west1(ベルギー、欧州連合)」リージョンにあるGoogle Kubernetes Engine上のコンテナです。データベース、キャッシュ、ファイルストレージは、当該リージョン内に配置されています。 |
| Shopifyとの連携 | Shopify |
| 貴店のストアフロント | このテーマ内では何も実行されません。ストアフロントのトリガー の後ろにあるオプションのウェブピクセルは、Shopify のピクセルサンドボックス内で実行され、ストアフロントトリガーを有効にした場合にのみインストールされます。 |
本サービスには、PHP、WordPress、Java、その他のランタイム環境が一切使用されていません。本アプリはShopify App Storeに掲載されており、Shopifyのセキュリティおよびお客様データの保護に関する要件を網羅したShopifyのアプリ審査に合格しています。
お客様のデータの保護について
**転送中。**お使いのブラウザ、Shopify、およびアプリ間のすべての通信にはTLSが使用されています。データベースとキャッシュには公開アドレスがなく、当社のプライベートネットワーク内からのみアクセス可能です。
**保存時。**すべてのデータベースおよびストレージは、Google Cloud KMSで当社が管理する鍵を用いて、保存時に暗号化されます。
さらに、フィールドレベルの暗号化も施されています。 最も機密性の高い値には、さらに第2の保護層が適用されます。具体的には、ストアのShopifyアクセストークン、およびオプトイン型の個人データトリガーによって読み込まれる保護対象の顧客データ(氏名、メールアドレス、電話番号、住所)です。各レコードは、Cloud KMS内の個別の鍵を用いてAES-256-GCMで個別に暗号化され、鍵の自動ローテーションが行われます。 これらの値は、トリガーが作動したときなど、実際に必要となる瞬間にのみメモリ上で復号され、ログには一切書き込まれません。個人データの変更検出ではハッシュ値の比較が行われるため、アプリは値を復号することなく、値が変更されたことを判別できます。
**シークレット。**APIの認証情報とキーはGoogle Secret Managerに保存されており、サービスの起動時に読み込まれます。これらはコード内にも、コンテナイメージ内にも、ビルドパイプライン内にも含まれていません。
**データの最小化。**このアプリは、インストール時にデータへのアクセスを一切要求しません。すべての権限はオプトイン方式であり、1種類のデータに限定されており、いつでも取り消すことができます。権限とデータへのアクセス をご覧ください。
誰が何にアクセスできるか
- **そのストアのみです。**すべてのレコードには所属するストアが記録されており、すべてのクエリは認証されたストアの範囲内に限定されます。あるストアが別のストアのデータを読み取ったり変更したりすることは決してできません。
- **認証済みのリクエストのみ受け付けます。**Shopify管理画面内のページは、Shopifyのセッショントークンによって認証されます。WebhookおよびShopify Flowのコールバックは、データにアクセスする前にShopifyのHMAC署名によって検証され、内部メッセージはGoogleによる署名付きIDによって検証されます。すべてのShopifyイベントは1回のみ処理され、イベントIDに基づいて重複が排除されます。
- カスタムトリガーコード。カスタムトリガー用にご自身で記述したJavaScriptは、時間とメモリに制限のある隔離されたサンドボックス内で、アプリ独自のサーバーとは別のインフラストラクチャ上で実行されます。このコードは、アプリの認証情報やShopifyアクセストークンにアクセスすることは一切ありません。ストアへの唯一のアクセス経路は、ストアに紐付けられ、1分以内に失効する短命なトークンです。
- **当社のチームについて。**本番システムへのアクセスは、個別のアカウントを用いたGoogle Cloud IAMを通じてのみ行われます。社内のメンテナンスツールはインターネットに公開されていません。
アプリの最新状態を維持する方法
- **すべての変更は、リリースされる前にスキャンされます。**パイプラインでは、型チェックやリンティング、静的アプリケーションセキュリティテスト(SAST)、シークレットの検出、依存関係の脆弱性スキャン、およびコンテナイメージのスキャンが実行されます。当社のリリース基準は、依存関係およびイメージ内に既知の脆弱性がゼロであることです。
- **ランタイムとオペレーティングシステム。**Alpine LinuxをベースとしたNode.jsのコンテナイメージは、リリースごとに再構築されるため、ランタイムとオペレーティングシステムのパッチが継続的に提供されます。マネージドKubernetesプラットフォームにより、基盤となるノードのパッチ適用が維持されます。
- **Shopifyプラットフォームです。**弊社では、ShopifyのAPIバージョンおよびShopifyのアプリライブラリに関するセキュリティアドバイザリを常に把握し、更新を速やかに適用しております。本アプリは、最新のAdmin APIバージョンで動作しています。
- **セキュリティレビュー。**認証、セッション、またはデータ漏洩に関わる変更を行う前には、自動化されたセキュリティ監査が実行されます。また、すべてのルーティング、データパス、およびデータベースクエリについて、定期的に包括的な内部レビューを実施しており、直近では2026年10月に実施しました。
- **監視。**可用性は24時間体制で監視されており、当社のstatusページで公開されています。また、エラーが発生した場合はアラートが送信されます。運用ログは最長30日間保存されますが、トークン、シークレット、またはお客様データは一切含まれていません。
保存と削除
- イベント履歴は30日後に自動的に削除されます。
- アプリが変更を検出するために保持しているスナップショット(商品、注文、またはお客様の最後に確認された状態)は、アプリがインストールされている間は保持されます。これは、次の変更がそれらを基準として検出されるためです。
- アプリをアンインストールすると、そのアプリによるストアへのアクセス権は直ちに削除されます。アンインストールから48時間後に実行されるShopifyの「shop/redact」リクエストにより、保護されたお客様データおよびカスタムトリガーによって保存されていたすべてのデータが消去されます。
- Shopify
- 下請け処理業者および完全な保存期間については、privacypolicyに記載されています。署名済みのデータ処理契約書は、workflow-trigger-extensions.app/dpaからご請求いただけます。
セキュリティ上の問題を報告する
脆弱性を見つけたと思われる場合、またはセキュリティに関する質問票への回答が必要な場合は、support@codecreationlabs.com までメールをお送りください。セキュリティに関する報告については、優先的に確認・回答させていただきます。
