集中式記錄和多帳戶安全防護 - AWS 方案指引

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

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

由安庫什維爾瑪(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) 流程 CloudTrail 日誌、AWS Config 日誌和 Amazon CloudWatch 日誌的所有日誌 (使用訂閱) 的帳戶。

  • 家長安全帳戶 — 作為下列跨多個帳戶管理之安全性服務之家長帳戶的帳戶。

    • Amazon GuardDuty

    • AWS Security Hub

    • Amazon Macie

    • Amazon Detective

  • 子帳號 — 組織中的其他帳號。這些帳戶會將所有有用的記錄檔儲存在集中式記錄帳戶中。兒童帳戶會以安全性服務的成員身分加入家長安全性帳戶。

啟動 CloudFormation 範本 (附加) 後,它會在集中式記錄帳戶中佈建三個 Amazon 簡單儲存服務 (Amazon S3) 儲存貯體。一個儲存貯體用於存放所有帳戶中的所有 AWS 相關日誌 (例如來自 VPC 流程日誌的日誌和 AWS Config)。 CloudTrail第二個存儲桶用於存儲所有帳戶的 CloudFormation 模板。第三個儲存貯體用於存放 Amazon S3 存取日誌。

單獨的 CloudFormation 範本會建立使用 AWS 的管道 CodeCommit。更新後的代碼被推送到 CodeCommit 存儲庫,它負責啟動資源,並在所有帳戶中設置安全服務。如需有關將上載至 CodeCommit 儲存庫之檔案結構的詳細資訊,請參閱 README.md 檔案 (附件)。

先決條件和限制

先決條件

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

  • 用於接收亞馬遜簡單通知服務 (Amazon SNS) 通知的有效電子郵件地址。

  • 已確認每個帳戶中 Amazon Simple Storage Service (Amazon S3) 儲存貯體的配額。根據預設,每個帳戶都有 100 個 S3 儲存貯體。如果您需要其他值區,請先要求提高配額,然後再部署此解決方案。

限制

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

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

架構

目標技術堆疊

  • Amazon CloudWatch 警報和日誌

  • AWS CodeCommit 儲存庫

  • AWS CodePipeline

  • AWS Config

  • Amazon Detective

  • Amazon GuardDuty

  • IAM 角色和許可

  • Amazon Macie

  • S3 儲存貯體

  • AWS Security Hub

  • Amazon SNS

目標架構

顯示三個 AWS 帳戶中的服務的圖表。
顯示日誌記錄和安全服務詳細信息的圖表。
  1. 其他已登記為保安服務的家長保安帳戶的子女帳戶

  2. 來自所有子帳戶的安全性發現項目,包括父帳戶

資源

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

CloudFormation 堆棧 1-記錄父堆棧

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

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

-嵌套堆棧 3- CloudWatch 警報

            - SecurityGroupChangesAlarm

            - UnauthorizedAttemptAlarm

            - RootActivityAlarm

            - NetworkAclChangesAlarm

            -IAM UserManagementAlarm

            -IAM PolicyChangesAlarm

            - CloudTrailChangeAlarm

            -IAM CreateAccessKeyAlarm

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

      -社交媒體主題

CloudFormation 堆疊 2 — 父護欄堆疊

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

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

      -獨聯體 SecurityGroupsMustRestrictSshTraffic

      -以 OpenSecurityGroupRuleCheck 及用於安全群組規則評估的 Lambda 函數

      -檢查-for-required-tag

      - check-for-unrestricted-ports

CloudFormation 堆疊 3 — CloudWatch 記錄檔匯出

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

工具

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

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

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

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

  • AWS 組態 — 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 Security Hub — AWS Security Hub 為您提供 AWS 安全狀態的全面檢視,並協助您根據安全標準和最佳實務檢查環境。

  • Amazon SNS — Amazon Simple Notification Service (Amazon SNS) 是一種受管服務,可提供從發佈者到訂閱者 (也稱為生產者和消費者) 的訊息傳遞。

史诗

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

若要建立必要的 IAM 角色和許可,您必須在 us-east-1 區域中逐個在每個帳戶中手動啟動此範本 (集中式記錄帳戶、家長安全帳戶以及組織中的所有其他 AWS 帳戶)。Childaccount_IAM_role_All_Accounts.yaml範本位於套件的/templates/initial_deployment_templates目錄中。在進行佈建的 API 呼叫和設定架構的其餘部分時,會使用 IAM 角色。確保作為參數傳遞的 IAM 角色名稱在所有帳戶之間都一致。

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

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

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

父安全帳戶是 CodeBuild 執行所在的帳戶。

雲端架構師
任務描述所需技能
在集中式記錄帳戶中,在 us-east-1 中,啟動 S3 儲存集中式-.yaml 範本。LoggingAccount 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 資源名稱(ARN)。

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

輸入參數的 S3 儲存貯體名S3 Bucket Name for Access Logs in Logging Account稱。這個 S3 儲存貯體會存放 Amazon S3 的存取日誌

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

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

雲端架構師
提供組織 ID。

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

雲端架構師
任務描述所需技能
啟動 security-guard-rails-codepipeline集中式 SecurityAccount .y CloudFormation ml 範本。

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

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

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

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

輸入您在步驟 1 中為Name of the IAM role參數提供的名稱。

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

輸入您要用來接收 CodePipeline 失敗通知及其他 CloudWatch 警報相關通知的電子郵件地址。

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

在位於封裝最上層的Accountlist.json檔案中,新增父安全性帳戶號碼和子帳號。請注意,此ChildAccountList欄位還包括父安全性帳戶編號。請參閱包中文deployment-instructions.md件中的例子。

雲端架構師
修改 accounts.csv 文件

accounts.csv文件中,這是在包中的頂級,添加所有子帳戶以及與帳戶註冊的電子郵件一起。請參閱deployment-instructions.md文件中的示例。

雲端架構師
修改參數. 配置。

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

  • 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 命令以克隆空存儲庫,將文件從筆記本電腦複製到存儲庫文件夾,然後將成品推送到存儲庫中。檢查包中deployment-instructions.md文件中的示例 Git 命令。如需基本 Git 命令,請參閱相關資源一節。

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

將成品推送至 CodeCommit 存放庫之後,請確認您在步驟 3 中建立的 CodePipeline 管道已啟動。然後檢查 CodeBuild 日誌以確認狀態或錯誤。

雲端架構師

相關資源

附件

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