安全
Workflow Transactional Email 是基於什麼技術架構建成的、在何處運行、您的郵件憑證與儲存資料是如何被加密與隔離的,以及我們如何保持應用程式最新。全程不使用 PHP。
「Workflow Transactional Email」由 Code Creation Labs 開發並營運。本頁面說明此應用程式的組成、運作位置、您的商店資料如何受到保護,以及我們如何確保所有內容保持最新。本頁面是為商店店主以及任何填寫安全問卷的人士而撰寫。 本應用程式儲存的資料及其保存期限詳見 資料、隱私與安全;法律相關事項(隱私權政策、資料處理協議、次級處理者)則詳見 法律與資料保護。
這款應用程式是基於什麼建構的
| 圖層 | 我們使用什麼 |
|---|---|
| 應用程式代碼 | Node.js 上的 TypeScript,這是當前的長期支援版本。管理頁面、版面配置編輯器以及執行您的 Shopify Flow 步驟的服務,皆基於同一套程式碼庫。 |
| 資料庫與快取 | PostgreSQL(Google Cloud SQL)與 Redis(Google Cloud Memorystore) |
| 主機代管 | 位於 Google Cloud「europe-west1」(比利時,歐盟)區域的 Google Kubernetes Engine 上的容器。資料庫、快取、檔案儲存及應用程式日誌均位於該區域內。 |
| Shopify 整合 | Shopify 的官方應用程式函式庫、Shopify Flow 動作、用於選配權限的後台 GraphQL API,以及 Shopify 的 webhooks |
| 電子郵件傳送 | 您所連接的信箱:您自己的 SMTP 伺服器、Microsoft 365 或 Google Workspace。本應用程式發送給您的通知電子郵件,會透過位於法蘭克福的 Amazon SES 傳送。 |
| 您的店面 | 您的佈景主題或結帳流程中沒有任何內容能正常運作。 |
該服務中完全不包含 PHP、WordPress、Java 或其他任何執行環境。此應用程式已上架至 Shopify 應用程式商店,並通過 Shopify 的應用程式審核,該審核涵蓋了 Shopify 的安全性及客戶資料保護要求。
您的資料如何受到保護
**傳輸中。**您的瀏覽器、Shopify、您的電子郵件服務供應商與該應用程式之間的每項連線均採用 TLS 加密。資料庫和快取沒有公開位址:僅能透過我們的私有網路存取。
**靜態儲存。**所有資料庫和檔案儲存皆採用我們在 Google Cloud KMS 中管理的金鑰進行靜態加密。
**此外,我們還採用了字段級加密。**任何可能被用來代表您發送資料的內容,都會加上第二層加密:SMTP 使用者名稱和密碼、Microsoft 365 和 Google OAuth 憑證、您儲存的機密資訊、您商店的 Shopify 存取憑證,以及您取消訂閱清單中的地址。 每個值皆透過 Cloud KMS 中的獨立金鑰,採用 AES-256-GCM 演算法進行個別加密,並具備自動金鑰輪替功能;僅在執行操作的瞬間,才會於記憶體中進行解密。 每次對受保護值的解密操作都會記錄在內部存取軌跡中。機密值會在寫入操作歷史紀錄前被遮蔽,且絕不會透過開發者 API 傳回,也不會傳送至 Sidekick。
**機密資訊。**服務本身的 API 憑證和金鑰儲存在 Google Secret Manager 中,並會在服務啟動時載入。這些資訊既不在程式碼中,也不在容器映像檔中,更不在建置流程中。
資料最小化。 安裝此應用程式後,它無法存取您商店的資料。客戶資料之所以會傳送到電子郵件,純粹是因為您透過 Shopify Flow 將其傳送過來。四項可選權限(讀取單筆訂單或客戶的元資料欄位檔案、建立專屬折扣碼)會在當下進行請求,並透過 Shopify 自身的對話方塊授予,且可隨時撤銷。請參閱 權限:應用程式可以從您的商店讀取哪些資料。
誰可以存取哪些內容
- **僅限您的儲存庫。**每筆記錄都標記了其所屬的儲存庫,且每項查詢的範圍皆限於已通過驗證的該儲存庫。一個儲存庫絕無法讀取或修改另一個儲存庫的佈局、發送者、密鑰或歷史紀錄。
- **僅限經過驗證的請求。**Shopify 管理後台內的頁面皆透過 Shopify 會話令牌進行身份驗證。在處理任何資料之前,Shopify Flow 步驟及 Shopify 自身的 webhook 都會透過 Shopify 的 HMAC 簽名進行驗證;若同一個 Shopify Flow 步驟被傳送兩次,系統僅會執行一次。
- **渲染後的內容。**版面配置會在我們的伺服器上進行渲染,且結果在傳送前會經過安全處理:腳本、事件處理常式、javascript: URL、iframe 及表單元素都會被移除,因此從 Shopify Flow 傳入的值不會在收件者的收件匣中轉變為可執行的內容。
- **外發請求。**應用程式會代表您連線至的 URL(包括用於「HTTP Request」動作、從 URL 擷取的附件,以及由元資料欄位所引用的檔案),在連線前均會進行檢查:將拒絕連線至迴路、鏈路本地、雲端元資料及私有網路位址,即使是透過重定向亦然。重定向次數設有上限,且回應大小亦受限制。
- **我們的團隊。**僅能透過 Google Cloud IAM 及個別帳戶存取生產系統。內部維護工具不會對外公開。
我們如何讓應用程式保持最新狀態
- **每項變更在發布前都會經過掃描。**此流程會執行類型檢查與程式碼審查、靜態應用程式安全測試(SAST)、機密資訊偵測、依賴項漏洞掃描以及容器映像檔掃描。我們的發布標準是:依賴項與映像檔中不得存在任何已知漏洞。
- **執行環境與作業系統。**該容器映像檔(基於 Alpine Linux 的 Node.js)會在每次發行時重新建置,因此執行環境與作業系統的修補程式會持續推送。託管式 Kubernetes 平台會確保底層節點始終保持最新修補狀態。
- **Shopify 平台。**我們會追蹤 Shopify 的 API 版本以及 Shopify 應用程式函式庫的安全公告,並及時套用更新。此應用程式運行於最新的 Admin API 版本上。
- **安全性審查。**我們會定期對每條路徑、資料路徑及資料庫查詢進行全面的內部審查,最近一次審查於 2026 年 10 月進行。
- **監控。**系統全天候監控可用性,並將結果發佈於我們的狀態頁面,一旦發生錯誤便會觸發警示。運作日誌儲存於同一歐盟區域,最長保留 30 天,且絕不包含任何憑證或機密資訊。
資料保留與刪除
- 操作記錄會記錄已發送的內容,因此屬於客戶資料,將在 30 天後自動刪除。
- 解除安裝會立即且無法復原地刪除所有內容:版面配置、發送者、密鑰、歷史紀錄、取消訂閱清單以及上傳的檔案。
- Shopify 的強制性隱私請求(customers/data_request、customers/redact 及 shop/redact)均會在 Shopify 設定的時限內自動處理,其中包含將客戶加入取消訂閱清單的作業。
- 有關儲存內容的完整清單請參閱 資料、隱私與安全。次級處理者及資料保留期限詳見 隱私權政策。如需索取已簽署的資料處理協議,請透過 workflow-transactional-email.app/dpa 提出請求。
回報安全問題
如果您認為發現了安全漏洞,或需要填寫安全問卷,請發送電子郵件至 support@codecreationlabs.com。我們會優先審閱並回覆安全報告。
