在啟動時監控 Amazon EMR叢集的傳輸中加密 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在啟動時監控 Amazon EMR叢集的傳輸中加密

由 Susanne Kangnoh 建立 (AWS)

環境:生產

技術:分析;大數據 CloudNative;安全性、身分、合規

工作負載:開放原始碼

AWS 服務:Amazon EMR;Amazon SNS;AWS CloudTrail;Amazon CloudWatch

Summary

此模式提供安全控制,可在啟動時監控 Amazon EMR叢集,並在未啟用傳輸中加密時傳送警示。 

Amazon EMR 是一種 Web 服務,可讓您輕鬆執行大數據架構,例如 Apache Hadoop,以處理和分析資料。Amazon EMR可讓您平行執行映射並減少步驟,以具成本效益的方式處理大量資料。

資料加密可防止未經授權的使用者存取或讀取靜態資料或傳輸中的資料。靜態資料是指儲存在媒體中的資料,例如每個節點上的本機檔案系統、Hadoop 分散式檔案系統 (HDFS),或透過 Amazon Simple Storage Service (Amazon S3) 儲存在EMR檔案系統 (EMRFS) 中的資料。傳輸中的資料是指在工作之間傳輸網路並正在傳輸中的資料。傳輸中加密支援 Apache Spark、Apache TEZ、Apache Hadoop、Apache HBase和 Presto 的開放原始碼加密功能。您可以透過從AWS命令列介面 (AWSCLI)、主控台或 AWS 建立安全組態SDKs,並指定資料加密設定來啟用加密。您可以透過下列兩種方式提供傳輸中加密的加密成品:

  • 將憑證壓縮檔案上傳到 Amazon S3。

  • 透過參考提供加密成品的自訂 Java 類別。

此模式包含的安全控制項會監控API呼叫,並在RunJobFlow動作上產生 Amazon CloudWatch Events 事件。事件會呼叫執行 Python 指令碼的 AWS Lambda 函數。函數會從事件JSON輸入取得EMR叢集 ID,並執行下列檢查,以判斷是否存在安全違規:

  • 檢查EMR叢集是否具有 Amazon EMR特定的安全組態。

  • 如果叢集有安全組態, 會檢查傳輸中的加密是否已啟用。

  • 如果叢集沒有安全組態, 會使用 Amazon Simple Notification Service (Amazon ) 傳送警示到您提供的電子郵件地址SNS。通知會指定EMR叢集名稱、違規詳細資訊、AWS區域和帳戶資訊,以及通知來源的 AWS Lambda ARN(Amazon Resource Name)。

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶。

  • 上傳此模式隨附的 Lambda 程式碼的 S3 儲存貯體。

  • 您想要接收違規通知的電子郵件地址。

  • 已啟用 Amazon EMR記錄,以存取所有API日誌。

限制

  • 此偵測性控制項是區域性控制,必須部署在您要監控的每個AWS區域中。

產品版本

  • Amazon 4EMR.8.0 版或更新版本。

架構

工作流程架構

監控API呼叫並產生 RunJobFlow 動作事件的架構。

自動化和擴展

工具

AWS 服務

  • Amazon EMR – Amazon EMR是受管叢集平台,可簡化 Apache Hadoop Apache Spark 等巨量資料架構的執行,AWS以處理和分析大量資料。透過使用這些架構和相關的開放原始碼專案,您可以處理用於分析目的和商業智慧工作負載的資料。此外,您可以使用 Amazon EMR將大量資料轉換至其他AWS資料存放區和資料庫,例如 Amazon S3 和 Amazon DynamoDB 。

  • AWS Cloudformation – AWS CloudFormation 協助您建立和設定AWS資源、快速且一致地佈建資源,以及在整個生命週期中管理資源。您可以使用範本描述您的資源及其相依性,並一起啟動和設定這些資源作為堆疊,而不是個別管理資源。您可以在多個AWS帳戶和AWS區域中管理和佈建堆疊。

  • AWS Cloudwatch 事件 – Amazon CloudWatch Events 提供近乎即時的系統事件串流,可描述AWS資源的變更。 CloudWatch 事件會在發生操作變更時得知,並在必要時採取修正動作,方法是傳送訊息以回應環境、啟用函數、進行變更,以及擷取狀態資訊。

  • AWS Lambda – AWS Lambda 是一種運算服務,支援執行程式碼,無需佈建或管理伺服器。Lambda 只會在需要時執行程式碼,並自動從每天的幾個請求擴展到每秒數千個請求。只需為使用的運算時間支付費用,一旦未執行程式碼,就會停止計費。

  • AWS SNS – Amazon Simple Notification Service (Amazon SNS) 會協調和管理發佈者和用戶端之間的訊息傳送,包括 Web 伺服器和電子郵件地址。訂閱者會收到發佈到所訂閱主題的所有訊息,且某一主題的所有訂閱者均會收到相同訊息。

Code

此模式包含兩個檔案的附件:

  • EMRInTransitEncryption.zip 是壓縮檔案,其中包含安全控制 (Lambda 程式碼)。

  • EMRInTransitEncryption.yml 是部署安全控制的 CloudFormation 範本。

如需如何使用這些檔案的資訊,請參閱 Epics 一節。

史詩

任務描述所需的技能

將程式碼上傳至 S3 儲存貯體。

建立新的 S3 儲存貯體或使用現有的 S3 儲存貯體上傳附加EMRInTransitEncryption.zip的檔案 (Lambda 程式碼)。此儲存貯體必須與 CloudFormation 範本和您要評估的資源位於相同的AWS區域中。

雲端架構師

部署 CloudFormation 範本。

在與 S3 儲存貯體相同的AWS區域中開啟 Cloudformation 主控台,並部署附件中提供EMRInTransitEncryption.yml的檔案。在下一個史詩中,提供範本參數的值。

雲端架構師、
任務描述所需的技能

提供 S3 儲存貯體名稱。

輸入您在第一個史詩中建立或選取的 S3 儲存貯體名稱。此 S3 儲存貯體包含 Lambda 程式碼的 .zip 檔案,且必須與要評估的 CloudFormation 範本和資源位於相同的AWS區域中。

雲端架構師

提供 S3 金鑰。

在 S3 儲存貯體中指定 Lambda 程式碼 .zip 檔案的位置,不要加上斜線 (例如 EMRInTransitEncryption.zipcontrols/EMRInTransitEncryption.zip)。

雲端架構師

提供電子郵件地址。

指定您要接收違規通知的作用中電子郵件地址。 

雲端架構師

指定記錄層級。

指定 Lambda 日誌的記錄層級和動詞。 會Info指定應用程式進度的詳細資訊性訊息,並應僅用於偵錯。 會Error指定仍可允許應用程式繼續執行的錯誤事件。 會Warning指定潛在的有害情況。

雲端架構師
任務描述所需的技能

確認電子郵件訂閱。

當 CloudFormation 範本成功部署時,它會傳送訂閱電子郵件訊息到您提供的電子郵件地址。若要接收通知,您必須確認此電子郵件訂閱。                                                     

雲端架構師

相關資源

附件

若要存取與本文件相關聯的其他內容,請解壓縮下列檔案: attachment.zip