Coinbase 利用 AWS Step Functions 在幾秒鐘內安全地部署到 AWS

加密貨幣提供了去中心化的資金存取方式,並實現了類似於現金的交易,除了接受資金的一方,否則任何人都無法撤消。這些特徵是推動加密貨幣日益普及的部分原因。不僅守法的投資者關注加密貨幣,惡意行為者也開始打起了加密貨幣的主意,隨著加密貨幣的使用日趨廣泛,貨幣盜竊的動機和機會勢必增加。FBI 的網際網路犯罪投訴中心 (IC3) 的加密貨幣盜竊報告指出在 2018 年有價值總計 1.82 億美元的加密貨幣被竊,是 2017 年的 212%,而這可能僅佔全球實際加密貨幣欺詐的一小部分。

Coinbase 高級基礎設施工程師 Graham Jenson 表示:「駭入加密貨幣交易所成為全球駭客最大的競技遊戲」。Coinbase 是一個數位貨幣錢包和平台,在全球擁有 3000 萬客戶,交易總額達 2200 億美元。「Coinbase 作為最大的交易所之一,也是最大的被攻擊目標之一。」

為了成為加密貨幣經濟值得信賴、安全和合法的中心,Coinbase 致力於在安全、合規、技術、客戶支援、設計等方面達到世界一流水平。這就是 Coinbase 自 2015 年以來一直將 Amazon Web Services (AWS) 用作其主要基礎設施供應商的原因,也是 Coinbase 最近採用更多 AWS 技術以改進其軟體部署流程的原因。

為了保護客戶免受攻擊,Coinbase 工程師必須能夠快速、可靠和安全地為公司的所有系統部署更新和新功能,其中某些軟體部署需要 20 個小時或更長時間才能完成。為了簡化和增強這些流程,Coinbase 使用 AWS Step FunctionsAWS Lambda 建置了一個通用的可重複使用框架,用於臨時的部署器組合。(AWS Lambda 是一種無伺服器平台,可執行程式碼以回應事件,而 AWS Step Functions 可將多個 AWS 服務協調到無伺服器工作流程中。)

「借助 AWS Step Functions 和 AWS Lambda,我們的關鍵任務部署成功率從 90% 提高到了 97%,」 Jenson 說道。

「我們已經看到故障工單大幅減少。這得益於 AWS Step Functions 給我們的工程師帶來了可見性。」

Coinbase 高級基礎設施工程師 Graham Jenson

AWS Step Functions:「正是我所需要的」

在尋找進一步加強 Coinbase 安全的方法時,Jenson 發現了改善公司自動部署管道的機會。Jenson 說:「我們有多個部署器,每個部署器都有不同的界面和複雜性。」「我想要一個通用框架,該框架將使我們能夠快速建置可以驗證使用者輸入、將程式碼安全發佈到 AWS 且不會妨礙工程師的部署器。」

在研究解決方案的過程中,Jenson 了解了 AWS Step Functions。Jenson 說:「查閱文件後,我意識到 Step Functions 正是我所需要的。Step Functions 可以維持狀態長達一年,具有高度可擴展性,而且可以更輕鬆地在描述特定錯誤後自動處理和重試。」

透過選擇使用以 AWS Lambda 和 AWS Step Functions 為基礎的架構建置新類別的部署器,並使用 AWS Identity and Access Management (AWS IAM) 和 Amazon Simple Storage Service (Amazon S3),讓 Coinbase 能夠快速實作,且僅需簡短的初始學習過程。Jenson 團隊建立的第一個部署器是名為 Odin 的開放原始碼 AWS 部署器,它描述一個專案版本,並使用 Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling 群組將其安全可靠地啟動到 AWS 中。

「從構思到可行的實作,再到將 Odin 遷移到解決方案上,整個過程從構思到生產只花了六個月的時間。」Jenson 說,「但是由於我們可以重複使用建置 Odin 時使用的程式碼和框架,因此我們僅花了幾週的時間便將另外兩個部署器投入生產。從現在開始,這個過程會變得更快。」

利用 Step Functions 簡化架構

新方法大大降低了 Coinbase 架構的複雜性,從而提高了 Jenson 團隊對架構的可見性。

「我們以前的部署器具有不同的 Web 勾點、回呼、Amazon S3 配置、儲存貯體和 AWS IAM 角色,並使用了不同的通訊和輪詢方法。很難獲得我們需要的可見性。」Jenson 說。「現在,我們的所有部署器都以相同的 AWS Lambda 和 AWS Step Functions 基礎為根基,我們將以相同的方式進行操作和與之互動。我們可以監控步驟函數中的資料流,識別特定路徑上的故障,並採取措施進行修正。」

這種簡便性加快了新增 AWS 帳戶的過程,並提高了安全性。「透過使用 AWS Lambda 和 AWS IAM 假定角色,我們可以啟動具有單個 AWS IAM 角色的 AWS 帳戶,而不是啟動具有單獨組態的整個服務,」 Jenson 說。「借助 AWS Lambda 和 AWS IAM,我們將新增 AWS 帳戶所需的時間從幾天縮短到了幾秒鐘。」

新的解決方案還簡化了可稽核性。Jenson 說:「我們可以透過一個步驟函數啟用多個帳戶,這使我們對所有部署可以使用同一個稽核追蹤。」「這使我們很容易了解所有帳戶中發生的狀況,並使我們能夠以高安全性啟用新帳戶,而不必重新實作稽核追蹤。」

透過讓工程師能夠獨立克服障礙,該解決方案還減少了對基礎設施團隊的需求。Jenson 說:「我們已經看到部署失敗的故障工單大幅減少。」「這是由於 AWS Step Functions 給我們的工程師提供了可視性,使他們能夠診斷和解決自己的問題。」

憑藉這些內部技術優勢,我們能夠提供更高的安全性,並更快對客戶請求做出回應。Jenson 說:「借助建置在 AWS Step Functions 和 AWS Lambda 之上的部署器,我們的工程師可以安全地將程式碼移入生產環境。」「結果是,我們可以更頻繁地發佈新功能、更快地回應安全威脅,並更輕鬆地實現我們的 SLA。這帶來了更好、更安全的客戶體驗。」


進一步了解

進一步了解 AWS Step Functions