기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Terraform을 사용하여 엔터프라이즈 규모로 중앙 집중식 로깅 설정
작성자: Aarti Rajput(AWS), Yashwant Patel(AWS), Nishtha Yadav(AWS)
요약
중앙 집중식 로깅은 조직의 운영, 보안 및 규정 준수에 대한 가시성을 제공하므로 조직의 클라우드 인프라에 매우 중요합니다. 조직이 여러 계정에서 AWS 환경을 확장함에 따라 구조화된 로그 관리 전략은 보안 운영을 실행하고 감사 요구 사항을 충족하며 운영 우수성을 달성하기 위한 기본이 됩니다.
이 패턴은 여러 AWS 계정 및 서비스의 로그를 중앙 집중화하여 복잡한 AWS 배포에서 엔터프라이즈 규모의 로깅 관리를 가능하게 하는 확장 가능하고 안전한 프레임워크를 제공합니다. 솔루션은 일관되고 반복 가능한 배포를 보장하고 수동 구성을 최소화하는 HashiCorp의 코드형 인프라(IaC) 도구인 Terraform을 사용하여 자동화됩니다. 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
모든 데이터는 AWS Key Management Service (AWS KMS)를 사용하여 암호화되며, 환경 간에 일관된 구성을 위해 Terraform을 사용하여 전체 인프라가 배포됩니다.
이러한 중앙 집중식 로깅 접근 방식을 통해 조직은 보안 태세를 개선하고, 규정 준수 요구 사항을 유지하고, AWS 인프라 전반의 운영 효율성을 최적화할 수 있습니다.
사전 조건 및 제한 사항
사전 조건
를 사용하여 구축된 조직의 랜딩 존 AWS Control Tower
인프라 프로비저닝을 위한 Terraform
교차 계정 액세스를 위한 AWS Identity and Access Management (IAM) 역할 및 정책
설정 AWS Control Tower, AFT 및 애플리케이션 계정 설정에 대한 지침은 에픽 섹션을 참조하세요.
필수 계정
의 조직은 다음 계정을 포함해야 AWS Organizations 합니다.
애플리케이션 계정 - AWS 서비스 (Amazon EKS, Lambda 및 Amazon RDS)가 실행되고 로그를 생성하는 하나 이상의 소스 계정
로그 아카이브 계정 - 중앙 집중식 로그 스토리지 및 관리를 위한 전용 계정
제품 버전
아키텍처
다음 다이어그램은 여러 애플리케이션 계정의 로그를 수집, 처리 및 전용 로그 아카이브 계정으로 저장하기 위한 확장 가능한 솔루션을 제공하는 AWS 중앙 집중식 로깅 아키텍처를 보여줍니다. 이 아키텍처는 Amazon RDS AWS 서비스, Amazon EKS 및 Lambda를 포함한의 로그를 효율적으로 처리하고 간소화된 프로세스를 통해 로그 아카이브 계정의 리전 S3 버킷으로 라우팅합니다.

워크플로에는 다음 5가지 프로세스가 포함됩니다.
로그 흐름 프로세스
로그 흐름 프로세스는 애플리케이션 계정에서 시작되며, 여기서는 일반, 오류, 감사, Amazon RDS의 느린 쿼리 로그, Amazon EKS의 컨트롤 플레인 로그, Lambda의 함수 실행 및 오류 로그와 같은 다양한 유형의 로그를 AWS 서비스 생성합니다.
CloudWatch는 초기 수집 지점 역할을 합니다. 각 애플리케이션 계정 내의 로그 그룹 수준에서 이러한 로그를 수집합니다.
CloudWatch에서 구독 필터는 중앙 계정으로 전달해야 하는 로그를 결정합니다. 이러한 필터를 사용하면 로그 전달을 세부적으로 제어할 수 있으므로 정확한 로그 패턴을 지정하거나 중앙 집중화를 위한 전체 로그 스트림을 지정할 수 있습니다.
교차 계정 로그 전송
로그는 로그 아카이브 계정으로 이동합니다. CloudWatch 구독 필터는 교차 계정 전송을 용이하게 하고 리전 컨텍스트를 보존합니다.
아키텍처는 다양한 로그 소스를 효율적으로 처리하여 최적의 성능과 확장성을 보장하기 위해 여러 병렬 스트림을 설정합니다.
로그 아카이브 계정의 로그 처리
로그 아카이브 계정에서 Firehose는 수신 로그 스트림을 처리합니다.
각 리전은 필요에 따라 로그를 변환, 변환 또는 보강할 수 있는 전용 Firehose 전송 스트림을 유지합니다.
이러한 Firehose 스트림은 처리된 로그를 소스 애플리케이션 계정과 동일한 리전(다이어그램의 리전 A)에 있는 로그 아카이브 계정의 S3 버킷으로 전송하여 데이터 주권 요구 사항을 유지합니다.
알림 및 추가 워크플로
로그가 대상 S3 버킷에 도달하면 아키텍처는 Amazon SQS를 사용하여 알림 시스템을 구현합니다.
리전 SQS 대기열은 비동기 처리를 활성화하고 저장된 로그를 기반으로 추가 워크플로, 분석 또는 알림 시스템을 트리거할 수 있습니다.
AWS KMS 보안을 위한
아키텍처는 보안 AWS KMS 용를 통합합니다.는 S3 버킷에 대한 암호화 키를 AWS KMS 제공합니다. 이렇게 하면 저장된 모든 로그가 데이터 레지던시 요구 사항을 충족하도록 암호화 리전을 유지하면서 저장 시 암호화를 유지할 수 있습니다.
도구
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 서비스 데 도움이 되도록 다른와 AWS KMS 통합합니다.
AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있는 서버리스 컴퓨팅 서비스입니다. 각 트리거에 대한 응답으로 코드를 실행하여 애플리케이션을 자동으로 확장하고 사용한 컴퓨팅 시간에 대해서만 요금을 청구합니다.
Amazon Relational Database Service(RDS)는 클라우드에서 관계형 데이터베이스를 쉽게 설정, 운영 및 확장할 수 있는 관리형 관계형 데이터베이스 서비스입니다. 시간 소모적인 관리 작업을 자동화하는 동시에 비용 효율적이고 크기 조정 가능한 용량을 제공합니다.
Amazon Simple Queue Service(Amazon SQS)는 마이크로서비스, 분산 시스템 및 서버리스 애플리케이션을 분리 및 확장할 수 있는 메시지 대기열 서비스입니다. 메시지 지향 미들웨어를 관리하고 운영하는 복잡성을 제거합니다.
Amazon Simple Storage Service(Amazon S3)는 확장성, 데이터 가용성, 보안 및 성능을 제공하는 클라우드 기반 객체 스토리지 서비스입니다. 웹의 모든 위치에서 원하는 양의 데이터를 저장하고 검색할 수 있습니다.
기타 도구
Terraform
은 HashiCorp의 코드형 인프라(IaC) 도구로, 클라우드 및 온프레미스 리소스를 생성하고 관리하는 데 도움이 됩니다.
코드
이 패턴의 코드는 GitHub 중앙 집중식 로깅
모범 사례
AWS 계정 의 단일 조직에서 여러를 AWS Organizations 사용합니다. 이 방법을 사용하면 계정 간에 중앙 집중식 관리 및 표준화된 로깅이 가능합니다.
버전 관리, 수명 주기 정책 및 리전 간 복제를 사용하여 S3 버킷을 구성합니다. 보안 및 규정 준수를 위해 암호화 및 액세스 로깅을 구현합니다.
표준 타임스탬프 및 필드와 함께 JSON 형식을 사용하여 일반적인 로깅 표준을 구현합니다. 일관된 접두사 구조와 상관관계 IDs 수 있습니다.
AWS KMS 암호화 및 최소 권한 액세스를 통해 보안 제어를 활성화합니다. 보안 강화를 위해 AWS CloudTrail 모니터링 및 정기적인 키 교체를 유지합니다.
전송 추적을 위한 CloudWatch 지표 및 알림을 설정합니다. 자동 알림을 통해 비용과 성능을 모니터링합니다.
규정 준수 요구 사항을 충족하도록 Amazon S3 보존 정책을 구성하고 Amazon S3 서버 액세스 로깅을 활성화하여 S3 버킷에 대한 모든 요청을 추적할 수 있습니다. S3 버킷 정책 및 수명 주기 규칙에 대한 설명서를 유지 관리합니다. 액세스 로그, 버킷 권한 및 스토리지 구성을 정기적으로 검토하여 규정 준수 및 보안 모범 사례를 보장합니다.
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
AFT를 사용하여 AWS Control Tower 환경을 설정합니다. |
| 관리자 |
조직에 대한 리소스 공유를 활성화합니다. |
| 관리자 |
애플리케이션 계정을 확인하거나 프로비저닝합니다. | 사용 사례에 맞게 새 애플리케이션 계정을 프로비저닝하려면 AFT를 통해 계정을 생성합니다. 자세한 내용은 AWS Control Tower 설명서의 AFT를 사용하여 새 계정 프로비저닝을 참조하세요. | 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
|
| DevOps 엔지니어 |
애플리케이션 계정 설정을 위한 입력 파라미터를 검토하고 편집합니다. | 이 단계에서는 CloudWatch 로그 그룹, CloudWatch CloudWatch 구독 필터, IAM 역할 및 정책, Amazon RDS, Amazon EKS 및 Lambda 함수에 대한 구성 세부 정보를 포함하여 애플리케이션 계정에서 리소스를 생성하기 위한 구성 파일을 설정합니다.
| DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
|
| DevOps 엔지니어 |
로그 아카이브 계정을 설정하기 위한 입력 파라미터를 검토하고 편집합니다. | 이 단계에서는 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 엔지니어 |
문제 해결
문제 | Solution |
---|---|
CloudWatch Logs 대상이 생성되지 않았거나 비활성 상태입니다. | 다음 사항을 검증합니다.
|
구독 필터가 실패했거나 보류 중 상태로 멈췄습니다. | 다음을 확인하세요.
|
Firehose 전송 스트림에는 수신 레코드가 표시되지 않습니다. | 다음을 확인합니다.
|
관련 리소스
Terraform 인프라 설정
(Terraform 설명서) AWS Control Tower Account Factory for Terraform(AFT) 배포(AWS Control Tower 문서)
IAM 자습서: IAM 역할을 AWS 계정 사용하여 간에 액세스 권한 위임(IAMdocumentation)