啟動時強制標記 Amazon EMR 叢集 - AWS 方案指引

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

啟動時強制標記 Amazon EMR 叢集

創建者:普里揚卡喬達瑞 (AWS)

環境:生產

技術:分析;安全性、身分識別、合規

AWS 服務:Amazon EMR;AWS Lambda;Amazon CloudWatch 活動

Summary

此模式提供安全控制,可確保 Amazon EMR 叢集在建立時加上標記。 

Amazon EMR 是一種 Amazon Web Services(AWS)服務,用於處理和分析大量數據。Amazon EMR 提供可擴充、低組態的服務,是執行內部叢集運算的更輕鬆替代方案。您可以使用標記以不同的方式分類 AWS 資源,例如按用途、擁有者或環境。例如,您可以透過將自訂中繼資料指派給每個叢集來標記 Amazon EMR 叢集。標籤由您定義的鍵和值組成。我們建議您建立一組一致的標籤,以符合組織的需求。當您將標籤新增至 Amazon EMR 叢集時,標籤也會傳播到與叢集關聯的每個使用中 Amazon 彈性運算雲端 (Amazon EC2) 執行個體。同樣地,當您從 Amazon EMR 叢集移除標籤時,該標籤也會從每個關聯的作用中 EC2 執行個體中移除。

偵測控制項會監控 API 呼叫,並針對RunJobFlowAddTagsRemoveTagsCreateTagsAPI 啟 CloudWatch 動 Amazon 事件事件。該事件調用 AWS Lambda,該腳本運行一個 Python 腳本。Python 函數會從事件的 JSON 輸入取得 Amazon EMR 叢集識別碼,並執行下列檢查:

  • 檢查 Amazon EMR 叢集是否使用您指定的標籤名稱進行設定。

  • 如果沒有,請傳送 Amazon 簡單通知服務 (Amazon SNS) 通知給使用者,其中包含相關資訊:此通知來源於 Lambda 的 Amazon EMR 叢集名稱、違規詳細資訊、AWS 區域、AWS 帳戶和亞馬遜資源名稱 (ARN)。

先決條件和限制

先決條件

  • 有效的 AWS 帳戶

  • 一個 Amazon Simple Storage Service (Amazon S3) 存儲桶,用於上傳提供的 Lambda 代碼。或者,您可以為此目的建立 S3 儲存貯體,如 Epics 一節所述。

  • 您希望接收違規通知的作用中電子郵件地址。

  • 您要檢查的強制性標籤列表。

限制

  • 此安全控制是區域性的。您必須將其部署在要監控的每個 AWS 區域中。

產品版本

  • Amazon EMR 版本 4.8.0 及更高版本。

架構

工作流架構

叢集啟動、使用 API 進行監控、事件產生、Lambda 函數呼叫、傳送通知。

自動化和規模

工具

AWS 服務

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

  • Amazon CloudWatch 活動-Amazon CloudWatch 活動提供近乎即時的系統事件串流,用於描述 AWS 資源的變更。

  • Amazon EMR-Amazon EMR 是一種網路服務,可簡化大數據架構的執行,並有效率地處理大量資料。

  • AWS Lambda — AWS Lambda 是一種運算服務,可支援執行程式碼,而無需佈建或管理伺服器。Lambda 只有在需要時才會執行程式碼,可自動從每天數項請求擴展成每秒數千項請求。 

  • Amazon S3 — Amazon Simple Storage Service (Amazon S3) 是一種對象存儲服務。您可以使用 Amazon S3 隨時從 Web 任何地方存放和擷取任意資料量。

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

Code

此模式包括下列附件:

  • EMRTagValidation.zip— 安全控制的 Lambda 程式碼。

  • EMRTagValidation.yml— 設定事件和 Lambda 函數的 CloudFormation 範本。

史诗

任務描述所需技能

定義 S3 儲存貯體。

Amazon S3 主控台上,選擇或建立 S3 儲存貯體來託管 Lambda 程式碼 .zip 檔案。此 S3 儲存貯體必須與您要監控的 Amazon EMR 叢集位於相同的 AWS 區域。Amazon S3 儲存貯體的名稱必須是全域唯一,且命名空間會由所有 AWS 帳戶共享。S3 儲存貯體名稱不能包含前導斜線。

雲端架構師

上傳程 Lambda 碼。

附件區段中提供的 Lambda 程式碼 .zip 檔案上傳至 S3 儲存貯體。                                             

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

啟動 AWS CloudFormation 範本。

在與 S3 儲存貯體相同的 CloudFormation AWS 區域中開啟 AWS 主控台,然後部署範本。如需部署 AWS CloudFormation 範本的詳細資訊,請參閱 CloudFormation 文件中的在 AWS CloudFormation 主控台建立堆疊

雲端架構師

完成範本中的參數。

當您啟動範本時,系統會提示您輸入下列資訊:

  • S3 儲存貯體:指定您在第一個史詩中建立或選取的儲存貯體。這是您上傳附加的 Lambda 程式碼 (.zip 檔案) 的位置。

  • S3 金鑰:指定 S3 儲存貯體中 Lambda .zip 檔案的位置 (例如檔案名稱 .zip 或控制項/檔案名 .zip)。請勿包含前導斜線。

  • 通知電子郵件:提供您要接收 Amazon SNS 通知的作用中電子郵件地址。 

  • 標記金鑰名稱:在逗號分隔清單中提供您要檢查的標籤 (例如,ApplicationIDEnvironmentOwner)。E CloudWatch vents 事件會監視叢集中的這些標記,並在找不到時傳送通知。

  • Lambda 記錄層級:指定 Lambda 函數的記錄層級和頻率。使用「資訊」(Info) 可記錄進度的詳細資訊訊息、針對仍允許部署繼續的錯誤事件發生錯誤,以及針對潛在有害情況發出警告                                       

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

確認訂閱。

成功部署 CloudFormation 範本後,會將訂閱電子郵件傳送至您提供的電子郵件地址。您必須確認此電子郵件訂閱,才能開始接收違規通知。

雲端架構師

相關資源

附件

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