本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Terraform 在企業規模上設定集中式記錄
由 Aarti Rajput (AWS)、Yashwant Patel (AWS) 和 Nishtha Yadav (AWS) 建立
Summary
集中式記錄對於組織的雲端基礎設施至關重要,因為它提供對其操作、安全性和合規性的可見性。隨著您的組織將其 AWS 環境擴展到多個帳戶,結構化日誌管理策略成為執行安全操作、滿足稽核要求和實現卓越營運的基礎。
此模式提供可擴展且安全的架構,用於集中來自多個 AWS 帳戶 和 服務的日誌,以跨複雜 AWS 部署啟用企業規模的記錄管理。該解決方案使用 Terraform 自動化,Terraform 是一種來自 HashiCorp 的基礎設施即程式碼 (IaC) 工具,可確保一致且可重複的部署,並將手動組態降至最低。透過結合 Amazon CloudWatch Logs、Amazon Data Firehose 和 Amazon Simple Storage Service (Amazon S3),您可以實作強大的日誌彙總和分析管道,提供:
中整個組織的集中式日誌管理 AWS Organizations
使用內建安全控制自動收集日誌
可擴展的日誌處理和耐用的儲存
簡化的合規報告和稽核追蹤
即時營運洞察和監控
解決方案會透過 CloudWatch Logs 從 Amazon Elastic Kubernetes Service (Amazon EKS) 容器、 AWS Lambda 函數和 Amazon Relational Database Service (Amazon RDS) 資料庫執行個體收集日誌。它會使用 CloudWatch 訂閱篩選條件,將這些日誌自動轉送至專用記錄帳戶。Firehose 會管理 Amazon S3 的高輸送量日誌串流管道,以進行長期儲存。Amazon Simple Queue Service (Amazon SQS) 設定為在物件建立時接收 Amazon S3 事件通知。這可讓 與 分析服務整合,包括:
Amazon OpenSearch Service 用於日誌搜尋、視覺化和即時分析
適用於 SQL 型查詢的 Amazon Athena
適用於大規模處理的 Amazon EMR
用於自訂轉換的 Lambda
Amazon QuickSight for 儀表板
所有資料都是使用 AWS Key Management Service (AWS KMS) 加密,而整個基礎設施則是使用 Terraform 跨環境進行一致組態來部署。
這種集中式記錄方法可讓組織改善其安全狀態、維持合規要求,以及最佳化 AWS 基礎設施的操作效率。
先決條件和限制
先決條件
您組織使用 建置的登陸區域 AWS Control Tower
適用於 Terraform 的 Account Factory (AFT),使用必要的帳戶部署和設定
用於佈建基礎設施的 Terraform
跨帳戶存取的 AWS Identity and Access Management (IAM) 角色和政策
如需設定 AWS Control Tower、AFT 和應用程式帳戶的指示,請參閱 Epics 一節。
必要帳戶
您在 中的組織 AWS Organizations 應該包含這些帳戶:
應用程式帳戶 – 一或多個來源帳戶,其中 AWS 服務 (Amazon EKS、Lambda 和 Amazon RDS) 執行和產生日誌
Log Archive 帳戶 – 用於集中式日誌儲存和管理的專用帳戶
產品版本
架構
下圖說明一個 AWS 集中式日誌架構,提供可擴展的解決方案,用於收集、處理多個應用程式帳戶的日誌,並將其儲存到專用的日誌封存帳戶。此架構可有效率地處理來自 的日誌 AWS 服務,包括 Amazon RDS、Amazon EKS 和 Lambda,並透過簡化程序將它們路由到 Log Archive 帳戶中的區域 S3 儲存貯體。

工作流程包含五個程序:
日誌流程程序
日誌流程會在應用程式帳戶中開始,其中 AWS 服務 會產生各種類型的日誌,例如一般、錯誤、稽核、來自 Amazon RDS 的慢查詢日誌、來自 Amazon EKS 的控制平面日誌,以及來自 Lambda 的函數執行和錯誤日誌。
CloudWatch 做為初始收集點。它會在每個應用程式帳戶中的日誌群組層級收集這些日誌。
在 CloudWatch 中,訂閱篩選條件會決定哪些日誌應轉送至中央帳戶。這些篩選條件可讓您精細控制日誌轉送,因此您可以指定確切的日誌模式或完整的日誌串流以進行集中化。
跨帳戶日誌傳輸
日誌會移至 Log Archive 帳戶。CloudWatch 訂閱篩選條件有助於跨帳戶轉移並保留區域內容。
架構會建立多個平行串流,以有效率地處理不同的日誌來源,以確保最佳效能和可擴展性。
Log Archive 帳戶中的日誌處理
在 Log Archive 帳戶中,Firehose 會處理傳入的日誌串流。
每個區域都會維護專用的 Firehose 交付串流,可視需要轉換、轉換或擴充日誌。
這些 Firehose 串流會將處理過的日誌交付至 Log Archive 帳戶中的 S3 儲存貯體,該帳戶與來源應用程式帳戶 (圖表中的區域 A) 位於相同的區域,以維護資料主權需求。
通知和其他工作流程
當日誌到達其目的地 S3 儲存貯體時,架構會使用 Amazon SQS 實作通知系統。
區域 SQS 佇列可啟用非同步處理,並根據儲存的日誌觸發其他工作流程、分析或提醒系統。
AWS KMS 確保安全
架構包含 AWS KMS 用於 security. AWS KMS provides 加密金鑰的 S3 儲存貯體。這可確保所有儲存的日誌保持靜態加密,同時保持區域加密以滿足資料駐留要求。
工具
AWS 服務
Amazon CloudWatch 是一種監控和可觀測性服務,以日誌、指標和事件的形式收集監控和操作資料。它提供在 AWS 和內部部署伺服器上執行 AWS 的資源、應用程式和服務統一檢視。
CloudWatch Logs 訂閱篩選條件是符合傳入日誌事件中模式的表達式,並將相符的日誌事件交付給指定的 AWS 資源,以進行進一步的處理或分析。
AWS Control Tower Account Factory for Terraform (AFT) 會設定 Terraform 管道,協助您在其中佈建和自訂帳戶 AWS Control Tower。AFT 提供以 Terraform 為基礎的帳戶佈建,同時允許您使用 管理帳戶 AWS Control Tower。
Amazon Data Firehose 會將即時串流資料交付至目的地,例如 Amazon S3、Amazon Redshift 和 Amazon OpenSearch Service。它會自動擴展以符合資料的輸送量,而且不需要持續管理。
Amazon Elastic Kubernetes Service (Amazon EKS) 是一種受管容器協同運作服務,可讓您使用 Kubernetes 輕鬆部署、管理和擴展容器化應用程式。它會自動管理 Kubernetes 控制平面節點的可用性和可擴展性。
AWS Key Management Service (AWS KMS) 會建立和控制加密資料的加密金鑰。 與其他 AWS KMS 整合 AWS 服務 ,以協助您保護使用這些服務存放的資料。
AWS Lambda 是一種無伺服器運算服務,可讓您執行程式碼,而無需佈建或管理伺服器。它會自動透過執行程式碼來回應每個觸發條件來擴展您的應用程式,並且只會針對您使用的運算時間收費。
Amazon Relational Database Service (Amazon RDS) 是一種受管關聯式資料庫服務,可讓您輕鬆地在雲端中設定、操作和擴展關聯式資料庫。它提供經濟實惠且可擴展的容量,同時自動化耗時的管理任務。
Amazon Simple Queue Service (Amazon SQS) 是一種訊息佇列服務,可讓您解耦和擴展微服務、分散式系統和無伺服器應用程式。它消除了管理和操作訊息導向中介軟體的複雜性。
Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可提供可擴展性、資料可用性、安全性和效能。它可以從 Web 上的任何位置存放和擷取任意數量的資料。
其他工具
Terraform
是 HashiCorp 的基礎設施即程式碼 (IaC) 工具,可協助您建立和管理雲端和內部部署資源。
Code
此模式的程式碼可在 GitHub 集中式日誌
最佳實務
在AWS 帳戶 單一組織中使用多個 AWS Organizations 。此實務可啟用跨帳戶的集中式管理和標準化記錄。
使用版本控制、生命週期政策和跨區域複寫來設定 S3 儲存貯體。實作加密和存取記錄,以確保安全性和合規性。
使用 JSON 格式搭配標準時間戳記和欄位來實作常見的記錄標準。使用一致的字首結構和相互關聯 IDs以便於追蹤和分析。
啟用具有 AWS KMS 加密和最低權限存取的安全控制。維持 AWS CloudTrail 監控和定期金鑰輪換,以增強安全性。
設定 CloudWatch 指標和提醒以進行交付追蹤。透過自動通知監控成本和效能。
設定 Amazon S3 保留政策以符合合規要求,並啟用 Amazon S3 伺服器存取記錄,以追蹤對 S3 儲存貯體提出的所有請求。維護 S3 儲存貯體政策和生命週期規則的文件。定期審查存取日誌、儲存貯體許可和儲存組態,以協助確保合規性和安全性最佳實務。
史詩
任務 | 描述 | 所需的技能 |
---|---|---|
使用 AFT 設定 AWS Control Tower 環境。 |
| AWS 管理員 |
為組織啟用資源共用。 |
| AWS 管理員 |
驗證或佈建應用程式帳戶。 | 若要為您的使用案例佈建新的應用程式帳戶,請透過 AFT 建立它們。如需詳細資訊,請參閱 AWS Control Tower 文件中的使用 AFT 佈建新帳戶。 | AWS 管理員 |
任務 | 描述 | 所需的技能 |
---|---|---|
將 |
| DevOps 工程師 |
檢閱和編輯用於設定應用程式帳戶的輸入參數。 | 在此步驟中,您會設定組態檔案以在應用程式帳戶中建立資源,包括 CloudWatch 日誌群組、CloudWatch 訂閱篩選條件、IAM 角色和政策,以及 Amazon RDS、Amazon EKS 和 Lambda 函數的組態詳細資訊。 在儲存
| DevOps 工程師 |
任務 | 描述 | 所需的技能 |
---|---|---|
將 |
| DevOps 工程師 |
檢閱和編輯用於設定 Log Archive 帳戶的輸入參數。 | 在此步驟中,您會設定組態檔案以在 Log Archive 帳戶中建立資源,包括 Firehose 交付串流、S3 儲存貯體、SQS 佇列,以及 IAM 角色和政策。 在
| DevOps 工程師 |
任務 | 描述 | 所需的技能 |
---|---|---|
選項 1 - 從 AFT 部署 Terraform 組態檔案。 | 在 AFT 中,當您將具有組態變更的程式碼推送至 GitHub 對 Terraform (
注意如果您使用的是不同的分支 (例如 | DevOps 工程師 |
選項 2 - 手動部署 Terraform 組態檔案。 | 如果您未使用 AFT 或想要手動部署解決方案,您可以從
| DevOps 工程師 |
任務 | 描述 | 所需的技能 |
---|---|---|
驗證訂閱篩選條件。 | 若要驗證訂閱篩選條件是否正確地將日誌從應用程式帳戶日誌群組轉送至日誌封存帳戶:
| DevOps 工程師 |
驗證 Firehose 串流。 | 若要驗證日誌封存帳戶處理應用程式日誌中的 Firehose 串流是否成功:
| DevOps 工程師 |
驗證集中式 S3 儲存貯體。 | 若要驗證集中式 S3 儲存貯體是否正確接收和組織日誌:
| DevOps 工程師 |
驗證 SQS 佇列。 | 若要驗證 SQS 佇列是否收到新日誌檔案的通知:
| DevOps 工程師 |
任務 | 描述 | 所需的技能 |
---|---|---|
選項 1 - 從 AFT 停用 Terraform 組態檔案。 | 當您移除 Terraform 組態檔案並推送變更時,AFT 會自動啟動資源移除程序。
| DevOps 工程師 |
選項 2 – 手動清除 Terraform 資源。 | 如果您未使用 AFT 或想要手動清除資源,請使用
| DevOps 工程師 |
故障診斷
問題 | 解決方案 |
---|---|
CloudWatch Logs 目的地未建立或處於非作用中狀態。 | 驗證下列項目:
|
訂閱篩選條件失敗或停滯在待定狀態。 | 請檢查以下內容:
|
Firehose 交付串流不會顯示傳入記錄。 | 請確認下列內容:
|
相關資源
Terraform 基礎設施設定
(Terraform 文件) 部署適用於 Terraform (AFT) AWS Control Tower 的帳戶工廠 (AWS Control Tower 文件)
IAM 教學課程: AWS 帳戶 使用 IAM 角色將存取權委派給 (IAMdocumentation)