集中記錄和多帳戶安全防護 - AWS Prescriptive Guidance

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

集中記錄和多帳戶安全防護

由安庫什維瑪 (AWS) 和崔西皮爾斯 (AWS) 創建

環境:生產

技術:安全性、身分識別、法規遵循;管理與管理

AWS 服務:AWS CloudFormation; AWS Config; Amazon CloudWatch; AWS CodePipeline; Amazon GuardDuty; AWS Lambda; Amazon Macie; AWS Security Hub; Amazon S3

Summary

此模式涵蓋的方法適合在 AWS AWS Organizations 擁有多個 Amazon Web Services (AWS) 帳戶的客戶,而且在使用 AWS Control Tower、landing zone 或帳戶自動售貨機服務在其帳戶中設定基準防護時遇到挑戰。

此模式示範如何使用簡化的多帳戶架構,以良好的結構化方式設定集中式記錄和標準化的安全性控制。在 AWS CloudFormation 範本、AWS CodePipeline 和自動化指令碼的協助下,此設定可部署到屬於組織的所有帳戶中。

所以此 多帳戶架構包括下列帳戶:

  • 集中式日誌帳戶— 儲存來自所有其他帳戶的所有虛擬私有雲 (VPC) 日誌、AWS CloudTrail 日誌、AWS Config 日誌以及 Amazon CloudWatch Logs (使用訂閱) 的所有日誌的帳戶。

  • 父安全性帳戶— 用來做為下列安全性服務之父帳戶的帳戶,此帳戶可跨多個帳戶進行管理。

    • Amazon GuardDuty

    • AWS 安全中樞

    • Amazon Macie

    • Amazon Detective

  • 子帳戶— 組織中的其他帳戶。這些帳戶將所有有用的日誌存儲在集中日誌帳戶。兒童帳戶會將父安全性帳戶加入為安全性服務的成員。

啟動 CloudFormation 範本 (已附加) 後,該範本會在集中日誌帳戶內佈建三個 Amazon Simple Storage Service (Amazon S3) 儲存貯體。一個儲存貯體用於存儲所有帳戶中的所有 AWS 相關日誌(例如來自 VPC 流量日誌、CloudTrail 和 AWS Config 的日誌)。第二個存儲桶用於存儲來自所有帳戶的 CloudFormation 模板。第三個儲存貯體用於儲存 Amazon S3 存取日誌。

一個單獨的 CloudFormation 模板創建使用 AWS CodeCommit 的管道。更新的代碼被推送到 CodeCommit 存儲庫後,它需要啟動資源,並在所有帳戶設置安全服務的照顧。如需將上傳至 CodeCommit 存放庫之檔案的檔案結構的詳細資訊,請參閱 Readme.md 檔案 (附加)。

先決條件和限制

先決條件

  • AWS Organizations ID,所有帳戶都加入同一個組織。

  • 可接收 Amazon Simple Notification Service (Amazon SNS) 通知的有效電子郵件地址。

  • Amazon Simple Storage Service (Amazon S3) 儲存貯體的已確認配額。依預設,每個帳戶都有 100 個 S3 儲存貯體。如果您需要額外的儲存貯體,請在部署此解決方案之前要求增加配額。

限制

所有帳戶都應該是同一組織的一部分。如果您不是使用 AWS Organizations,則必須修改特定政策 (例如 S3 儲存貯體政策),以允許從每個帳戶的 AWS Identity and Access Management (IAM) 角色存取。

請注意:在部署解決方案時,您必須確認 Amazon SNS 訂閱。確認訊息會傳送到您在部署程序期間提供的電子郵件地址。這會向此電子郵件地址起始一些電子郵件警示訊息,因為每當帳戶中建立或修改 IAM 角色政策時,都會啟動這些警示。在部署程序期間,您可以忽略這些警示訊息。

Architecture

目標技術堆疊

  • Amazon CloudWatch 警示和日誌

  • AWS CodeCommit 儲存庫

  • AWS CodePipeline

  • AWS Config

  • Amazon Detective

  • Amazon GuardDuty

  • IAM 角色和權限

  • Amazon Macie

  • S3 儲存貯體

  • AWS 安全中樞

  • Amazon SNS

目標架構

  1. 其他註冊為安全服務的父安全帳戶的子女帳戶的帳戶

  2. 所有子帳戶 (包括父帳戶) 的安全性發現

資源

將更新的程式碼推送至每個帳戶和 AWS 區域中的 CodeCommit 存放庫時,會自動佈建下列資源。

CloudFormation 形成堆棧 1-記錄父堆棧

-巢狀堆疊 1 — 標準 IAM 角色和政策

-巢狀堆疊 2 — 帳戶中的 AWS Config 設定

-嵌套堆棧 3 — CloudWatch 警報

            -SecurityGroupChangesAlarm

            -未授權資料手機

            -根目錄活動警報

            -NetworkAclChangesAlarm

            -使用者管理系統

            -IAMPolicyChangesAlarm

            -雲點變更警報

            -建立存取鍵警報器

      -用於從 CloudTrail 日誌創建指標並將其用於警報的指標過濾器

      -SNS 主題

CloudFormation 形成堆疊 2 — 父護欄堆疊

-嵌套堆疊 1 — 用於設定帳戶密碼政策的 AWS Lambda 函數

-巢狀堆疊 2 — 基本 AWS Config 規則

      -CIS 安全性群組必須限制特定流量

      -開放安全群組檢查與 Lambda 函數進行安全群組規則評估

      -檢查 2 為必需標籤

      -檢查未限制的連接埠

CloudFormation 堆疊 3 — CloudWatch 記錄匯出

-使用 Amazon Kinesis Kinesis 訂閱 CloudWatch 日誌從日誌群組匯出到 Amazon S3

Tools

  • AWS CloudFormation— AWS CloudFormation 使用範本,以自動且安全的方式對所有 AWS 區域和帳戶中的應用程式所需的所有資源進行模型和佈建。

  • Amazon CloudWatch— Amazon CloudWatch 可即時監控您的 AWS 資源和您在 AWS 執行的應用程式。您可以使用 CloudWatch 來收集和追蹤指標,這些是您可以為您的資源和應用程式測量的變數。

  • AWS CodeCommit— AWS CodeCommit 是由 AWS 託管的版本控制服務。您可以使用 CodeCommit,以私下在雲端存放和管理資產 (例如,文件、原始程式碼和二進位檔案)。

  • AWS CodePipeline— AWS CodePipeline 是持續交付服務,可將發行軟體所需的步驟模型化、視覺化和自動化。

  • AWS Config— AWS Config 在您 AWS 帳戶內提供 AWS 資源組態的詳細檢視。這包含資源彼此之間的關係和之前的組態方式,所以您可以看到一段時間中組態和關係的變化。

  • Amazon Detective— Amazon Detective 可用於分析、調查和快速識別安全問題清單或可疑活動的根本原因。Detective 會自動從您的 AWS 資源收集日誌資料。然後,它會使用機器學習、統計分析和圖論,協助您視覺化並輕鬆地進行更快、更有效的安全調查。

  • Amazon GuardDuty— Amazon GuardDuty 是持續性的安全監控服務,可分析和處理流量日誌、CloudTrail 管理事件日誌、CloudTrail 資料事件日誌和網域名稱系統 (DNS) 日誌。它使用威脅智慧饋送 (例如惡意 IP 位址和網域清單以及機器學習) 以在您的 AWS 環境中識別意外和可能未經授權且惡意的活動。

  • AWS Identity and Access Management— AWS Identity and Access Management (IAM) 是一種 Web 服務,可協助您安全地控制 AWS 資源的存取。您可以使用 IAM 來控制 (已登入) 的身分驗證和授權使用資源的 (許可)。

  • Amazon Macie— Amazon Macie 會自動探索敏感資料,例如個人識別資訊 (PII) 和財務資料,讓您更好地了解組織儲存在 Amazon S3 中的資料。

  • Amazon S3— Amazon Simple Storage Service (Amazon S3) 是一種可高度擴展的物件儲存服務,可用於各種儲存解決方案,包括網站、行動應用程式、備份和資料湖。

  • AWS 安全中樞— AWS Security Hub 可供您全方位檢視 AWS 中的安全狀態,並協助您檢查環境是否符合安全標準和最佳實務。

  • Amazon SNS— Amazon Simple Notification Service (Amazon SNS) 是一種受管服務,可將訊息傳遞從發行商到訂閱者 (也稱為生產者消費者

Epics

任務描述所需技能
啟動子帳戶角色全部帳戶。Yaml CloudFormation 形成範本,以在美國東部 1 區域中建立 IAM 角色。

若要建立必要的 IAM 角色和權限,您必須在 US-East-1 區域中,逐個在每個帳戶 (集中式記錄帳戶、父安全帳戶和組織中所有其他 AWS 帳戶) 手動啟動此範本。所以此Childaccount_IAM_role_All_Accounts.yaml範本位於/templates/initial_deployment_templates套件的目錄。IAM 角色用於對佈建和設定架構的其餘部分進行 API 呼叫時。確定做為參數傳遞的 IAM 角色名稱在所有帳戶中均一致。

雲端架構師
在範本參數中,請提供 IAM 角色的名稱。

提供 CodeBuild 在父安全性帳戶中可以在所有其他子帳戶中擔任的 IAM 角色。預設角色名稱為security_execute_child_stack_role

雲端架構師
在參數中,提供父系安全性帳戶的帳戶識別碼。

父安全性帳戶是 CodeBuild 執行的帳戶。

雲端架構師
任務描述所需技能
在集中記錄帳戶中,在我們東 1,啟動 S3 桶集中記錄帳戶 .Yaml CloudFormation 模板。

若要在集中式記錄帳戶中建立 S3 儲存貯體,請啟動S3Buckets-Centralized-LoggingAccount.yaml。該模板位於/templates/initial_deployment_templates套件的目錄。S3 儲存貯體將儲存所有日誌、範本和 Amazon S3 存取日誌。記下所有 S3 儲存貯體名稱,您將使用這些名稱在下列步驟中修改參數檔案。

雲端架構師
在範本參數中,為 AWS 日誌儲存提供 S3 儲存貯體的名稱。

輸入S3 Bucket Name for Centralized Logging in Logging Account參數。此儲存貯體充當儲存 AWS 日誌的集中位置,例如來自所有帳戶的流程日誌和 CloudTrail 日誌。記下儲存貯體名稱和 Amazon Resource Name (ARN)。

雲端架構師
請提供用於儲存存存取日誌的 S3 儲存貯體名稱。

輸入 S3 儲存貯體名稱為S3 Bucket Name for Access Logs in Logging Account參數。此 S3 儲存貯體存儲 Amazon S3 的訪問日誌

雲端架構師
請提供用於儲存範本的 S3 儲存貯體名稱。

在 S3 儲存貯體名稱中輸入 S3 儲存貯體S3 Bucket Name for CloudFormation Template storage in Logging Account參數。

雲端架構師
請提供組織 ID。

若要提供組織內 S3 儲存貯體的存取權,請在Organization Id for Non-AMS accounts參數。

雲端架構師
任務描述所需技能
啟動安全防護軌道代碼管線集中化安全帳戶 .yML CloudFormation 化範本。

若要部署 CI/CD 管道,請手動啟動security-guard-rails-codepipeline-Centralized-SecurityAccount.yml在 us-east-1 中的父安全性帳戶中。該模板位於/templates/initial_deployment_templates套件的目錄。此管道將部署所有子帳戶中的所有基礎結構。

雲端架構師
為 S3 儲存貯體提供名稱,該儲存貯體將範本儲存在集中式記錄帳戶中。

輸入您針對 S3 儲存貯體所提供的名稱S3 Bucket Name for the CloudFormation Template storage in Logging Account參數,在步驟 2 中。

雲端架構師
請提供要在子帳戶中使用的 IAM 角色名稱。

輸入您為Name of the IAM role參數,在步驟 1 中。

雲端架構師
提供用於接收 CodePipeline 失敗通知的作用中電子郵件地址。

輸入您想要用於接收 CodePipeline 失敗通知和其他 CloudWatch 警示相關通知的電子郵件地址。

雲端架構師
任務描述所需技能
修改帳號清單 .json。

在 中Accountlist.json檔案 (位於套件最上層),請新增父安全性帳戶號碼和子帳戶號碼。請注意,ChildAccountList欄位也包含父安全性帳戶號碼。請參閱中的範例deployment-instructions.md檔案。

雲端架構師
修改 accounts.csv

在 中accounts.csv檔案 (位於套件中最上層),請新增所有子帳戶以及使用帳戶註冊的電子郵件。請參閱中的範例deployment-instructions.mdfile.

雲端架構師
修改參數 .config。

在 中parameters.config檔案,位於/templates資料夾中,更新下列六個參數:

  • pNotifyEmail:您在設定管線時所提供的電子郵件地址 (請參閱步驟 3)

  • pstackNameLogging:用於集中記錄的 CloudFormation 形成堆棧的名稱

  • pS3LogsBucket:將會儲存所有帳戶的日誌的 S3 儲存貯體名稱 (請參閱步驟 2)

  • pBucketName:用於存放日誌的 S3 儲存貯體 ARN

  • pTemplateBucketName:將存放範本的 S3 儲存貯體名稱 (請參閱步驟 2)

  • pAllowedAccounts:父帳戶和子帳戶的帳戶 ID

針對其他參數,您可以保留預設值。如需範例,請參閱deployment-instructions.md檔案。

雲端架構師
任務描述所需技能
存取您在步驟 3 中建立的程式 CodeCommit 可儲存機制。

輸出部分的 CI/CD 基礎設施 CloudFormation 形成堆疊(在步驟 3),請注意程式 CodeCommit 存放庫 URL 的名稱。建立存放庫的存取權,以便將檔案推送至該存放庫,以便在所有目標帳戶中部署基礎結構。如需詳細資訊,請參閱「」AWS CodeCommit 的設定

雲端架構師
將檔案推送至 CodeCommit 儲存庫。

在您的機器上安裝 Git。然後運行 Git 命令來克隆空存儲庫,將文件從您的筆記本電腦複製到存儲庫文件夾,並將工件推送到存儲庫。檢查範例 Git 命令在deployment-instructions.md檔案。如需基本的 Git 命令,請參閱相關資源區段。

雲端架構師
任務描述所需技能
確認 CodePipeline 和 CodeBuild 的狀態。

將成品推送至程式 CodeCommit 可儲存機制之後,請確認您在步驟 3已啟動。然後檢查 CodeBuild 日誌以確認狀態或錯誤。

雲端架構師

Attachments

attachment.zip