CloudWatch Logs 보안 모범 사례
Amazon CloudWatch Logs를 안전하게 보호하는 것은 규정 준수를 유지하고, 민감한 데이터를 보호하며, 적절한 감사 추적을 보장하는 데 필수적입니다. 이 가이드는 로그 그룹에 대한 강력한 권한 제어 및 보안 정책을 구현하기 위한 포괄적인 모범 사례를 제공하며, 중요한 삭제 보호 기능도 포함합니다.
소개
Amazon CloudWatch Logs를 사용하면 시스템, 애플리케이션 및 AWS 서비스의 로그를 하나의 확장 성 높은 서비스로 중앙 집중화할 수 있습니다 (What is Amazon CloudWatch Logs?). 그러나 적절한 보안 제어가 없으면 로그 데이터는 자산이 아닌 취약점이 될 수 있습니다. 이 가이드에서는 최소 권한 액세스, 암호화, 리소스 기반 정책, 삭제 보호 및 포괄적인 감사를 구현하여 로그 그룹을 안전하고 규정을 준수하는 상태로 유지하는 방법에 중점을 둡니다.
이것이 중요한 이유
보안 측면의 영향
로그 데이터에는 사용자 활동, 시스템 구성, API 호출, 그리고 잠재적으로 개인 식별 정보(PII)를 포함한 민감한 정보가 자주 포함됩니다. 로그에 대한 무단 액세스는 인프라, 애플리케이션 동작 및 비즈니스 운영에 대한 중요한 보안 세부 정보를 노출할 수 있습니다. 또한 로그 그룹의 우발적 또는 악의적 삭제는 중요한 감사 추적의 손실과 규정 준수 위반을 초래할 수 있습니다.
규정 준수 요구 사항
많은 규제 프레임워크에서는 액세스 제 한, 저장 및 전송 중 암호화, 보존 정책, 삭제 보호 및 감사 추적을 포함한 로그 데이터에 대한 특정 제어를 요구합니다. 적절한 권한 관리와 삭제 보호는 이러한 요구 사항을 충족하는 데 기본이 됩니다.
운영 우수성
잘 구조화된 권한은 팀이 필요한 로그에 액세스하면서도 원치 않는 수정 및 삭제를 방지할 수 있게 합니다. 이러한 균형은 데이터 무결성을 유지하면서 보안과 운영 효율성을 모두 지원합니다.
보안 모범 사례
CloudWatch Logs 보안은 로그 데이터를 보호하기 위해 함께 작동하는 여러 계층의 액세스 제어, 삭제 보호 및 암호화 메커니즘을 통해 운영됩니다. 포괄적인 보안을 구현하려면 IAM 정책, 삭제 보호, 암호화, 리소스 정책 및 지속적인 모니터링을 결합하는 다계층 접근 방식이 필요합니다.
1. CloudWatch Logs 계층 구조 및 보안 경계
CloudWatch Logs 아키텍처를 이해하는 것은 효과적인 보안 제어를 구현하는 데 기본입니다. 적절한 로그 구성 및 계층 설계는 다른 모든 보안 조치의 기반을 형성합니다.
CloudWatch Logs는 보안 제어에 직접적인 영향을 미치는 2단계 계층 구조를 사용합니다 (Working with log groups and log streams):
- Log Groups: 보존 정책, 암호화 설정, 액세스 권한 및 삭제 보호를 정의하는 최상위 컨테이너입니다. 각 로그 그룹은 자체 IAM 정책과 KMS 암호화 키를 가진 보안 경계로 작동합니다
- Log Streams: 로그 그룹 내의 개별 로그 이벤트 시퀀스로, 일반적으로 단일 소스(EC2 인스턴스, Lambda 함수 또는 애플리케이션 프로세스)를 나타냅니다. Log Streams는 상위 로그 그룹의 보안 설정을 상속하지만, 세분화된 액세스 제어를 위해 IAM 정책에서 개별적으로 대상을 지정할 수 있습니다
보안 중심 로그 그룹 설계
보안 요구 사항 및 액세스 패턴에 맞게 로그 그룹 구조를 설계하십시오 (CloudWatch Logs permissions reference):
- 애플리케이션 분리: 특히 민감한 데이터를 처리할 때 서로 다른 애플리케이션에 대해 별도의 로그 그룹을 생성하여 세분화된 IAM 정책을 활성화하고 교차 애플리케이션 로그 액세스를 방지합니다
- 환경 격리: 프로덕션, 스테이징, 개발 환경에 별도의 로그 그룹을 사용하여 다 른 액세스 제어 및 보존 정책을 적용합니다
- 데이터 분류: 민감도 수준(공개, 내부, 기밀, 제한)별로 로그를 그룹화하여 적절한 암호화, 액세스 제어 및 보존 정책을 적용합니다
- 규정 준수 경계: 특별한 처리와 더 긴 보존 기간이 필요한 감사 로그, 보안 로그 및 규정 준수 관련 데이터에 대한 전용 로그 그룹을 생성합니다
Log Streams를 활용한 세분화된 액세스 제어
로그 그룹이 기본 보안 경계를 제공하는 반면, Log Streams는 세밀한 액세스 패턴을 가능하게 합니다 (Actions, resources, and condition keys for CloudWatch Logs):
- 인스턴스 수준 액세스: IAM 정책에서 Log Stream 이름을 사용하여 특정 EC2 인스턴스 또는 컨테이너의 로그에만 사용자 액세스를 부여합니다
- 시간 기반 액세스: 생성 시간 또는 명명 패턴을 기반으로 Log Streams에 대한 액세스를 제한하는 정책을 구현합니다
- 서비스별 Streams: 애플리케이션이 지정된 Log Streams에만 쓸 수 있도록 허용하면서 동일한 로그 그룹의 다른 스트림에 대한 액세스는 방지합니다
- 감사 추적 무결성: Log Stream의 불변성(생성된 후에는 로그 이벤트를 수정할 수 없음)을 감사 및 규정 준수 전략의 일부로 활용합니다
2. Identity-Based 정책 (IAM 정책)
-
IAM 정책을 사용하여 로그 그룹 및 Log Streams를 생성, 읽기, 관리할 수 있는 사용자를 제어합니다 (Using identity-based policies for CloudWatch Logs)
- 최소 권한 원칙 적용: 조직의 요구에 따라 특정 로그 그룹에 대한 액세스를 제한하는 고객 관리형 정책을 생성합니다
- 명시적 Resource ARN 사용: IAM 정책에서 와일드카드(*)를 사용하는 대신 항상 명시적인 로그 그룹 ARN을 지정합니다. 이는 권한 에스컬레이션을 방지하고 사용자가 의도된 로그 그룹에만 액세스할 수 있도록 합니다
- 관리 권한과 운영 권한 분리: 다양한 권한 수준에 대해 별도의 정책을 생성합니다. 예를 들어, 분석가에게는 읽기 전용 액세스, 애플리케이션에는 쓰기 권한, 인프라 팀에는 관리 권한을 부여합니다. 이를 하나의 과도하게 허용적인 정책으로 결합해서는 안 됩니다
- 삭제 작업에 대한 명시적 Deny: 중요한 로그 그룹의 경우, 삭제 보호를 넘어 추가적인 보호를 제공하기 위해 삭제 작업에 대한 명시적 거부 문을 구현합니다
-
CloudWatch에 로그를 기록하는 Lambda 함수의 경우, IAM 역할에 최소한의 필수 권한인
logs:CreateLogGroup,logs:CreateLogStream,logs:PutLogEvents가 포함되어 있는지 확인합니다 (Lambda execution role) -
로그 그룹을 수정하거나 삭제할 수 있는 권한이 있는 계정에 MFA를 구현합니다 (Overview of managing access permissions)
-
태그 기반 액세스 제어 구현: 로그 그룹의 리소스 태그와 IAM 조건 키(
aws:ResourceTag)를 결합하여 환경(프로덕션/개발), 팀 소유권 또는 데이터 분류 수준과 같은 속성을 기반으로 액세스를 동적으로 제어합니다 (Actions, resources, and condition keys for CloudWatch Logs)
3. 중요 로그 그룹에 대한 삭제 보호
삭제 보호는 Amazon CloudWatch Logs에서 도입된 중요한 보안 기능으로, 로그 그룹과 관련 Log Streams의 우발적 또는 악의적 삭제를 방지합니다. 활성화되면 삭제 보호는 명시적으로 비활성화될 때까지 모든 삭제 작업을 차단하여 중요한 운영 및 규정 준수 데이터를 보호하는 데 도움을 줍니다. 이 기능은 문제 해결, 분석 및 규제 요구 사항을 위해 보존해야 하는 감사 로그, 규정 준수 기록 및 프로덕션 애플리케이션 로그를 보존하는 데 특히 유용합니다. (Protecting log groups from deletion)
주요 특성:
- 예방적 제어: 삭제 시도가 발생하기 전에 이를 중지하는 예방적 보안 제어 역할을 합니다
- 명시적 비활성화 필요: 삭제 작업을 진행하려면 먼저 명시적으로 비활성화해야 합니다
- Log Streams에 적용: 로그 그룹과 그 안의 모든 Log Streams를 보호합니다
- 성능 영향 없음: 로그 수집, 쿼리 또는 기타 작업에 영향을 미치지 않습니다
- 감사 추적: 삭제 보호 상태의 모든 변경 사항은 CloudTrail에 기록됩니다
중요 사용 사례 - 삭제 보호를 활성화해야 하는 경우:
- 감사 로그: 모든 감사 로그는 규정 준수를 유지하고 감사 추적의 변조를 방지하기 위해 삭제 보호를 활성화해야 합니다
- 보안 로그: AWS CloudTrail, VPC Flow Logs 및 애플리케이션 보안 로그를 포함한 보안 관련 로그
- 규정 준수 로그: 규정 준수에 필요한 모든 로그
- 프로덕션 애플리케이션 로그: 문제 해결 및 인시던트 대응에 필요한 프로덕션 로그
- 장기 보존 로그: 1년을 초과하는 보존 요구 사항이 있는 모든 로그
구현 모범 사례:
- 중요 로그 그룹에 활성화: 모든 중요 로그에 대해 로그 그룹 생성 시 또는 기존 로그 그룹에 삭제 보호를 활성화합니다. 이것이 우발적 또는 악의적 삭제에 대한 첫 번째 방어선입니다
- 배포 자동화: AWS CloudFormation, AWS CDK 또는 Terraform과 같은 Infrastructure as Code(IaC) 도구를 사용하여 새 로그 그룹 생성 시 삭제 보호를 자동으로 활성화합니다. 이를 통해 환경 전체에서 일관된 보안 태세를 유지할 수 있습니다
- 절차 문서화: 삭제 보호를 비활성화해야 하는 시점과 방법에 대한 명확한 문서와 런북을 작성합니다. 승인 워크플로, 정당화 요구 사항, 재활성화 절차를 포함하여 보호가 절대적으로 필요한 경우에만 일시적으로 비활성화되도록 합니다
- 변경 사항 모니터링: CloudWatch 알람과 메트릭 필터를 생성하여 중요 로그 그룹에서 삭제 보호가 비활성화되는 것을 감지합니다. 이 경우 즉시 보안 팀에 알려 변경이 승인되었는지 조사합니다
- 심층 방어: 삭제 작업을 명시적으로 거부하는 IAM 정책과 함께 삭제 보호를 사용합니다. 이는 심층 방어를 제공합니다 - 삭제 보호가 비활성화되더라도 IAM 정책이 무단 삭제를 방지할 수 있습니다
여러 보호 계층 결합:
- 로그 그룹에 삭제 보호를 활성화합니다 (Protecting log groups from deletion)
logs:DeleteLogGroup및logs:PutLogGroupDeletionProtection에 대한 명시적 Deny 문이 있는 IAM 정책을 사용합니다 (CloudWatch Logs permissions reference)- 조직 수준에서 Service Control Policies(SCPs)를 적용합니다 (Service control policies)
- 중요 작업에 MFA 삭제 요구 사항을 활성화합니다 (AWS Re:Post: Restore or prevent deletion of logs or log groups in CloudWatch)
- AWS Config를 사용하여 삭제 보호 상태를 모니터링합니다 (AWS Config)
- 보호가 비활성화된 경우 자동 수정을 구현하여 보호를 다시 활성화합니다 (Remediating Noncompliant Resources with AWS Config)